UNPKG

dl

Version:

DreamLab Libs

495 lines (446 loc) 25.1 kB
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'); }); });