}
function sequenceBodies( status, headers, bodies ) {
- jQuery.each( bodies, function ( i, body ) {
+ bodies.forEach( function ( body, i ) {
bodies[ i ] = [ status, headers, body ];
} );
return sequence( bodies );
api.get( { action: 'doesntexist' } )
.fail( function ( errorCode ) {
- assert.equal( errorCode, 'unknown_action', 'API error should reject the deferred' );
+ assert.strictEqual( errorCode, 'unknown_action', 'API error should reject the deferred' );
} )
.always( assert.async() );
} );
api.get( { action: 'doesntexist' } )
.fail( function ( errorCode ) {
- assert.equal( errorCode, 'unknown_action', 'API error should reject the deferred' );
+ assert.strictEqual( errorCode, 'unknown_action', 'API error should reject the deferred' );
} )
.always( assert.async() );
} );
this.server.respond( function ( request ) {
if ( window.FormData ) {
- assert.ok( !request.url.match( /action=/ ), 'Request has no query string' );
+ assert.notOk( request.url.match( /action=/ ), 'Request has no query string' );
assert.ok( request.requestBody instanceof FormData, 'Request uses FormData body' );
} else {
- assert.ok( !request.url.match( /action=test/ ), 'Request has no query string' );
- assert.equal( request.requestBody, 'action=test&format=json', 'Request uses query string body' );
+ assert.notOk( request.url.match( /action=test/ ), 'Request has no query string' );
+ assert.strictEqual( request.requestBody, 'action=test&format=json', 'Request uses query string body' );
}
request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
} );
var api = new mw.Api();
this.server.respond( function ( request ) {
- assert.equal( match( request.url, /test=([^&]+)/ ), 'foo%7Cbar%7Cbaz', 'Pipe-separated value was submitted' );
+ assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'foo%7Cbar%7Cbaz', 'Pipe-separated value was submitted' );
request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
} );
var api = new mw.Api();
this.server.respond( function ( request ) {
- assert.equal( match( request.url, /test=([^&]+)/ ), 'Foo%7CBar', 'Pipe-separated value was submitted' );
+ assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'Foo%7CBar', 'Pipe-separated value was submitted' );
request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
} );
var api = new mw.Api();
this.server.respond( function ( request ) {
- assert.equal( match( request.url, /test=([^&]+)/ ), 'true%7Cfalse%7C%7C%7C0%7C1%2E2', 'Pipe-separated value was submitted' );
+ assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'true%7Cfalse%7C%7C%7C0%7C1%2E2', 'Pipe-separated value was submitted' );
request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
} );
var api = new mw.Api();
this.server.respond( function ( request ) {
- assert.ok( !request.url.match( /foo/ ), 'foo query parameter is not present' );
+ assert.notOk( request.url.match( /foo/ ), 'foo query parameter is not present' );
assert.ok( request.url.match( /bar=true/ ), 'bar query parameter is present with value true' );
request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
} );
.then( function ( token ) {
assert.ok( token.length, 'Got a token' );
}, function ( err ) {
- assert.equal( '', err, 'API error' );
+ assert.strictEqual( err, '', 'API error' );
} )
.then( function () {
- assert.equal( test.server.requests.length, 0, 'Requests made' );
+ assert.strictEqual( test.server.requests.length, 0, 'Requests made' );
} );
} );
// be added to user.tokens, use a fake one instead.
api.getToken( 'testuncached' )
.done( function ( token ) {
- assert.equal( token, 'good', 'The token' );
+ assert.strictEqual( token, 'good', 'The token' );
} )
.fail( function ( err ) {
- assert.equal( err, '', 'API error' );
+ assert.strictEqual( err, '', 'API error' );
} )
.always( firstDone );
api.getToken( 'testuncached' )
.done( function ( token ) {
- assert.equal( token, 'good', 'The cached token' );
+ assert.strictEqual( token, 'good', 'The cached token' );
} )
.fail( function ( err ) {
- assert.equal( err, '', 'API error' );
+ assert.strictEqual( err, '', 'API error' );
} )
.always( secondDone );
- assert.equal( this.server.requests.length, 1, 'Requests made' );
+ assert.strictEqual( this.server.requests.length, 1, 'Requests made' );
} );
QUnit.test( 'getToken() - error', function ( assert ) {
// Don't cache error (T67268)
return api.getToken( 'testerror' )
- .then( null, function ( err ) {
- assert.equal( err, 'bite-me', 'Expected error' );
+ .catch( function ( err ) {
+ assert.strictEqual( err, 'bite-me', 'Expected error' );
return api.getToken( 'testerror' );
} )
.then( function ( token ) {
- assert.equal( token, 'good', 'The token' );
+ assert.strictEqual( token, 'good', 'The token' );
+ } );
+ } );
+
+ QUnit.test( 'getToken() - no query', function ( assert ) {
+ var api = new mw.Api(),
+ // Same-origin warning and missing query in response.
+ serverRsp = {
+ warnings: {
+ tokens: {
+ '*': 'Tokens may not be obtained when the same-origin policy is not applied.'
+ }
+ }
+ };
+
+ this.server.respondWith( /type=testnoquery/, [ 200, { 'Content-Type': 'application/json' },
+ JSON.stringify( serverRsp )
+ ] );
+
+ return api.getToken( 'testnoquery' )
+ .then( function () { assert.fail( 'Expected response missing a query to be rejected' ); } )
+ .catch( function ( err, rsp ) {
+ assert.strictEqual( err, 'query-missing', 'Expected no query error code' );
+ assert.deepEqual( rsp, serverRsp );
} );
} );
// Get a token of a type that is in the legacy map.
return api.getToken( 'email' )
.done( function ( token ) {
- assert.equal( token, 'csrfgood', 'Token' );
+ assert.strictEqual( token, 'csrfgood', 'Token' );
} )
.fail( function ( err ) {
- assert.equal( err, '', 'API error' );
+ assert.strictEqual( err, '', 'API error' );
} )
.always( function () {
- assert.equal( test.server.requests.length, 1, 'Requests made' );
+ assert.strictEqual( test.server.requests.length, 1, 'Requests made' );
} );
} );
return api.getToken( 'testbad' );
} )
.then( function ( token ) {
- assert.equal( token, 'good', 'The token' );
- assert.equal( test.server.requests.length, 2, 'Requests made' );
+ assert.strictEqual( token, 'good', 'The token' );
+ assert.strictEqual( test.server.requests.length, 2, 'Requests made' );
} );
} );
return api.getToken( 'options' );
} )
.then( function ( token ) {
- assert.equal( token, 'goodlegacy', 'The token' );
- assert.equal( test.server.requests.length, 2, 'Request made' );
+ assert.strictEqual( token, 'goodlegacy', 'The token' );
+ assert.strictEqual( test.server.requests.length, 2, 'Request made' );
} );
} );
.then( function () {
return $.Deferred().reject( 'Unexpected success' );
}, function ( errorCode ) {
- assert.equal( errorCode, 'assertuserfailed', 'getToken fails assert' );
+ assert.strictEqual( errorCode, 'assertuserfailed', 'getToken fails assert' );
return $.Deferred().resolve();
} )
.then( function () {
- assert.equal( test.server.requests.length, 1, 'Requests made' );
+ assert.strictEqual( test.server.requests.length, 1, 'Requests made' );
} );
} );
'X-Foo': 'Bar'
}
}
- )
- .then( function () {
- assert.equal( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' );
+ ).then( function () {
+ assert.strictEqual( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' );
return api.postWithToken( 'csrf',
{ action: 'example' },
assert.ok( false, 'This parameter cannot be a callback' );
}
);
- } )
- .then( function ( data ) {
- assert.equal( data.example, 'quux' );
+ } ).then( function ( data ) {
+ assert.strictEqual( data.example, 'quux' );
- assert.equal( test.server.requests.length, 2, 'Request made' );
+ assert.strictEqual( test.server.requests.length, 2, 'Request made' );
} );
} );
} );
QUnit.module( 'mediawiki.api (2)', {
- setup: function () {
+ beforeEach: function () {
var self = this,
requests = this.requests = [];
this.api = new mw.Api();
b: 2
} );
this.api.abort();
- assert.ok( this.requests.length === 2, 'Check both requests triggered' );
- $.each( this.requests, function ( i, request ) {
+ assert.strictEqual( this.requests.length, 2, 'Check both requests triggered' );
+ this.requests.forEach( function ( request, i ) {
assert.ok( request.abort.calledOnce, 'abort request number ' + i );
} );
} );