test_tokenauthenticatedrequest.js (1506B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 const { CryptoUtils } = ChromeUtils.importESModule( 5 "moz-src:///services/crypto/modules/utils.sys.mjs" 6 ); 7 const { TokenAuthenticatedRESTRequest } = ChromeUtils.importESModule( 8 "resource://services-common/rest.sys.mjs" 9 ); 10 11 function run_test() { 12 initTestLogging("Trace"); 13 run_next_test(); 14 } 15 16 add_task(async function test_authenticated_request() { 17 _("Ensure that sending a MAC authenticated GET request works as expected."); 18 19 let message = "Great Success!"; 20 21 let id = "eyJleHBpcmVzIjogMTM2NTAxMDg5OC4x"; 22 let key = "qTZf4ZFpAMpMoeSsX3zVRjiqmNs="; 23 let method = "GET"; 24 25 let nonce = btoa(CryptoUtils.generateRandomBytesLegacy(16)); 26 let ts = Math.floor(Date.now() / 1000); 27 let extra = { ts, nonce }; 28 29 let auth; 30 31 let server = httpd_setup({ 32 "/foo": function (request, response) { 33 Assert.ok(request.hasHeader("Authorization")); 34 Assert.equal(auth, request.getHeader("Authorization")); 35 36 response.setStatusLine(request.httpVersion, 200, "OK"); 37 response.bodyOutputStream.write(message, message.length); 38 }, 39 }); 40 let uri = CommonUtils.makeURI(server.baseURI + "/foo"); 41 let sig = await CryptoUtils.computeHTTPMACSHA1(id, key, method, uri, extra); 42 auth = sig.getHeader(); 43 44 let req = new TokenAuthenticatedRESTRequest(uri, { id, key }, extra); 45 await req.get(); 46 47 Assert.equal(message, req.response.body); 48 49 await promiseStopServer(server); 50 });