From 681e140d5fb4065a5ceef82061210a0c1c072c55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kornel=20Lesin=CC=81ski?= Date: Tue, 31 May 2016 11:12:35 +0100 Subject: [PATCH] Tests --- test/{cachetest.js => responsetest.js} | 56 +++++++++++++++++--------- 1 file changed, 38 insertions(+), 18 deletions(-) rename test/{cachetest.js => responsetest.js} (67%) diff --git a/test/cachetest.js b/test/responsetest.js similarity index 67% rename from test/cachetest.js rename to test/responsetest.js index b487a05..ec81deb 100644 --- a/test/cachetest.js +++ b/test/responsetest.js @@ -3,20 +3,22 @@ const assert = require('assert'); const CachePolicy = require('..'); -describe('Cache', function() { +const req = {method:'GET', headers:{}}; + +describe('Response headers', function() { it('simple miss', function() { - const cache = new CachePolicy({}, {headers:{}}); + const cache = new CachePolicy(req, {headers:{}}); assert(!cache.isFresh()); }); it('simple hit', function() { - const cache = new CachePolicy({}, {headers:{'cache-control': 'public, max-age=999999'}}); + const cache = new CachePolicy(req, {headers:{'cache-control': 'public, max-age=999999'}}); assert(cache.isFresh()); assert.equal(cache.maxAge(), 999999); }); it('cache with expires', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'date': new Date().toGMTString(), 'expires': new Date(Date.now() + 2000).toGMTString(), }}); @@ -25,7 +27,7 @@ describe('Cache', function() { }); it('cache expires no date', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'cache-control': 'public', 'expires': new Date(Date.now()+3600*1000).toGMTString(), }}); @@ -35,7 +37,7 @@ describe('Cache', function() { }); it('cache old files', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'date': new Date().toGMTString(), 'last-modified': 'Mon, 07 Mar 2016 11:52:56 GMT', }}); @@ -44,7 +46,7 @@ describe('Cache', function() { }); it('pragma: no-cache', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'pragma': 'no-cache', 'last-modified': 'Mon, 07 Mar 2016 11:52:56 GMT', }}); @@ -52,7 +54,7 @@ describe('Cache', function() { }); it('no-store', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'cache-control': 'no-store, public, max-age=1', }}); assert(!cache.isFresh()); @@ -63,11 +65,11 @@ describe('Cache', function() { const privateHeader = { 'cache-control': 'private, max-age=1234', }; - const proxyCache = new CachePolicy({}, {headers:privateHeader}); + const proxyCache = new CachePolicy(req, {headers:privateHeader}); assert(!proxyCache.isFresh()); assert.equal(0, proxyCache.maxAge()); - const uaCache = new CachePolicy({}, {headers:privateHeader}, {shared:false}); + const uaCache = new CachePolicy(req, {headers:privateHeader}, {shared:false}); assert(uaCache.isFresh()); assert.equal(1234, uaCache.maxAge()); }); @@ -77,11 +79,11 @@ describe('Cache', function() { 'set-cookie': 'foo=bar', 'cache-control': 'max-age=99', }; - const proxyCache = new CachePolicy({}, {headers:cookieHeader}, {shared:true}); + const proxyCache = new CachePolicy(req, {headers:cookieHeader}, {shared:true}); assert(!proxyCache.isFresh()); assert.equal(0, proxyCache.maxAge()); - const uaCache = new CachePolicy({}, {headers:cookieHeader}, {shared:false}); + const uaCache = new CachePolicy(req, {headers:cookieHeader}, {shared:false}); assert(uaCache.isFresh()); assert.equal(99, uaCache.maxAge()); }); @@ -91,21 +93,39 @@ describe('Cache', function() { 'set-cookie': 'foo=bar', 'cache-control': 'max-age=5, public', }; - const proxyCache = new CachePolicy({}, {headers:cookieHeader}, {shared:true}); + const proxyCache = new CachePolicy(req, {headers:cookieHeader}, {shared:true}); assert(proxyCache.isFresh()); assert.equal(5, proxyCache.maxAge()); }); it('miss max-age=0', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'cache-control': 'public, max-age=0', }}); assert(!cache.isFresh()); assert.equal(0, cache.maxAge()); }); + it('cacheable 301', function() { + const cache = new CachePolicy(req, { + status: 301, + headers:{ + 'last-modified': 'Mon, 07 Mar 2016 11:52:56 GMT', + }}); + assert(cache.isFresh()); + }); + + it('cacheable 303', function() { + const cache = new CachePolicy(req, { + status: 303, + headers:{ + 'cache-control': 'max-age=1000', + }}); + assert(cache.isFresh()); + }); + it('expired expires cached with max-age', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'cache-control': 'public, max-age=9999', 'expires': 'Sat, 07 May 2016 15:35:18 GMT', }}); @@ -118,17 +138,17 @@ describe('Cache', function() { 'cache-control': 'public, s-maxage=9999', 'expires': 'Sat, 07 May 2016 15:35:18 GMT', }; - const proxyCache = new CachePolicy({}, {headers:sMaxAgeHeaders}); + const proxyCache = new CachePolicy(req, {headers:sMaxAgeHeaders}); assert(proxyCache.isFresh()); assert.equal(9999, proxyCache.maxAge()); - const uaCache = new CachePolicy({}, {headers:sMaxAgeHeaders}, {shared:false}); + const uaCache = new CachePolicy(req, {headers:sMaxAgeHeaders}, {shared:false}); assert(!uaCache.isFresh()); assert.equal(0, uaCache.maxAge()); }); it('max-age wins over future expires', function() { - const cache = new CachePolicy({}, {headers:{ + const cache = new CachePolicy(req, {headers:{ 'cache-control': 'public, max-age=333', 'expires': new Date(Date.now()+3600*1000).toGMTString(), }});