Commit 5b767815 5b76781501249d57da7c2be254444ea449ed9c68 by Nicolas Perriault

fixes #119 - file:// resource won't set HTTP status

Casper.currentHTTPStatus defaults to `null` when resource are loaded
using the `file://` protocol.
1 parent 98edb663
......@@ -113,7 +113,7 @@ var Casper = function Casper(options) {
this.colorizer = this.getColorizer();
this.currentResponse = undefined;
this.currentUrl = 'about:blank';
this.currentHTTPStatus = 0;
this.currentHTTPStatus = null;
this.defaultWaitTimeout = 5000;
this.history = [];
this.loadInProgress = false;
......@@ -1690,7 +1690,7 @@ function createPage(casper) {
}
if (resource.url === casper.requestUrl && resource.stage === "end") {
casper.currentResponse = resource;
casper.currentHTTPStatus = resource.status;
casper.currentHTTPStatus = /^http/i.test(resource.url) ? resource.status : null;
casper.emit('http.status.' + resource.status, resource);
if (utils.isObject(casper.options.httpStatusHandlers) &&
resource.status in casper.options.httpStatusHandlers &&
......
......@@ -9,19 +9,29 @@ var service = server.listen(8090, function (request, response) {
response.write("");
response.close();
});
var fs = require("fs");
casper.start();
// file protocol
casper.thenOpen('file://' + phantom.casperPath + '/tests/site/index.html', function() {
this.test.assertHttpStatus(null, 'file:// protocol does not set a HTTP status');
});
// http protocol
codes = [100, 101, 102, 118, 200, 201, 202, 203, 204, 205, 206, 207, 210,
300, 301, 302, 303, 304, 305, 307, 310,
400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
414, 415, 416, 417, 418, 422, 423, 424, 425, 426, 449, 450,
500, 501, 502, 503, 504, 505, 507, 509];
casper.start('http://google.com').each(codes, function(self, code) {
casper.thenOpen('http://google.com').each(codes, function(self, code) {
if (code === 100) {
// HTTP 100 is CONTINUE, so don't expect a terminated response
return;
}
this.thenOpen('http://localhost:8090/' + code, function() {
this.test.assertEquals(this.currentHTTPStatus, code);
this.test.assertHttpStatus(code);
});
});
......