forked from ariya/phantomjs
/
webserver-spec.js
84 lines (73 loc) · 2.86 KB
/
webserver-spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
describe("WebServer constructor", function() {
it("should not exist in window", function() {
expect(window.hasOwnProperty('WebServer')).toBeFalsy();
});
it("should be a function", function() {
var WebServer = require('webserver').create;
expect(typeof WebServer).toEqual('function');
});
});
function checkRequest(request, response) {
expect(typeof request).toEqual('object');
expectHasProperty(request, 'url');
expectHasProperty(request, 'queryString');
expectHasProperty(request, 'method');
expectHasProperty(request, 'httpVersion');
expectHasProperty(request, 'statusCode');
expectHasProperty(request, 'isSSL');
expectHasProperty(request, 'remoteIP');
expectHasProperty(request, 'remotePort');
expectHasProperty(request, 'remoteUser');
expectHasProperty(request, 'headers');
expectHasProperty(request, 'headerName');
expectHasProperty(request, 'headerValue');
expect(typeof response).toEqual('object');
expectHasProperty(response, 'statusCode');
expectHasProperty(response, 'headers');
expectHasFunction(response, 'setHeader');
expectHasFunction(response, 'write');
}
describe("WebServer object", function() {
var server = require('webserver').create();
it("should be creatable", function() {
expect(typeof server).toEqual('object');
expect(server).toNotEqual(null);
});
it("should have objectName as 'WebServer'", function() {
expect(server.objectName).toEqual('WebServer');
});
expectHasProperty(server, 'port');
it("should have port as string", function() {
expect(typeof server.port).toEqual('string');
});
it("should not listen to any port by default", function() {
expect(server.port).toEqual("");
});
/* TODO:
expectHasProperty(page, 'settings');
it("should have non-empty settings", function() {
expect(page.settings).toNotEqual(null);
expect(page.settings).toNotEqual({});
});
*/
expectHasFunction(server, 'listenOnPort');
expectHasFunction(server, 'newRequest');
expectHasFunction(server, 'close');
it("should fail to listen to blocked ports", function() {
//NOTE: is this really blocked everywhere?
expect(server.listen(1, function(){})).toEqual(false);
expect(server.port).toEqual("");
});
it("should be able to listen to some port", function() {
//NOTE: this can fail if the port is already being listend on...
expect(server.listen(12345, checkRequest)).toEqual(true);
expect(server.port).toEqual("12345");
});
it("should handle requests", function() {
var page = require('webpage').create();
var url = "http://localhost:12345/foo/bar.php?asdf=true";
page.open(url, function (status) {
expect(status == 'success').toEqual(true);
});
});
});