rdf/tests/unit/test_rdfredirect.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 const Cc = Components.classes;
     2 const Ci = Components.interfaces;
     3 const Cu = Components.utils;
     4 const Cr = Components.results;
     6 Cu.import("resource://testing-common/httpd.js");
     8 function getRDFService()
     9 {
    10   return Cc["@mozilla.org/rdf/rdf-service;1"].
    11     getService(Ci.nsIRDFService);
    12 }
    14 var server1, server2;
    16 function run_test()
    17 {
    18   var samplefile = do_get_file('sample.rdf');
    20   server1 = new HttpServer();
    21   server1.registerPathHandler("/sample-xs.rdf", xsRedirect);
    22   server1.registerPathHandler("/sample-local.rdf", localRedirect);
    23   server1.registerFile('/sample.rdf', samplefile);
    24   server1.start(4444);
    26   server2 = new HttpServer();
    27   server2.registerFile('/sample.rdf', samplefile);
    28   server2.start(4445);
    30   do_test_pending();
    32   new rdfLoadObserver('http://localhost:4444/sample.rdf', true);
    33   new rdfLoadObserver('http://localhost:4445/sample.rdf', true);
    34   new rdfLoadObserver('http://localhost:4444/sample-xs.rdf', false);
    35   new rdfLoadObserver('http://localhost:4444/sample-local.rdf', true);
    36 }
    38 var gPending = 0;
    40 function rdfLoadObserver(uri, shouldPass)
    41 {
    42   this.shouldPass = shouldPass;
    43   this.uri = uri;
    45   ++gPending;
    47   var rdfService = getRDFService();
    48   this.ds = rdfService.GetDataSource(uri).
    49     QueryInterface(Ci.nsIRDFXMLSink);
    50   this.ds.addXMLSinkObserver(this);
    51 }
    53 rdfLoadObserver.prototype =
    54 {
    55   onBeginLoad : function() { },
    56   onInterrupt : function() { },
    57   onResume : function() { },
    58   onEndLoad : function() {
    59     print("Testing results of loading " + this.uri);
    61     var rdfs = getRDFService();
    62     var res = rdfs.GetResource("urn:mozilla:sample-data");
    63     var arc = rdfs.GetResource("http://purl.org/dc/elements/1.1/title");
    64     var answer = this.ds.GetTarget(res, arc, true);
    65     if (answer !== null) {
    66       do_check_true(this.shouldPass);
    67       do_check_true(answer instanceof Ci.nsIRDFLiteral);
    68       do_check_eq(answer.Value, "Sample");
    69     }
    70     else {
    71       do_check_false(this.shouldPass);
    72     }
    74     gPending -= 1;
    76     this.ds.removeXMLSinkObserver(this);
    78     if (gPending == 0) {
    79       do_test_pending();
    80       server1.stop(do_test_finished);
    81       server2.stop(do_test_finished);
    82     }
    83   },
    84   onError : function() { }
    85 }
    87 function xsRedirect(metadata, response)
    88 {
    89   response.setStatusLine(metadata.httpVersion, 301, "Moved Permanently");
    90   response.setHeader("Location", "http://localhost:4445/sample.rdf", false);
    91 }
    93 function localRedirect(metadata, response)
    94 {
    95   response.setStatusLine(metadata.httpVersion, 301, "Moved Permanently");
    96   response.setHeader("Location", "http://localhost:4444/sample.rdf", false);
    97 }

mercurial