dl
Version:
DreamLab Libs
495 lines (446 loc) • 25.1 kB
JavaScript
var Core = require('core');
var Request = Core.http.Request;
var Response = Core.http.Response;
var BinaryData = Core.data.BinaryData;
var assert = Core.common.Assertions;
describe("OnetHeadersFilter", function() {
it("require", function() {
expect(function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
expect(OnetHeadersFilter).toBeTruthy();
expect(OnetHeadersFilter.filter).toBeTruthy();
assert.isFunction(OnetHeadersFilter);
assert.isFunction(OnetHeadersFilter.filter);
}).not.toThrow();
});
it("creation", function() {
expect(function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var onetHeadersFilter = new OnetHeadersFilter();
expect(onetHeadersFilter instanceof OnetHeadersFilter).toBeTruthy();
}).not.toThrow();
});
it("filter headers - empty response", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(503);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual(OnetHeadersFilter.SERVER);
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(res.getHeader('retry-after')).toEqual('4');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual(OnetHeadersFilter.E503_MSG);
});
it("filter headers - devel view response", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setCookie('onet_devvint=something');
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(200);
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
/* TODO: wylaczam do czasu przeniesienia isDevelView
expect(res.getStatusCode()).toEqual(200);*/
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual(OnetHeadersFilter.SERVER);
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
/* TODO: wylaczam do czasu przeniesienia isDevelView
expect(Object.keys(res.getHeaders()).length).toEqual(5);
expect(res.getBody() instanceof BinaryData).toBeFalsy();*/
});
it("filter headers - empty response with 503 status", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(503);
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(503);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual(OnetHeadersFilter.SERVER);
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(res.getHeader('retry-after')).toEqual('4');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual(OnetHeadersFilter.E503_MSG);
});
it("filter headers - non 200 response (ex. 404)", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(404);
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(404);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual(OnetHeadersFilter.SERVER);
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(Object.keys(res.getHeaders()).length).toEqual(5);
expect(res.getBody() instanceof BinaryData).toBeFalsy();
});
it("filter headers - empty 200 response", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(200);
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(503);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(res.getHeader('retry-after')).toEqual('4');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual(OnetHeadersFilter.E503_MSG);
});
it("filter headers - GET / 200 response + nType + CC: server", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'text/plain');
res.setHeader('cache-control', 'server');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual('SP/1');
expect(res.getHeader('content-type')).toEqual('text/plain; charset=utf8');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('max-age=120');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual(null);
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
it("filter headers - GET / 200 response + nType", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'text/plain');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('content-type')).toEqual('text/plain; charset=utf8');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
it("filter headers - GET / 200 response + non nType + CC: server", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'binary/octet-stream');
res.setHeader('cache-control', 'server');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('content-type')).toEqual('binary/octet-stream');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('max-age=3600');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var nowPlus7Days = new Date(res.getHeader('date'));
nowPlus7Days.setDate(nowPlus7Days.getDate() + 7);
nowPlus7Days = nowPlus7Days.toUTCString();
expect(res.getHeader('expires')).toEqual(nowPlus7Days);
expect(Object.keys(res.getHeaders()).length).toEqual(5);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
it("filter headers - GET / 200 response + non nType + CC: no-cache", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'binary/octet-stream');
res.setHeader('cache-control', 'no-cache');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('content-type')).toEqual('binary/octet-stream');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
it("filter headers - GET / 200 response + non nType + CC: private", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.GET);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'binary/octet-stream');
res.setHeader('cache-control', 'private');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('content-type')).toEqual('binary/octet-stream');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('private');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
it("filter headers - POST / 200 response + nType + CC: server", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.POST);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'text/plain');
res.setHeader('cache-control', 'server');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('content-type')).toEqual('text/plain; charset=utf8');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('private');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
it("filter headers - POST / 200 response + nType", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.POST);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'text/plain');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('content-type')).toEqual('text/plain; charset=utf8');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
it("filter headers - POST / 200 response + non nType", function() {
var OnetHeadersFilter = require('../../lib/utils/OnetHeadersFilter.js').OnetHeadersFilter;
var req = new Request();
req.setMethod(Request.POST);
var res = new Response();
res.setStatusCode(200);
res.setHeader('content-type', 'binary/octet-stream');
res.setBody(new BinaryData(
'test',
BinaryData.Encoding.TEXT,
BinaryData.CharacterEncoding.UTF8
));
expect(function() {
OnetHeadersFilter.filter(req, res);
}).not.toThrow();
expect(res.getStatusCode()).toEqual(200);
expect(res.getHeader('x-onet-squid')).toEqual(null);
expect(res.getHeader('content-type')).toEqual('binary/octet-stream');
expect(res.getHeader('date')).toBeTruthy();
expect(new Date(res.getHeader('date')).toString()).not.toEqual('Invalid Date');
expect(res.getHeader('server')).toEqual('edgeserver');
expect(res.getHeader('cache-control')).toEqual('no-cache');
expect(res.getHeader('expires')).toBeTruthy();
expect(new Date(res.getHeader('expires')).toString()).not.toEqual('Invalid Date');
var yearBackDate = new Date(res.getHeader('date'));
yearBackDate.setDate(yearBackDate.getDate() - 365);
yearBackDate = yearBackDate.toUTCString();
expect(res.getHeader('expires')).toEqual(yearBackDate);
expect(res.getHeader('pragma')).toEqual('no-cache');
expect(Object.keys(res.getHeaders()).length).toEqual(6);
expect(res.getBody() instanceof BinaryData).toBeTruthy();
expect(res.getBody().getEncoding()).toEqual(BinaryData.Encoding.TEXT);
expect(res.getBody().getCharacterEncoding()).toEqual(BinaryData.CharacterEncoding.UTF8);
expect(res.getBody().toUTF8String()).toEqual('test');
});
});