summaryrefslogtreecommitdiff
path: root/tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js')
-rw-r--r--tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js172
1 files changed, 172 insertions, 0 deletions
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js
new file mode 100644
index 00000000..c9653dab
--- /dev/null
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js
@@ -0,0 +1,172 @@
+( function ( mw, $ ) {
+
+ var NOW = 9012, // miliseconds
+ DEFAULT_DURATION = 5678, // seconds
+ expiryDate = new Date();
+
+ expiryDate.setTime( NOW + ( DEFAULT_DURATION * 1000 ) );
+
+ QUnit.module( 'mediawiki.cookie', QUnit.newMwEnvironment( {
+ setup: function () {
+ this.stub( $, 'cookie' ).returns( null );
+
+ this.sandbox.useFakeTimers( NOW );
+ },
+ config: {
+ wgCookiePrefix: 'mywiki',
+ wgCookieDomain: 'example.org',
+ wgCookiePath: '/path',
+ wgCookieExpiration: DEFAULT_DURATION
+ }
+ } ) );
+
+ QUnit.test( 'set( key, value )', 7, function ( assert ) {
+ var call;
+
+ // Simple case
+ mw.cookie.set( 'foo', 'bar' );
+
+ call = $.cookie.lastCall.args;
+ assert.strictEqual( call[ 0 ], 'mywikifoo' );
+ assert.strictEqual( call[ 1 ], 'bar' );
+ assert.deepEqual( call[ 2 ], {
+ expires: expiryDate,
+ domain: 'example.org',
+ path: '/path',
+ secure: false
+ } );
+
+ mw.cookie.set( 'foo', null );
+ call = $.cookie.lastCall.args;
+ assert.strictEqual( call[ 1 ], null, 'null removes cookie' );
+
+ mw.cookie.set( 'foo', undefined );
+ call = $.cookie.lastCall.args;
+ assert.strictEqual( call[ 1 ], 'undefined', 'undefined is value' );
+
+ mw.cookie.set( 'foo', false );
+ call = $.cookie.lastCall.args;
+ assert.strictEqual( call[ 1 ], 'false', 'false is a value' );
+
+ mw.cookie.set( 'foo', 0 );
+ call = $.cookie.lastCall.args;
+ assert.strictEqual( call[ 1 ], '0', '0 is value' );
+ } );
+
+ QUnit.test( 'set( key, value, expires )', 5, function ( assert ) {
+ var date, options;
+
+ date = new Date();
+ date.setTime( 1234 );
+
+ mw.cookie.set( 'foo', 'bar' );
+ options = $.cookie.lastCall.args[ 2 ];
+ assert.deepEqual( options.expires, expiryDate, 'Default cookie expiration is used' );
+
+ mw.cookie.set( 'foo', 'bar', date );
+ options = $.cookie.lastCall.args[ 2 ];
+ assert.strictEqual( options.expires, date, 'Custom expiration date' );
+
+ mw.cookie.set( 'foo', 'bar', null );
+ options = $.cookie.lastCall.args[ 2 ];
+ assert.strictEqual( options.expires, undefined, 'Expiry null forces session cookie' );
+
+ // Per DefaultSettings.php, when wgCookieExpiration is 0, the default should
+ // be session cookies
+ mw.config.set( 'wgCookieExpiration', 0 );
+
+ mw.cookie.set( 'foo', 'bar' );
+ options = $.cookie.lastCall.args[ 2 ];
+ assert.strictEqual( options.expires, undefined, 'wgCookieExpiration=0 results in session cookies by default' );
+
+ mw.cookie.set( 'foo', 'bar', date );
+ options = $.cookie.lastCall.args[ 2 ];
+ assert.strictEqual( options.expires, date, 'Custom expiration when default is session cookies' );
+ } );
+
+ QUnit.test( 'set( key, value, options )', 4, function ( assert ) {
+ var date, call;
+
+ mw.cookie.set( 'foo', 'bar', {
+ prefix: 'myPrefix',
+ domain: 'myDomain',
+ path: 'myPath',
+ secure: true
+ } );
+
+ call = $.cookie.lastCall.args;
+ assert.strictEqual( call[0], 'myPrefixfoo' );
+ assert.deepEqual( call[ 2 ], {
+ expires: expiryDate,
+ domain: 'myDomain',
+ path: 'myPath',
+ secure: true
+ }, 'Options (without expires)' );
+
+ date = new Date();
+ date.setTime( 1234 );
+
+ mw.cookie.set( 'foo', 'bar', {
+ expires: date,
+ prefix: 'myPrefix',
+ domain: 'myDomain',
+ path: 'myPath',
+ secure: true
+ } );
+
+ call = $.cookie.lastCall.args;
+ assert.strictEqual( call[0], 'myPrefixfoo' );
+ assert.deepEqual( call[ 2 ], {
+ expires: date,
+ domain: 'myDomain',
+ path: 'myPath',
+ secure: true
+ }, 'Options (incl. expires)' );
+ } );
+
+ QUnit.test( 'get( key ) - no values', 6, function ( assert ) {
+ var key, value;
+
+ mw.cookie.get( 'foo' );
+
+ key = $.cookie.lastCall.args[ 0 ];
+ assert.strictEqual( key, 'mywikifoo', 'Default prefix' );
+
+ mw.cookie.get( 'foo', undefined );
+ key = $.cookie.lastCall.args[ 0 ];
+ assert.strictEqual( key, 'mywikifoo', 'Use default prefix for undefined' );
+
+ mw.cookie.get( 'foo', null );
+ key = $.cookie.lastCall.args[ 0 ];
+ assert.strictEqual( key, 'mywikifoo', 'Use default prefix for null' );
+
+ mw.cookie.get( 'foo', '' );
+ key = $.cookie.lastCall.args[ 0 ];
+ assert.strictEqual( key, 'foo', 'Don\'t use default prefix for empty string' );
+
+ value = mw.cookie.get( 'foo' );
+ assert.strictEqual( value, null, 'Return null by default' );
+
+ value = mw.cookie.get( 'foo', null, 'bar' );
+ assert.strictEqual( value, 'bar', 'Custom default value' );
+ } );
+
+ QUnit.test( 'get( key ) - with value', 1, function ( assert ) {
+ var value;
+
+ $.cookie.returns( 'bar' );
+
+ value = mw.cookie.get( 'foo' );
+ assert.strictEqual( value, 'bar', 'Return value of cookie' );
+ } );
+
+ QUnit.test( 'get( key, prefix )', 1, function ( assert ) {
+ var key;
+
+ mw.cookie.get( 'foo', 'bar' );
+
+ key = $.cookie.lastCall.args[ 0 ];
+ assert.strictEqual( key, 'barfoo' );
+ } );
+
+} ( mediaWiki, jQuery ) );