From 991c2407a4b932cca63904da4ec771c6f179669c Mon Sep 17 00:00:00 2001 From: DIYgod Date: Thu, 31 Jan 2019 18:29:26 +0800 Subject: [PATCH] test: middleware/cache --- .travis.yml | 5 +++- test/middleware/cache.js | 54 ++++++++++++++++++++++++++++++++++++++++ test/router.js | 13 +--------- 3 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 test/middleware/cache.js diff --git a/.travis.yml b/.travis.yml index 15c1e63d9d..d2ae3b125f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,11 +2,14 @@ language: node_js node_js: stable +services: + - redis-server + install: - yarn script: - - travis_wait 60 npm run test + - npm run test after_script: - npm install codecov diff --git a/test/middleware/cache.js b/test/middleware/cache.js new file mode 100644 index 0000000000..7bcae6941f --- /dev/null +++ b/test/middleware/cache.js @@ -0,0 +1,54 @@ +const supertest = require('supertest'); +const Parser = require('rss-parser'); +const parser = new Parser(); +const wait = require('../../lib/utils/wait'); +let server; + +beforeAll(() => { + process.env.CACHE_EXPIRE = 1; +}); + +afterEach(() => { + delete process.env.CACHE_TYPE; + jest.resetModules(); + server.close(); +}); + +afterAll(() => { + delete process.env.CACHE_EXPIRE; +}); + +async function check(type) { + process.env.CACHE_TYPE = type; + server = require('../../lib/index').server; + const request = supertest(server); + + const response1 = await request.get('/test/1'); + const parsed1 = await parser.parseString(response1.text); + + const response2 = await request.get('/test/1'); + const parsed2 = await parser.parseString(response2.text); + + delete parsed1.lastBuildDate; + delete parsed2.lastBuildDate; + expect(parsed2).toMatchObject(parsed1); + + expect(response2.status).toBe(200); + expect(response2.headers[`x-koa-${type}-cache`]).toBe('true'); + expect(response3.headers).not.toHaveProperty(`x-koa-${type === 'redis' ? 'memory' : 'redis'}-cache`); + + await wait(1 * 1000 + 10); + const response3 = await request.get('/test/1'); + expect(response3.headers).not.toHaveProperty('x-koa-redis-cache'); + expect(response3.headers).not.toHaveProperty('x-koa-memory-cache'); +} + +describe('cache', () => { + it('memory', async () => { + check('memory'); + }); + + it('redis', async () => { + check('redis'); + }); +}); diff --git a/test/router.js b/test/router.js index 5450fc6c0e..573eb239ab 100644 --- a/test/router.js +++ b/test/router.js @@ -58,23 +58,12 @@ describe('router', () => { }); // route - it(`/test/1 (origin)`, async () => { + it(`/test/1`, async () => { const response = await request.get('/test/1'); expect(response.status).toBe(200); await checkRSS(response); }); - it(`/test/1 (cache)`, async () => { - const response = await request.get('/test/1'); - expect(response.status).toBe(200); - if (config.cacheType === 'memory') { - expect(response.headers['x-koa-memory-cache']).toBe('true'); - } else if (config.cacheType === 'redis') { - expect(response.headers['x-koa-redis-cache']).toBe('true'); - } - - await checkRSS(response); - }); // api it(`/api/routes/test`, async () => {