diff --git a/package.json b/package.json index ebc5dd4f1..933b0f85d 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ }, "jest": { "testMatch": [ - "**/test/**/parameter.js" + "**/test/**/*.js" ], "testPathIgnorePatterns": [ "/node_modules/", diff --git a/test/middleware/debug.js b/test/middleware/debug.js index dfca5f3e6..337d09172 100644 --- a/test/middleware/debug.js +++ b/test/middleware/debug.js @@ -18,8 +18,9 @@ afterAll(() => { describe('debug', () => { it('debug', async () => { - await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233'); - await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233'); + const response1 = await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233'); + const etag = response1.headers.etag; + await request.get('/test/1').set('If-None-Match', etag).set('X-Forwarded-For', '233.233.233.233'); await request.get('/test/1').set('X-Forwarded-For', '233.233.233.234'); await request.get('/test/2').set('X-Forwarded-For', '233.233.233.233'); await request.get('/test/2').set('X-Forwarded-For', '233.233.233.234'); @@ -42,8 +43,11 @@ describe('debug', () => { case 'request amount:': expect(value).toBe('8'); break; + case 'ETag Matched:': + expect(value).toBe('1'); + break; case 'hot routes:': - expect(value).toBe('3 /test/:id
'); + expect(value).toBe('7 /test/:id
'); break; case 'hot paths:': expect(value).toBe('3 /test/1
2 /test/2
2 /test/empty
1 /
'); @@ -52,7 +56,7 @@ describe('debug', () => { expect(value).toBe('5 233.233.233.233
3 233.233.233.234
'); break; case 'hot error routes:': - expect(value).toBe('1 /test/:id
'); + expect(value).toBe('2 /test/:id
'); break; case 'hot error paths:': expect(value).toBe('2 /test/empty
'); diff --git a/test/middleware/header.js b/test/middleware/header.js index 3e19a802e..1e206f5f9 100644 --- a/test/middleware/header.js +++ b/test/middleware/header.js @@ -5,6 +5,7 @@ jest.mock('request-promise-native'); const server = require('../../lib/index'); const request = supertest(server); const config = require('../../lib/config').value; +let etag; afterAll(() => { server.close(); @@ -19,5 +20,14 @@ describe('header', () => { expect(response.headers['cache-control']).toBe(`public, max-age=${config.cache.routeExpire}`); expect(response.headers['last-modified']).toBe(response.text.match(/(.*)<\/lastBuildDate>/)[1]); expect(response.headers['rsshub-node']).toBe('mock'); + expect(response.headers.etag).not.toBe(undefined); + etag = response.headers.etag; + }); + + it(`etag`, async () => { + const response = await request.get('/test/1').set('If-None-Match', etag); + expect(response.status).toBe(304); + expect(response.text).toBe(''); + expect(response.headers['last-modified']).toBe(undefined); }); });