forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| const { HttpServer } = ChromeUtils.import("resource://testing-common/httpd.js");
 | |
| 
 | |
| XPCOMUtils.defineLazyGetter(this, "URL", function() {
 | |
|   return "http://localhost:" + httpserver.identity.primaryPort;
 | |
| });
 | |
| 
 | |
| var httpserver = new HttpServer();
 | |
| var testpath = "/421";
 | |
| var httpbody = "0123456789";
 | |
| var channel;
 | |
| 
 | |
| function run_test() {
 | |
|   setup_test();
 | |
|   do_test_pending();
 | |
| }
 | |
| 
 | |
| function setup_test() {
 | |
|   httpserver.registerPathHandler(testpath, serverHandler);
 | |
|   httpserver.start(-1);
 | |
| 
 | |
|   channel = setupChannel(testpath);
 | |
| 
 | |
|   channel.asyncOpen(new ChannelListener(checkRequestResponse, channel));
 | |
| }
 | |
| 
 | |
| function setupChannel(path) {
 | |
|   var chan = NetUtil.newChannel({
 | |
|     uri: URL + path,
 | |
|     loadUsingSystemPrincipal: true,
 | |
|   });
 | |
|   chan.QueryInterface(Ci.nsIHttpChannel);
 | |
|   chan.requestMethod = "GET";
 | |
|   return chan;
 | |
| }
 | |
| 
 | |
| var iters = 0;
 | |
| 
 | |
| function serverHandler(metadata, response) {
 | |
|   response.setHeader("Content-Type", "text/plain", false);
 | |
| 
 | |
|   if (!iters) {
 | |
|     response.setStatusLine("1.1", 421, "Not Authoritative " + iters);
 | |
|   } else {
 | |
|     response.setStatusLine("1.1", 200, "OK");
 | |
|   }
 | |
|   ++iters;
 | |
| 
 | |
|   response.bodyOutputStream.write(httpbody, httpbody.length);
 | |
| }
 | |
| 
 | |
| function checkRequestResponse(request, data, context) {
 | |
|   Assert.equal(channel.responseStatus, 200);
 | |
|   Assert.equal(channel.responseStatusText, "OK");
 | |
|   Assert.ok(channel.requestSucceeded);
 | |
| 
 | |
|   Assert.equal(channel.contentType, "text/plain");
 | |
|   Assert.equal(channel.contentLength, httpbody.length);
 | |
|   Assert.equal(data, httpbody);
 | |
| 
 | |
|   httpserver.stop(do_test_finished);
 | |
| }
 | 
