Merge "Add tests for WikiMap and WikiReference"
[lhc/web/wiklou.git] / tests / qunit / suites / resources / mediawiki / mediawiki.cookie.test.js
1 ( function ( mw, $ ) {
2
3 var NOW = 9012, // miliseconds
4 DEFAULT_DURATION = 5678, // seconds
5 expiryDate = new Date();
6
7 expiryDate.setTime( NOW + ( DEFAULT_DURATION * 1000 ) );
8
9 QUnit.module( 'mediawiki.cookie', QUnit.newMwEnvironment( {
10 setup: function () {
11 this.stub( $, 'cookie' ).returns( null );
12
13 this.sandbox.useFakeTimers( NOW );
14 },
15 config: {
16 wgCookiePrefix: 'mywiki',
17 wgCookieDomain: 'example.org',
18 wgCookiePath: '/path',
19 wgCookieExpiration: DEFAULT_DURATION
20 }
21 } ) );
22
23 QUnit.test( 'set( key, value )', 7, function ( assert ) {
24 var call;
25
26 // Simple case
27 mw.cookie.set( 'foo', 'bar' );
28
29 call = $.cookie.lastCall.args;
30 assert.strictEqual( call[ 0 ], 'mywikifoo' );
31 assert.strictEqual( call[ 1 ], 'bar' );
32 assert.deepEqual( call[ 2 ], {
33 expires: expiryDate,
34 domain: 'example.org',
35 path: '/path',
36 secure: false
37 } );
38
39 mw.cookie.set( 'foo', null );
40 call = $.cookie.lastCall.args;
41 assert.strictEqual( call[ 1 ], null, 'null removes cookie' );
42
43 mw.cookie.set( 'foo', undefined );
44 call = $.cookie.lastCall.args;
45 assert.strictEqual( call[ 1 ], 'undefined', 'undefined is value' );
46
47 mw.cookie.set( 'foo', false );
48 call = $.cookie.lastCall.args;
49 assert.strictEqual( call[ 1 ], 'false', 'false is a value' );
50
51 mw.cookie.set( 'foo', 0 );
52 call = $.cookie.lastCall.args;
53 assert.strictEqual( call[ 1 ], '0', '0 is value' );
54 } );
55
56 QUnit.test( 'set( key, value, expires )', 6, function ( assert ) {
57 var date, options;
58
59 date = new Date();
60 date.setTime( 1234 );
61
62 mw.cookie.set( 'foo', 'bar' );
63 options = $.cookie.lastCall.args[ 2 ];
64 assert.deepEqual( options.expires, expiryDate, 'default expiration' );
65
66 mw.cookie.set( 'foo', 'bar', date );
67 options = $.cookie.lastCall.args[ 2 ];
68 assert.strictEqual( options.expires, date, 'custom expiration as Date' );
69
70 date = new Date();
71 date.setDate( date.getDate() + 1 );
72
73 mw.cookie.set( 'foo', 'bar', 86400 );
74 options = $.cookie.lastCall.args[ 2 ];
75 assert.deepEqual( options.expires, date, 'custom expiration as lifetime in seconds' );
76
77 mw.cookie.set( 'foo', 'bar', null );
78 options = $.cookie.lastCall.args[ 2 ];
79 assert.strictEqual( options.expires, undefined, 'null forces session cookie' );
80
81 // Per DefaultSettings.php, when wgCookieExpiration is 0, the default should
82 // be session cookies
83 mw.config.set( 'wgCookieExpiration', 0 );
84
85 mw.cookie.set( 'foo', 'bar' );
86 options = $.cookie.lastCall.args[ 2 ];
87 assert.strictEqual( options.expires, undefined, 'wgCookieExpiration=0 results in session cookies by default' );
88
89 mw.cookie.set( 'foo', 'bar', date );
90 options = $.cookie.lastCall.args[ 2 ];
91 assert.strictEqual( options.expires, date, 'custom expiration (with wgCookieExpiration=0)' );
92 } );
93
94 QUnit.test( 'set( key, value, options )', 4, function ( assert ) {
95 var date, call;
96
97 mw.cookie.set( 'foo', 'bar', {
98 prefix: 'myPrefix',
99 domain: 'myDomain',
100 path: 'myPath',
101 secure: true
102 } );
103
104 call = $.cookie.lastCall.args;
105 assert.strictEqual( call[ 0 ], 'myPrefixfoo' );
106 assert.deepEqual( call[ 2 ], {
107 expires: expiryDate,
108 domain: 'myDomain',
109 path: 'myPath',
110 secure: true
111 }, 'Options (without expires)' );
112
113 date = new Date();
114 date.setTime( 1234 );
115
116 mw.cookie.set( 'foo', 'bar', {
117 expires: date,
118 prefix: 'myPrefix',
119 domain: 'myDomain',
120 path: 'myPath',
121 secure: true
122 } );
123
124 call = $.cookie.lastCall.args;
125 assert.strictEqual( call[ 0 ], 'myPrefixfoo' );
126 assert.deepEqual( call[ 2 ], {
127 expires: date,
128 domain: 'myDomain',
129 path: 'myPath',
130 secure: true
131 }, 'Options (incl. expires)' );
132 } );
133
134 QUnit.test( 'get( key ) - no values', 6, function ( assert ) {
135 var key, value;
136
137 mw.cookie.get( 'foo' );
138
139 key = $.cookie.lastCall.args[ 0 ];
140 assert.strictEqual( key, 'mywikifoo', 'Default prefix' );
141
142 mw.cookie.get( 'foo', undefined );
143 key = $.cookie.lastCall.args[ 0 ];
144 assert.strictEqual( key, 'mywikifoo', 'Use default prefix for undefined' );
145
146 mw.cookie.get( 'foo', null );
147 key = $.cookie.lastCall.args[ 0 ];
148 assert.strictEqual( key, 'mywikifoo', 'Use default prefix for null' );
149
150 mw.cookie.get( 'foo', '' );
151 key = $.cookie.lastCall.args[ 0 ];
152 assert.strictEqual( key, 'foo', 'Don\'t use default prefix for empty string' );
153
154 value = mw.cookie.get( 'foo' );
155 assert.strictEqual( value, null, 'Return null by default' );
156
157 value = mw.cookie.get( 'foo', null, 'bar' );
158 assert.strictEqual( value, 'bar', 'Custom default value' );
159 } );
160
161 QUnit.test( 'get( key ) - with value', 1, function ( assert ) {
162 var value;
163
164 $.cookie.returns( 'bar' );
165
166 value = mw.cookie.get( 'foo' );
167 assert.strictEqual( value, 'bar', 'Return value of cookie' );
168 } );
169
170 QUnit.test( 'get( key, prefix )', 1, function ( assert ) {
171 var key;
172
173 mw.cookie.get( 'foo', 'bar' );
174
175 key = $.cookie.lastCall.args[ 0 ];
176 assert.strictEqual( key, 'barfoo' );
177 } );
178
179 }( mediaWiki, jQuery ) );