test: etag

This commit is contained in:
DIYgod 2020-09-29 19:00:24 +08:00
parent 6ec230f58f
commit 3997265a4f
No known key found for this signature in database
GPG Key ID: D159328F47A80DCA
3 changed files with 19 additions and 5 deletions

View File

@ -117,7 +117,7 @@
},
"jest": {
"testMatch": [
"**/test/**/parameter.js"
"**/test/**/*.js"
],
"testPathIgnorePatterns": [
"/node_modules/",

View File

@ -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<br>');
expect(value).toBe('7 /test/:id<br>');
break;
case 'hot paths:':
expect(value).toBe('3 /test/1<br>2 /test/2<br>2 /test/empty<br>1 /<br>');
@ -52,7 +56,7 @@ describe('debug', () => {
expect(value).toBe('5 233.233.233.233<br>3 233.233.233.234<br>');
break;
case 'hot error routes:':
expect(value).toBe('1 /test/:id<br>');
expect(value).toBe('2 /test/:id<br>');
break;
case 'hot error paths:':
expect(value).toBe('2 /test/empty<br>');

View File

@ -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>(.*)<\/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);
});
});