Changeset View
Changeset View
Standalone View
Standalone View
externals/javelin/src/lib/__tests__/Cookie.js
- This file was added.
| /** | |||||
| * @requires javelin-cookie | |||||
| */ | |||||
| /* | |||||
| * These all are hope-and-pray tests because cookies have such a piss poor | |||||
| * API in HTTP and offer so little insight from JS. This is just a | |||||
| * supplement to the battle testing the cookie library has. | |||||
| */ | |||||
| describe('Javelin Cookie', function() { | |||||
| it('should create a cookie string with the correct format', function() { | |||||
| var doc = { cookie : null }; | |||||
| var c = new JX.Cookie('omnom'); | |||||
| c.setValue('nommy'); | |||||
| c.setDaysToLive(5); | |||||
| c.setTarget(doc); | |||||
| c.setPath('/'); | |||||
| c.setSecure(true); | |||||
| c.write(); | |||||
| // Should be something like: | |||||
| // omnom=nommy; path=/; expires=Sat, 10 Dec 2011 05:00:34 GMT; Secure; | |||||
| expect(doc.cookie).toMatch( | |||||
| /^omnom=nommy;\sPath=\/;\sExpires=[^;]+;\sSecure;/); | |||||
| }); | |||||
| it('should properly encode and decode special chars in cookie values', | |||||
| function() { | |||||
| var value = '!@#$%^&*()?+|/=\\{}[]<>'; | |||||
| var doc = { cookie : null }; | |||||
| var c = new JX.Cookie('data'); | |||||
| c.setTarget(doc); | |||||
| c.setValue(value); | |||||
| c.write(); | |||||
| var data = doc.cookie.substr(0, doc.cookie.indexOf(';')); | |||||
| // Make sure the raw value is all escaped | |||||
| expect(data).toEqual( | |||||
| 'data=!%40%23%24%25%5E%26*()%3F%2B%7C%2F%3D%5C%7B%7D%5B%5D%3C%3E'); | |||||
| // Make sure the retrieved value is all unescaped | |||||
| expect(c.read()).toEqual(value); | |||||
| }); | |||||
| }); | |||||