mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 991654 - Updated client to use new server error format. r=Standard8
--HG-- extra : transplant_source : %E9Jpme%FB%C0%29Un%01J%10%EFd%00%19%BD%F4%E3
This commit is contained in:
parent
e7abb90eb0
commit
5bc0bda475
@ -56,16 +56,28 @@ loop.shared.Client = (function($) {
|
|||||||
*
|
*
|
||||||
* @param {Function} cb Callback(err)
|
* @param {Function} cb Callback(err)
|
||||||
* @param jqXHR See jQuery docs
|
* @param jqXHR See jQuery docs
|
||||||
* @param testStatus See jQuery docs
|
* @param textStatus See jQuery docs
|
||||||
* @param errorThrown See jQuery docs
|
* @param errorThrown See jQuery docs
|
||||||
*/
|
*/
|
||||||
_failureHandler: function(cb, jqXHR, testStatus, errorThrown) {
|
_failureHandler: function(cb, jqXHR, textStatus, errorThrown) {
|
||||||
var error = "Unknown error.";
|
var error = "Unknown error.",
|
||||||
if (jqXHR && jqXHR.responseJSON && jqXHR.responseJSON.error) {
|
jsonRes = jqXHR && jqXHR.responseJSON || {};
|
||||||
error = jqXHR.responseJSON.error;
|
// Received error response format:
|
||||||
|
// { "status": "errors",
|
||||||
|
// "errors": [{
|
||||||
|
// "location": "url",
|
||||||
|
// "name": "token",
|
||||||
|
// "description": "invalid token"
|
||||||
|
// }]}
|
||||||
|
if (jsonRes.status === "errors" && Array.isArray(jsonRes.errors)) {
|
||||||
|
error = "Details: " + jsonRes.errors.map(function(err) {
|
||||||
|
return Object.keys(err).map(function(field) {
|
||||||
|
return field + ": " + err[field];
|
||||||
|
}).join(", ");
|
||||||
|
}).join("; ");
|
||||||
}
|
}
|
||||||
var message = "HTTP error " + jqXHR.status + ": " +
|
var message = "HTTP " + jqXHR.status + " " + errorThrown +
|
||||||
errorThrown + "; " + error;
|
"; " + error;
|
||||||
console.error(message);
|
console.error(message);
|
||||||
cb(new Error(message));
|
cb(new Error(message));
|
||||||
},
|
},
|
||||||
|
@ -9,7 +9,19 @@ var expect = chai.expect;
|
|||||||
describe("loop.shared.Client", function() {
|
describe("loop.shared.Client", function() {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var sandbox, fakeXHR, requests = [], callback;
|
var sandbox,
|
||||||
|
fakeXHR,
|
||||||
|
requests = [],
|
||||||
|
callback;
|
||||||
|
|
||||||
|
var fakeErrorRes = JSON.stringify({
|
||||||
|
status: "errors",
|
||||||
|
errors: [{
|
||||||
|
location: "url",
|
||||||
|
name: "token",
|
||||||
|
description: "invalid token"
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
sandbox = sinon.sandbox.create();
|
sandbox = sinon.sandbox.create();
|
||||||
@ -68,9 +80,9 @@ describe("loop.shared.Client", function() {
|
|||||||
expect(requests).to.have.length.of(1);
|
expect(requests).to.have.length.of(1);
|
||||||
|
|
||||||
requests[0].respond(400, {"Content-Type": "application/json"},
|
requests[0].respond(400, {"Content-Type": "application/json"},
|
||||||
'{"error": "my error"}');
|
fakeErrorRes);
|
||||||
sinon.assert.calledWithMatch(callback, sinon.match(function(err) {
|
sinon.assert.calledWithMatch(callback, sinon.match(function(err) {
|
||||||
return /400.*my error/.test(err.message);
|
return /400.*invalid token/.test(err.message);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -115,9 +127,9 @@ describe("loop.shared.Client", function() {
|
|||||||
client.requestCallsInfo(42, callback);
|
client.requestCallsInfo(42, callback);
|
||||||
|
|
||||||
requests[0].respond(400, {"Content-Type": "application/json"},
|
requests[0].respond(400, {"Content-Type": "application/json"},
|
||||||
'{"error": "my error"}');
|
fakeErrorRes);
|
||||||
sinon.assert.calledWithMatch(callback, sinon.match(function(err) {
|
sinon.assert.calledWithMatch(callback, sinon.match(function(err) {
|
||||||
return /400.*my error/.test(err.message);
|
return /400.*invalid token/.test(err.message);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -172,9 +184,9 @@ describe("loop.shared.Client", function() {
|
|||||||
client.requestCallInfo("fake", callback);
|
client.requestCallInfo("fake", callback);
|
||||||
|
|
||||||
requests[0].respond(400, {"Content-Type": "application/json"},
|
requests[0].respond(400, {"Content-Type": "application/json"},
|
||||||
'{"error": "my error"}');
|
fakeErrorRes);
|
||||||
sinon.assert.calledWithMatch(callback, sinon.match(function(err) {
|
sinon.assert.calledWithMatch(callback, sinon.match(function(err) {
|
||||||
return /400.*my error/.test(err.message);
|
return /400.*invalid token/.test(err.message);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user