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 +}