tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });