committed by
Kornel Lesiński
3 changed files with 99 additions and 3 deletions
@ -0,0 +1,75 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const assert = require('assert'); |
||||
|
const CachePolicy = require('..'); |
||||
|
|
||||
|
describe('Vary', function() { |
||||
|
it('Basic', function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'weather': 'nice'}}, {headers:{'vary':'weather'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'weather': 'bad'}}, {headers:{'vary':'WEATHER'}}); |
||||
|
|
||||
|
assert.equal(cache1.cacheKey(), cache1.cacheKey()); |
||||
|
assert.equal(cache2.cacheKey(), cache2.cacheKey()); |
||||
|
assert.notEqual(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
}); |
||||
|
|
||||
|
it("* doesn't match other", function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'weather': 'ok'}}, {headers:{'vary':'*'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'weather': 'ok'}}, {headers:{'vary':'weather'}}); |
||||
|
|
||||
|
assert.equal(cache2.cacheKey(), cache2.cacheKey()); |
||||
|
assert.notEqual(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
}); |
||||
|
|
||||
|
it("* is stale", function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'weather': 'ok'}}, {headers:{'cache-control':'public,max-age=99', 'vary':'*'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'weather': 'ok'}}, {headers:{'cache-control':'public,max-age=99', 'vary':'weather'}}); |
||||
|
|
||||
|
assert.notEqual(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
|
||||
|
assert(cache1.stale()); |
||||
|
assert(!cache2.stale()); |
||||
|
}); |
||||
|
|
||||
|
it('Values are case-sensitive', function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'weather': 'BAD'}}, {headers:{'vary':'weather'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'weather': 'bad'}}, {headers:{'vary':'weather'}}); |
||||
|
|
||||
|
assert.notEqual(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
}); |
||||
|
|
||||
|
it('Irrelevant headers ignored', function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'weather': 'nice'}}, {headers:{'vary':'moon-phase'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'weather': 'bad'}}, {headers:{'vary':'moon-phase'}}); |
||||
|
|
||||
|
assert.equal(cache1.cacheKey(), cache1.cacheKey()); |
||||
|
assert.equal(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
}); |
||||
|
|
||||
|
it('Absence is meaningful', function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'weather': 'nice'}}, {headers:{'vary':'moon-phase'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'weather': 'bad'}}, {headers:{'vary':'sunshine'}}); |
||||
|
|
||||
|
assert.equal(cache2.cacheKey(), cache2.cacheKey()); |
||||
|
assert.notEqual(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
}); |
||||
|
|
||||
|
it('All values must match', function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'sun': 'shining', 'weather': 'nice'}}, {headers:{'vary':'weather, sun'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'sun': 'shining', 'weather': 'bad'}}, {headers:{'vary':'weather, sun'}}); |
||||
|
assert.notEqual(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
}); |
||||
|
|
||||
|
it('Order is irrelevant', function() { |
||||
|
const cache1 = new CachePolicy({method:'GET',headers:{'weather': 'nice'}}, {headers:{'vary':'moon-phase, SUNSHINE'}}); |
||||
|
const cache2 = new CachePolicy({method:'GET',headers:{'weather': 'bad'}}, {headers:{'vary':'sunshine, moon-phase'}}); |
||||
|
assert.equal(cache1.cacheKey(), cache2.cacheKey()); |
||||
|
|
||||
|
const cache3 = new CachePolicy({method:'GET',headers:{'weather': 'nice'}}, {headers:{'vary':'moon-phase, weather'}}); |
||||
|
const cache4 = new CachePolicy({method:'GET',headers:{'weather': 'nice'}}, {headers:{'vary':'weather, moon-phase'}}); |
||||
|
assert.equal(cache3.cacheKey(), cache4.cacheKey()); |
||||
|
|
||||
|
assert.notEqual(cache1.cacheKey(), cache3.cacheKey()); |
||||
|
assert.notEqual(cache2.cacheKey(), cache4.cacheKey()); |
||||
|
}); |
||||
|
}); |
Loading…
Reference in new issue