core
Version:
Core Libs
125 lines (95 loc) • 4.66 kB
JavaScript
var assert = require('../../lib/common/Assertions.js').Assertions;
describe("RequestProcessor", function () {
it("require", function () {
expect(function() {
var RequestProcessor = require('../../lib/http/RequestProcessor.js').RequestProcessor;
expect(RequestProcessor).toBeTruthy();
assert.isFunction(RequestProcessor);
}).not.toThrow();
});
it("creation", function () {
expect(function () {
var RequestProcessor = require('../../lib/http/RequestProcessor.js').RequestProcessor;
var rp = new RequestProcessor();
}).not.toThrow();
});
it("attachKeepAliveStats", function () {
expect(function () {
var RequestProcessor = require('../../lib/http/RequestProcessor.js').RequestProcessor;
var Request = require('../../lib/http/Request.js').Request;
var Response = require('../../lib/http/Response.js').Response;
var EventEmitter = require("events").EventEmitter;
var req = new Request('http://www.onet.pl');
var res = new Response();
res.setStatusCode(200);
res._httpServerResponse = {};
res._httpServerResponse.socket = new EventEmitter();
// adding (emulate) default node http listener
expect(res._httpServerResponse.socket.listeners('close').length).toBe(0);
res._httpServerResponse.socket.on('close', function(){});
expect(res._httpServerResponse.socket.listeners('close').length).toBe(1);
var rp = new RequestProcessor({});
rp._attachKeepAliveStats(req, res);
expect(res._httpServerResponse.socket.listeners('close').length).toBe(2);
rp._attachKeepAliveStats(req, res);
expect(res._httpServerResponse.socket.listeners('close').length).toBe(2);
var consoleInfo = null;
spyOn(console, 'info').andCallFake(function (msg, tt, code, url, first_req_ts, req_count, socket_ttl, req_ttl) {
consoleInfo = true;
expect(tt).toBe(0);
expect(code).toBe(200);
expect(url).toBe('http://www.onet.pl/');
expect(first_req_ts).toBeGreaterThan(+ new Date(0));
expect(req_count).toBe(2);
expect(socket_ttl).toBeGreaterThan(-1);
expect(req_ttl).toBeGreaterThan(-1);
});
res._httpServerResponse.socket.emit('close');
waitsFor(function() {
return consoleInfo;
}, "console.info with stats never emitted", 1000);
}).not.toThrow();
});
it("requestLine should have query string information", function () {
var RequestProcessor = require('../../lib/http/RequestProcessor.js').RequestProcessor;
var Request = require('../../lib/http/Request.js').Request;
var Response = require('../../lib/http/Response.js').Response;
var req = null;
var res = new Response();
res._httpServerResponse = {
socket: null
}
var rp = new RequestProcessor({});
var host = "http://www.onet.pl"
req = new Request(host);
rp.process(req, res);
expect(rp._requestLine).toBe('"GET / 1.0"')
req = new Request(host + '/');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET / 1.0"')
req = new Request(host + '/path');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path 1.0"')
req = new Request(host + '/path/');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path/ 1.0"')
req = new Request(host + '/path/index.html');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path/index.html 1.0"')
req = new Request(host + '/path//index.html');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path//index.html 1.0"')
req = new Request(host + '/path//index.html//');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path//index.html// 1.0"')
req = new Request(host + '/path/index.html?v=1');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path/index.html?v=1 1.0"')
req = new Request(host + '/path/index.html?v=1&t=2');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path/index.html?v=1&t=2 1.0"')
req = new Request(host + '/path/index.html?');
rp.process(req, res);
expect(rp._requestLine).toBe('"GET /path/index.html? 1.0"')
});
});