3 var NOW
= 9012, // miliseconds
4 DEFAULT_DURATION
= 5678, // seconds
10 expires
: DEFAULT_DURATION
,
13 setDefaults
= require( 'mediawiki.cookie' ).setDefaults
,
14 expiryDate
= new Date();
16 expiryDate
.setTime( NOW
+ ( DEFAULT_DURATION
* 1000 ) );
18 QUnit
.module( 'mediawiki.cookie', {
19 beforeEach: function () {
20 jqcookie
= sinon
.stub( $, 'cookie' ).returns( null );
21 this.clock
= sinon
.useFakeTimers( NOW
);
22 this.savedDefaults
= setDefaults( defaults
);
24 afterEach: function () {
27 setDefaults( this.savedDefaults
);
31 QUnit
.test( 'set( key, value )', function ( assert
) {
35 mw
.cookie
.set( 'foo', 'bar' );
37 call
= jqcookie
.lastCall
.args
;
38 assert
.strictEqual( call
[ 0 ], 'mywikifoo' );
39 assert
.strictEqual( call
[ 1 ], 'bar' );
40 assert
.deepEqual( call
[ 2 ], {
42 domain
: 'example.org',
47 mw
.cookie
.set( 'foo', null );
48 call
= jqcookie
.lastCall
.args
;
49 assert
.strictEqual( call
[ 1 ], null, 'null removes cookie' );
51 mw
.cookie
.set( 'foo', undefined );
52 call
= jqcookie
.lastCall
.args
;
53 assert
.strictEqual( call
[ 1 ], 'undefined', 'undefined is value' );
55 mw
.cookie
.set( 'foo', false );
56 call
= jqcookie
.lastCall
.args
;
57 assert
.strictEqual( call
[ 1 ], 'false', 'false is a value' );
59 mw
.cookie
.set( 'foo', 0 );
60 call
= jqcookie
.lastCall
.args
;
61 assert
.strictEqual( call
[ 1 ], '0', '0 is value' );
64 QUnit
.test( 'set( key, value, expires )', function ( assert
) {
70 mw
.cookie
.set( 'foo', 'bar' );
71 options
= jqcookie
.lastCall
.args
[ 2 ];
72 assert
.deepEqual( options
.expires
, expiryDate
, 'default expiration' );
74 mw
.cookie
.set( 'foo', 'bar', date
);
75 options
= jqcookie
.lastCall
.args
[ 2 ];
76 assert
.strictEqual( options
.expires
, date
, 'custom expiration as Date' );
79 date
.setDate( date
.getDate() + 1 );
81 mw
.cookie
.set( 'foo', 'bar', 86400 );
82 options
= jqcookie
.lastCall
.args
[ 2 ];
83 assert
.deepEqual( options
.expires
, date
, 'custom expiration as lifetime in seconds' );
85 mw
.cookie
.set( 'foo', 'bar', null );
86 options
= jqcookie
.lastCall
.args
[ 2 ];
87 assert
.strictEqual( options
.expires
, undefined, 'null forces session cookie' );
89 // Per DefaultSettings.php, if wgCookieExpiration is 0,
90 // then the default should be session cookies
91 setDefaults( $.extend( {}, defaults
, { expires
: 0 } ) );
93 mw
.cookie
.set( 'foo', 'bar' );
94 options
= jqcookie
.lastCall
.args
[ 2 ];
95 assert
.strictEqual( options
.expires
, undefined, 'wgCookieExpiration=0 results in session cookies by default' );
97 mw
.cookie
.set( 'foo', 'bar', date
);
98 options
= jqcookie
.lastCall
.args
[ 2 ];
99 assert
.strictEqual( options
.expires
, date
, 'custom expiration (with wgCookieExpiration=0)' );
102 QUnit
.test( 'set( key, value, options )', function ( assert
) {
105 mw
.cookie
.set( 'foo', 'bar', {
112 call
= jqcookie
.lastCall
.args
;
113 assert
.strictEqual( call
[ 0 ], 'myPrefixfoo' );
114 assert
.deepEqual( call
[ 2 ], {
119 }, 'Options (without expires)' );
122 date
.setTime( 1234 );
124 mw
.cookie
.set( 'foo', 'bar', {
132 call
= jqcookie
.lastCall
.args
;
133 assert
.strictEqual( call
[ 0 ], 'myPrefixfoo' );
134 assert
.deepEqual( call
[ 2 ], {
139 }, 'Options (incl. expires)' );
142 QUnit
.test( 'get( key ) - no values', function ( assert
) {
145 mw
.cookie
.get( 'foo' );
147 key
= jqcookie
.lastCall
.args
[ 0 ];
148 assert
.strictEqual( key
, 'mywikifoo', 'Default prefix' );
150 mw
.cookie
.get( 'foo', undefined );
151 key
= jqcookie
.lastCall
.args
[ 0 ];
152 assert
.strictEqual( key
, 'mywikifoo', 'Use default prefix for undefined' );
154 mw
.cookie
.get( 'foo', null );
155 key
= jqcookie
.lastCall
.args
[ 0 ];
156 assert
.strictEqual( key
, 'mywikifoo', 'Use default prefix for null' );
158 mw
.cookie
.get( 'foo', '' );
159 key
= jqcookie
.lastCall
.args
[ 0 ];
160 assert
.strictEqual( key
, 'foo', 'Don\'t use default prefix for empty string' );
162 value
= mw
.cookie
.get( 'foo' );
163 assert
.strictEqual( value
, null, 'Return null by default' );
165 value
= mw
.cookie
.get( 'foo', null, 'bar' );
166 assert
.strictEqual( value
, 'bar', 'Custom default value' );
169 QUnit
.test( 'get( key ) - with value', function ( assert
) {
172 jqcookie
.returns( 'bar' );
174 value
= mw
.cookie
.get( 'foo' );
175 assert
.strictEqual( value
, 'bar', 'Return value of cookie' );
178 QUnit
.test( 'get( key, prefix )', function ( assert
) {
181 mw
.cookie
.get( 'foo', 'bar' );
183 key
= jqcookie
.lastCall
.args
[ 0 ];
184 assert
.strictEqual( key
, 'barfoo' );