Skip to content

Commit c950949

Browse files
Initial integration spec draft
1 parent 5266429 commit c950949

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

CONTRIBUTING.md

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
##Issues
1+
## Issues
22

33
- Report issues or feature requests on [GitHub Issues](https://github.com/js-cookie/js-cookie/issues).
44
- If reporting a bug, please add a [simplified example](http://sscce.org/).
55

6-
##Pull requests
6+
## Pull requests
77
- Create a new topic branch for every separate change you make.
88
- Create a test case if you are fixing a bug or implementing an important feature.
99
- Make sure the build runs successfully.
1010

1111
## Development
1212

13-
###Tools
13+
### Tools
1414
We use the following tools for development:
1515

1616
- [Qunit](http://qunitjs.com/) for tests.
1717
- [NodeJS](http://nodejs.org/download/) required to run grunt.
1818
- [Grunt](http://gruntjs.com/getting-started) for task management.
1919

20-
###Getting started
20+
### Getting started
2121
Install [NodeJS](http://nodejs.org/).
2222
Install globally grunt-cli using the following command:
2323

@@ -35,7 +35,7 @@ You should see a green message in the console:
3535

3636
Done, without errors.
3737

38-
###Tests
38+
### Tests
3939
You can also run the tests in the browser.
4040
Start a test server from the project root:
4141

@@ -45,7 +45,29 @@ This will automatically open the test suite at http://127.0.0.1:10000 in the def
4545

4646
_Note: we recommend cleaning all the browser cookies before running the tests, that can avoid false positive failures._
4747

48-
###Automatic build
48+
### Automatic build
4949
You can build automatically after a file change using the following command:
5050

5151
$ grunt watch
52+
53+
## Integration with server-side
54+
55+
js-cookie allows integrating the encoding test suite with solutions written in other server-side languages. To integrate successfully, the server-side solution need to execute the `test/encoding.html` file in it's integration testing routine with a web automation tool, like [Selenium](http://www.seleniumhq.org/). js-cookie test suite exposes an API to make this happen.
56+
57+
### ?integration_baseurl
58+
59+
Specify the base url to pass the cookies into the server through a query string. If `integration_baseurl` query is not present, then js-cookie will assume there's no server.
60+
61+
### window.global_test_results
62+
63+
After the test suite has finished, js-cookie exposes the global `window.global_test_results` property containing an Object Literal that represents the [QUnit's details](http://api.qunitjs.com/QUnit.done/). js-cookie also adds an additional property representing an Array containing the tests data.
64+
65+
### Handling requests
66+
67+
When js-cookie encoding tests are executed, it will request a url in the server through an iframe representing each test being run. js-cookie expects the server to handle the input and return the proper `Set-Cookie` headers in the response. js-cookie will then read the response and verify if the encoding is consistent with js-cookie default encoding mechanism
68+
69+
js-cookie will send some requests to the server from the baseurl in the format `/encoding/<cookie>`, where `<cookie>` represents the cookie-name to be read from the request.
70+
71+
The server should handle those requests, internally parsing the cookie and writing it again. It must set an `application/json` content type containing an object literal in the content body with `name` and `value` keys, each representing the cookie-name and the cookie-value respectively.
72+
73+
If the server fails to respond with this specification in any request, the related QUnit test will fail. This is to make sure the server-side implementation will always be in sync with js-cookie encoding tests for maximum compatibility.

0 commit comments

Comments
 (0)