mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-22 02:25:05 +00:00
74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// A test of FxAccountsOAuthGrantClient but using a real server it can
|
|
// hit.
|
|
"use strict";
|
|
|
|
Cu.import("resource://gre/modules/FxAccountsCommon.js");
|
|
Cu.import("resource://gre/modules/FxAccountsOAuthGrantClient.jsm");
|
|
|
|
// handlers for our server.
|
|
var numTokenFetches;
|
|
var activeTokens;
|
|
|
|
function authorize(request, response) {
|
|
response.setStatusLine("1.1", 200, "OK");
|
|
let token = "token" + numTokenFetches;
|
|
numTokenFetches += 1;
|
|
activeTokens.add(token);
|
|
response.write(JSON.stringify({access_token: token}));
|
|
}
|
|
|
|
function destroy(request, response) {
|
|
// Getting the body seems harder than it should be!
|
|
let sis = Cc["@mozilla.org/scriptableinputstream;1"]
|
|
.createInstance(Ci.nsIScriptableInputStream);
|
|
sis.init(request.bodyInputStream);
|
|
let body = JSON.parse(sis.read(sis.available()));
|
|
sis.close();
|
|
let token = body.token;
|
|
ok(activeTokens.delete(token));
|
|
print("after destroy have", activeTokens.size, "tokens left.")
|
|
response.setStatusLine("1.1", 200, "OK");
|
|
response.write('{}');
|
|
}
|
|
|
|
function startServer() {
|
|
numTokenFetches = 0;
|
|
activeTokens = new Set();
|
|
let srv = new HttpServer();
|
|
srv.registerPathHandler("/v1/authorization", authorize);
|
|
srv.registerPathHandler("/v1/destroy", destroy);
|
|
srv.start(-1);
|
|
return srv;
|
|
}
|
|
|
|
function promiseStopServer(server) {
|
|
return new Promise(resolve => {
|
|
server.stop(resolve);
|
|
});
|
|
}
|
|
|
|
add_task(function getAndRevokeToken () {
|
|
let server = startServer();
|
|
let clientOptions = {
|
|
serverURL: "http://localhost:" + server.identity.primaryPort + "/v1",
|
|
client_id: 'abc123',
|
|
}
|
|
|
|
let client = new FxAccountsOAuthGrantClient(clientOptions);
|
|
let result = yield client.getTokenFromAssertion("assertion", "scope");
|
|
equal(result.access_token, "token0");
|
|
equal(numTokenFetches, 1, "we hit the server to fetch a token");
|
|
yield client.destroyToken("token0");
|
|
equal(activeTokens.size, 0, "We hit the server to revoke it");
|
|
yield promiseStopServer(server);
|
|
});
|
|
|
|
// XXX - TODO - we should probably add more tests for unexpected responses etc.
|
|
|
|
function run_test() {
|
|
run_next_test();
|
|
}
|