FOSSASIA bring’s people together to share, create, develop and make things with Open Technologies and software. We organize science hack labs, Open Tech events, meetups and coding programs with developers, designers and contributors.
Checkout the FOSSASIA Idea’s page for more information.
(ˢᵒᶜⁱᵉᵗʸserver) aims to be a platform for developing collaborative applications.
sTeam server project repository: sTeam.
sTeam-REST API repository: sTeam-REST
sTeam API Endpoint Testing using Frisby
sTeam API endpoint testing is done using Frisby. Frisby is a REST API testing framework built on node.js and Jasmine that makes testing API endpoints very easy, speedy and joyous.
Issue. | Github Issue | Github PR |
---|---|---|
sTeam-REST Frisby Test for login | Issue-38 | PR-40 |
sTeam-REST Frisby Tests | Issue-41 | PR-42 |
Write Tests
Frisby tests start with frisby.create with a description of the test followed by one of get, post, put, delete, or head, and ending with toss to generate the resulting jasmine spec test. Frisby has many built-in test helpers like expectStatus to easily test HTTP status codes, expectJSON to test expected JSON keys/values, and expectJSONTypes to test JSON value types, among many others.
// Registration Tests frisby.create('Testing Registration API calls') .post('http://steam.realss.com/scripts/rest.pike?request=register', { email: "ajinkya007.in@gmail.com", fullname: "Ajinkya Wavare", group: "realss", password: "ajinkya", userid: "aj007" }, {json: true}) .expectStatus(200) .expectJSON({ "request-method": "POST", "request": "register", "me": restTest.testMe, "__version": testRegistrationVersion, "__date": testRegistrationDate }) .toss();
The testMe, testRegistrationVersion and testRegistrationDate are the functions written in the rest_spec.js.
The frisby API endpoint tests have been written for testing the user login, accessing the user home directory, user workarea, user container, user document, user created image, groups and subgroups.
The REST API url’s used for testing are described below. A payload consists of the user id and password.
Check if the user can login.
http://steam.realss.com/scripts/rest.pike?request=aj007
Test whether a user workarea exists or not. Here aj workarea has been created by the user.
http://steam.realss.com/scripts/rest.pike?request=aj007/aj
Test whether a user created container exists or not.
http://steam.realss.com/scripts/rest.pike?request=aj007/container
Test whether a user created document exists or not.
http://steam.realss.com/scripts/rest.pike?request=aj007/abc.pike
Test whether a user created image(object of any mime-type) inside a container exists or not.
http://steam.realss.com/scripts/rest.pike?request=aj007/container/Image.jpeg
Test whether a user created document exists or not. The group name and the subgroups can be queried.
eg. GroupName: groups, Subgroup: test.
The subgroup should be appended using “.” to the groupname.
http://steam.realss.com/scripts/rest.pike?request=groups.test
Here “groups” is a Groupname and “gsoc” is a subgroup of it.
http://ngtg.techgrind.asia/scripts/rest.pike?request=groups.gsoc
Unit Testing the sTeam REST API
The unit testing of the sTeam REST API is done using the karma and the jasmine test runner. The karma and the jasmine test runner are set up in the project repository.
The karma test runner : The main goal for Karma is to bring a productive testing environment to developers. The environment being one where they don’t have to set up loads of configurations, but rather a place where developers can just write the code and get instant feedback from their tests. Because getting quick feedback is what makes you productive and creative.
The jasmine test runner: Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.
The karma and jasmine test runner were configured for the project and basic tests were ran. The angular js and angular mocks version in the local development repository was different. This had resulted into a new error been incorporated into the project repo.
Angular Unit-Testing: TypeError ‘angular.element.cleanData is not a function’
When angular and angular-mocks are not of the same version, these error occurs while running the tests. If the versions of the two javascript libraries don’t match your tests will be testing to you.
The jasmine test runner can be accessed from the browser. The karma tests can be performed from the command line.
Feel free to explore the repository. Suggestions for improvements are welcomed.
Checkout the FOSSASIA Idea’s page for more information on projects supported by FOSSASIA.