rdf/tests/unit/test_rdfredirect.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/rdf/tests/unit/test_rdfredirect.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,97 @@
     1.4 +const Cc = Components.classes;
     1.5 +const Ci = Components.interfaces;
     1.6 +const Cu = Components.utils;
     1.7 +const Cr = Components.results;
     1.8 +
     1.9 +Cu.import("resource://testing-common/httpd.js");
    1.10 +
    1.11 +function getRDFService()
    1.12 +{
    1.13 +  return Cc["@mozilla.org/rdf/rdf-service;1"].
    1.14 +    getService(Ci.nsIRDFService);
    1.15 +}
    1.16 +
    1.17 +var server1, server2;
    1.18 +
    1.19 +function run_test()
    1.20 +{
    1.21 +  var samplefile = do_get_file('sample.rdf');
    1.22 +
    1.23 +  server1 = new HttpServer();
    1.24 +  server1.registerPathHandler("/sample-xs.rdf", xsRedirect);
    1.25 +  server1.registerPathHandler("/sample-local.rdf", localRedirect);
    1.26 +  server1.registerFile('/sample.rdf', samplefile);
    1.27 +  server1.start(4444);
    1.28 +
    1.29 +  server2 = new HttpServer();
    1.30 +  server2.registerFile('/sample.rdf', samplefile);
    1.31 +  server2.start(4445);
    1.32 +
    1.33 +  do_test_pending();
    1.34 +
    1.35 +  new rdfLoadObserver('http://localhost:4444/sample.rdf', true);
    1.36 +  new rdfLoadObserver('http://localhost:4445/sample.rdf', true);
    1.37 +  new rdfLoadObserver('http://localhost:4444/sample-xs.rdf', false);
    1.38 +  new rdfLoadObserver('http://localhost:4444/sample-local.rdf', true);
    1.39 +}
    1.40 +
    1.41 +var gPending = 0;
    1.42 +
    1.43 +function rdfLoadObserver(uri, shouldPass)
    1.44 +{
    1.45 +  this.shouldPass = shouldPass;
    1.46 +  this.uri = uri;
    1.47 +
    1.48 +  ++gPending;
    1.49 +
    1.50 +  var rdfService = getRDFService();
    1.51 +  this.ds = rdfService.GetDataSource(uri).
    1.52 +    QueryInterface(Ci.nsIRDFXMLSink);
    1.53 +  this.ds.addXMLSinkObserver(this);
    1.54 +}
    1.55 +
    1.56 +rdfLoadObserver.prototype =
    1.57 +{
    1.58 +  onBeginLoad : function() { },
    1.59 +  onInterrupt : function() { },
    1.60 +  onResume : function() { },
    1.61 +  onEndLoad : function() {
    1.62 +    print("Testing results of loading " + this.uri);
    1.63 +
    1.64 +    var rdfs = getRDFService();
    1.65 +    var res = rdfs.GetResource("urn:mozilla:sample-data");
    1.66 +    var arc = rdfs.GetResource("http://purl.org/dc/elements/1.1/title");
    1.67 +    var answer = this.ds.GetTarget(res, arc, true);
    1.68 +    if (answer !== null) {
    1.69 +      do_check_true(this.shouldPass);
    1.70 +      do_check_true(answer instanceof Ci.nsIRDFLiteral);
    1.71 +      do_check_eq(answer.Value, "Sample");
    1.72 +    }
    1.73 +    else {
    1.74 +      do_check_false(this.shouldPass);
    1.75 +    }
    1.76 +
    1.77 +    gPending -= 1;
    1.78 +
    1.79 +    this.ds.removeXMLSinkObserver(this);
    1.80 +
    1.81 +    if (gPending == 0) {
    1.82 +      do_test_pending();
    1.83 +      server1.stop(do_test_finished);
    1.84 +      server2.stop(do_test_finished);
    1.85 +    }
    1.86 +  },
    1.87 +  onError : function() { }
    1.88 +}
    1.89 +
    1.90 +function xsRedirect(metadata, response)
    1.91 +{
    1.92 +  response.setStatusLine(metadata.httpVersion, 301, "Moved Permanently");
    1.93 +  response.setHeader("Location", "http://localhost:4445/sample.rdf", false);
    1.94 +}
    1.95 +
    1.96 +function localRedirect(metadata, response)
    1.97 +{
    1.98 +  response.setStatusLine(metadata.httpVersion, 301, "Moved Permanently");
    1.99 +  response.setHeader("Location", "http://localhost:4444/sample.rdf", false);
   1.100 +}

mercurial