@ -21,42 +21,42 @@ const alwaysVariableResponse = {headers:Object.assign({'vary':'*'},cacheableResp
describe ( 'Can be revalidated?' , function ( ) {
describe ( 'Can be revalidated?' , function ( ) {
it ( 'ok if method changes to HEAD' , function ( ) {
it ( 'ok if method changes to HEAD' , function ( ) {
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const vReq = cache . validationRequest ( simpleRequestBut ( { method : 'HEAD' } ) ) ;
const headers = cache . revalidationHeaders ( simpleRequestBut ( { method : 'HEAD' } ) ) ;
assert . equal ( vReq . headers [ 'if-none-match' ] , '"123456789"' ) ;
assert . equal ( headers [ 'if-none-match' ] , '"123456789"' ) ;
} ) ;
} ) ;
it ( 'not if method mismatch (other than HEAD)' , function ( ) {
it ( 'not if method mismatch (other than HEAD)' , function ( ) {
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const incomingRequest = simpleRequestBut ( { method : 'POST' } ) ;
const incomingRequest = simpleRequestBut ( { method : 'POST' } ) ;
// Returns the same object unmodified, which means no custom validation
// Returns the same object unmodified, which means no custom validation
assert . strictEqual ( incomingRequest , cache . validationRequest ( incomingRequest ) ) ;
assert . strictEqual ( incomingRequest . headers , cache . revalidationHeaders ( incomingRequest ) ) ;
} ) ;
} ) ;
it ( 'not if url mismatch' , function ( ) {
it ( 'not if url mismatch' , function ( ) {
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const incomingRequest = simpleRequestBut ( { url : '/yomomma' } ) ;
const incomingRequest = simpleRequestBut ( { url : '/yomomma' } ) ;
assert . strictEqual ( incomingRequest , cache . validationRequest ( incomingRequest ) ) ;
assert . strictEqual ( incomingRequest . headers , cache . revalidationHeaders ( incomingRequest ) ) ;
} ) ;
} ) ;
it ( 'not if host mismatch' , function ( ) {
it ( 'not if host mismatch' , function ( ) {
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const incomingRequest = simpleRequestBut ( { headers : { host : 'www.w4c.org' } } ) ;
const incomingRequest = simpleRequestBut ( { headers : { host : 'www.w4c.org' } } ) ;
assert . strictEqual ( incomingRequest , cache . validationRequest ( incomingRequest ) ) ;
assert . strictEqual ( incomingRequest . headers , cache . revalidationHeaders ( incomingRequest ) ) ;
} ) ;
} ) ;
it ( 'not if vary fields prevent' , function ( ) {
it ( 'not if vary fields prevent' , function ( ) {
const cache = new CachePolicy ( simpleRequest , alwaysVariableResponse ) ;
const cache = new CachePolicy ( simpleRequest , alwaysVariableResponse ) ;
assert . strictEqual ( simpleRequest , cache . validationRequest ( simpleRequest ) ) ;
assert . strictEqual ( simpleRequest . headers , cache . revalidationHeaders ( simpleRequest ) ) ;
} ) ;
} ) ;
it ( 'when entity tag validator is present' , function ( ) {
it ( 'when entity tag validator is present' , function ( ) {
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const cache = new CachePolicy ( simpleRequest , etaggedResponse ) ;
const vReq = cache . validationRequest ( simpleRequest ) ;
const headers = cache . revalidationHeaders ( simpleRequest ) ;
assert . equal ( vReq . headers [ 'if-none-match' ] , '"123456789"' ) ;
assert . equal ( headers [ 'if-none-match' ] , '"123456789"' ) ;
} ) ;
} ) ;
it ( 'when last-modified validator is present' , function ( ) {
it ( 'when last-modified validator is present' , function ( ) {
const cache = new CachePolicy ( simpleRequest , lastModifiedResponse ) ;
const cache = new CachePolicy ( simpleRequest , lastModifiedResponse ) ;
const vReq = cache . validationRequest ( simpleRequest ) ;
const headers = cache . revalidationHeaders ( simpleRequest ) ;
assert . equal ( vReq . headers [ 'if-modified-since' ] , 'Tue, 15 Nov 1994 12:45:26 GMT' ) ;
assert . equal ( headers [ 'if-modified-since' ] , 'Tue, 15 Nov 1994 12:45:26 GMT' ) ;
} ) ;
} ) ;
it ( 'not without validators' , function ( ) {
it ( 'not without validators' , function ( ) {
const cache = new CachePolicy ( simpleRequest , cacheableResponse ) ;
const cache = new CachePolicy ( simpleRequest , cacheableResponse ) ;
assert . strictEqual ( simpleRequest , cache . validationRequest ( simpleRequest ) ) ;
assert . strictEqual ( simpleRequest . headers , cache . revalidationHeaders ( simpleRequest ) ) ;
} )
} )
} ) ;
} ) ;
@ -65,13 +65,13 @@ describe('Validation request', function(){
it ( 'must contain any etag' , function ( ) {
it ( 'must contain any etag' , function ( ) {
const cache = new CachePolicy ( simpleRequest , multiValidatorResponse ) ;
const cache = new CachePolicy ( simpleRequest , multiValidatorResponse ) ;
const expected = multiValidatorResponse . headers . etag ;
const expected = multiValidatorResponse . headers . etag ;
const actual = cache . validationRequest ( simpleRequest ) . headers [ 'if-none-match' ] ;
const actual = cache . revalidationHeaders ( simpleRequest ) [ 'if-none-match' ] ;
assert . equal ( actual , expected ) ;
assert . equal ( actual , expected ) ;
} ) ;
} ) ;
it ( 'should send the Last-Modified value' , function ( ) {
it ( 'should send the Last-Modified value' , function ( ) {
const cache = new CachePolicy ( simpleRequest , multiValidatorResponse ) ;
const cache = new CachePolicy ( simpleRequest , multiValidatorResponse ) ;
const expected = multiValidatorResponse . headers [ 'last-modified' ] ;
const expected = multiValidatorResponse . headers [ 'last-modified' ] ;
const actual = cache . validationRequest ( simpleRequest ) . headers [ 'if-modified-since' ] ;
const actual = cache . revalidationHeaders ( simpleRequest ) [ 'if-modified-since' ] ;
assert . equal ( actual , expected ) ;
assert . equal ( actual , expected ) ;
} ) ;
} ) ;