3 changed files with 5 additions and 215 deletions
@ -1,133 +0,0 @@ |
|||||
import test from 'ava'; |
|
||||
import nock from 'nock'; |
|
||||
import subSeconds from 'date-fns/sub_seconds'; |
|
||||
import delay from 'delay'; |
|
||||
import Onionoo from '../'; |
|
||||
import data from './fixtures/data'; |
|
||||
|
|
||||
test('Cache can be disabled', async t => { |
|
||||
const onionoo = new Onionoo({cache: false}); |
|
||||
|
|
||||
const defaultEndpoint = data.defaultEndpoints[0]; |
|
||||
const responseHeaders = { |
|
||||
date: new Date().toUTCString(), |
|
||||
age: 0, |
|
||||
'cache-control': 'public, max-age=300' |
|
||||
}; |
|
||||
|
|
||||
const scope = nock(data.defaultBaseUrl) |
|
||||
.get(`/${defaultEndpoint}`) |
|
||||
.reply(200, data.dummyResponse, responseHeaders); |
|
||||
|
|
||||
const response = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(response.body, data.dummyResponse); |
|
||||
t.truthy(scope.isDone()); |
|
||||
|
|
||||
const scope2 = nock(data.defaultBaseUrl) |
|
||||
.get(`/${defaultEndpoint}`) |
|
||||
.reply(200, data.dummyResponse, responseHeaders); |
|
||||
|
|
||||
const response2 = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(response2.body, data.dummyResponse); |
|
||||
t.truthy(scope2.isDone()); |
|
||||
}); |
|
||||
|
|
||||
test('Responses with future max-age are cached', async t => { |
|
||||
const onionoo = new Onionoo(); |
|
||||
|
|
||||
const defaultEndpoint = data.defaultEndpoints[0]; |
|
||||
const responseHeaders = { |
|
||||
date: new Date().toUTCString(), |
|
||||
age: 0, |
|
||||
'cache-control': 'public, max-age=300' |
|
||||
}; |
|
||||
|
|
||||
const scope = nock(data.defaultBaseUrl) |
|
||||
.get(`/${defaultEndpoint}`) |
|
||||
.reply(200, data.dummyResponse, responseHeaders); |
|
||||
|
|
||||
const response = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(response.body, data.dummyResponse); |
|
||||
t.truthy(scope.isDone()); |
|
||||
|
|
||||
const cachedResponse = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(cachedResponse.body, data.dummyResponse); |
|
||||
}); |
|
||||
|
|
||||
test('Responses older than max-age are not cached', async t => { |
|
||||
const onionoo = new Onionoo(); |
|
||||
|
|
||||
const defaultEndpoint = data.defaultEndpoints[0]; |
|
||||
const responseHeaders = { |
|
||||
date: subSeconds(new Date(), 15).toUTCString(), |
|
||||
age: 0, |
|
||||
'cache-control': 'public, max-age=10' |
|
||||
}; |
|
||||
|
|
||||
const scope = nock(data.defaultBaseUrl) |
|
||||
.get(`/${defaultEndpoint}`) |
|
||||
.reply(200, data.dummyResponse, responseHeaders); |
|
||||
|
|
||||
const response = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(response.body, data.dummyResponse); |
|
||||
t.truthy(scope.isDone()); |
|
||||
|
|
||||
const scope2 = nock(data.defaultBaseUrl) |
|
||||
.get(`/${defaultEndpoint}`) |
|
||||
.reply(200, data.dummyResponse, responseHeaders); |
|
||||
|
|
||||
const response2 = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(response2.body, data.dummyResponse); |
|
||||
t.truthy(scope2.isDone()); |
|
||||
}); |
|
||||
|
|
||||
test('When expired, add last-modified date to headers and handle 304', async t => { |
|
||||
const onionoo = new Onionoo(); |
|
||||
|
|
||||
const defaultEndpoint = data.defaultEndpoints[0]; |
|
||||
const initialDate = new Date().toUTCString(); |
|
||||
const responseHeaders = { |
|
||||
date: initialDate, |
|
||||
age: 0, |
|
||||
'cache-control': 'public, max-age=1', |
|
||||
'last-modified': initialDate |
|
||||
}; |
|
||||
|
|
||||
const scope = nock(data.defaultBaseUrl) |
|
||||
.get(`/${defaultEndpoint}`) |
|
||||
.reply(200, data.dummyResponse, responseHeaders); |
|
||||
|
|
||||
const response = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(response.body, data.dummyResponse); |
|
||||
t.truthy(scope.isDone()); |
|
||||
|
|
||||
const requestHeaders = { |
|
||||
'if-modified-since': initialDate |
|
||||
}; |
|
||||
const responseHeaders304 = { |
|
||||
date: new Date().toUTCString(), |
|
||||
age: 0, |
|
||||
'cache-control': 'public, max-age=10', |
|
||||
'last-modified': initialDate |
|
||||
}; |
|
||||
|
|
||||
const scope2 = nock(data.defaultBaseUrl, {requestHeaders}) |
|
||||
.get(`/${defaultEndpoint}`) |
|
||||
.reply(304, null, responseHeaders304); |
|
||||
|
|
||||
const response2 = await delay(2000).then(onionoo[defaultEndpoint]); |
|
||||
|
|
||||
t.deepEqual(response2.body, data.dummyResponse); |
|
||||
t.truthy(scope2.isDone()); |
|
||||
|
|
||||
const cachedResponse = await onionoo[defaultEndpoint](); |
|
||||
|
|
||||
t.deepEqual(cachedResponse.body, data.dummyResponse); |
|
||||
}); |
|
Loading…
Reference in new issue