services/sync/tests/unit/test_resource_header.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 "use strict";
     6 Cu.import("resource://testing-common/httpd.js");
     7 Cu.import("resource://services-sync/resource.js");
     9 function run_test() {
    10   initTestLogging("Trace");
    11   run_next_test();
    12 }
    14 let httpServer = new HttpServer();
    15 httpServer.registerPathHandler("/content", contentHandler);
    16 httpServer.start(-1);
    18 const HTTP_PORT = httpServer.identity.primaryPort;
    19 const TEST_URL = "http://localhost:" + HTTP_PORT + "/content";
    20 const BODY = "response body";
    22 // Keep headers for later inspection.
    23 let auth = null;
    24 let foo  = null;
    25 function contentHandler(metadata, response) {
    26   _("Handling request.");
    27   auth = metadata.getHeader("Authorization");
    28   foo  = metadata.getHeader("X-Foo");
    30   _("Extracted headers. " + auth + ", " + foo);
    32   response.setHeader("Content-Type", "text/plain");
    33   response.bodyOutputStream.write(BODY, BODY.length);
    34 }
    36 // Set a proxy function to cause an internal redirect.
    37 function triggerRedirect() {
    38   const PROXY_FUNCTION = "function FindProxyForURL(url, host) {"                +
    39                          "  return 'PROXY a_non_existent_domain_x7x6c572v:80; " +
    40                                    "PROXY localhost:" + HTTP_PORT + "';"        +
    41                          "}";
    43   let prefsService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService);
    44   let prefs = prefsService.getBranch("network.proxy.");
    45   prefs.setIntPref("type", 2);
    46   prefs.setCharPref("autoconfig_url", "data:text/plain," + PROXY_FUNCTION);
    47 }
    49 add_test(function test_headers_copied() {
    50   triggerRedirect();
    52   _("Issuing request.");
    53   let resource = new Resource(TEST_URL);
    54   resource.setHeader("Authorization", "Basic foobar");
    55   resource.setHeader("X-Foo", "foofoo");
    57   let result = resource.get(TEST_URL);
    58   _("Result: " + result);
    60   do_check_eq(result, BODY);
    61   do_check_eq(auth, "Basic foobar");
    62   do_check_eq(foo, "foofoo");
    64   httpServer.stop(run_next_test);
    65 });

mercurial