test: whitelist in middleware/access-control

This commit is contained in:
DIYgod
2019-01-29 16:02:39 +08:00
parent 9f91279296
commit 23ba8aeca4
2 changed files with 32 additions and 11 deletions

View File

@@ -10,7 +10,8 @@
"docs:build": "vuepress build docs", "docs:build": "vuepress build docs",
"format": "eslint \"**/*.js\" --fix && prettier \"**/*.{js,json,md}\" --write", "format": "eslint \"**/*.js\" --fix && prettier \"**/*.{js,json,md}\" --write",
"lint": "eslint \"**/*.js\" && prettier-check \"**/*.{js,json,md}\"", "lint": "eslint \"**/*.js\" && prettier-check \"**/*.{js,json,md}\"",
"test": "npm run lint && NODE_ENV=test jest --coverage --runInBand --forceExit" "test": "npm run lint && NODE_ENV=test jest --coverage --runInBand --forceExit",
"jest": "NODE_ENV=test jest --runInBand --forceExit"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@@ -12,26 +12,46 @@ async function checkBlock(response) {
} }
afterEach(() => { afterEach(() => {
process.env.BLACKLIST = undefined; delete process.env.BLACKLIST;
delete process.env.WHITELIST;
jest.resetModules();
server.close(); server.close();
}); });
describe('access-control', () => { describe('access-control', () => {
it(`blacklist`, async () => { it(`blacklist`, async () => {
process.env.BLACKLIST = '/test/1,/test/2,233.233.233.233'; process.env.BLACKLIST = '/test/1,233.233.233.233';
server = require('../../lib/index').server; server = require('../../lib/index').server;
const request = supertest(server); const request = supertest(server);
const response1 = await request.get('/test/1'); const response11 = await request.get('/test/1');
checkBlock(response1); checkBlock(response11);
const response2 = await request.get('/test/2'); const response12 = await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
checkBlock(response2); checkBlock(response12);
const response31 = await request.get('/test/3'); const response21 = await request.get('/test/2');
expect(response31.status).toBe(200); expect(response21.status).toBe(200);
const response32 = await request.get('/test/3').set('X-Forwarded-For', '233.233.233.233'); const response22 = await request.get('/test/2').set('X-Forwarded-For', '233.233.233.233');
checkBlock(response32); checkBlock(response22);
});
it(`whitelist`, async () => {
process.env.WHITELIST = '/test/1,233.233.233.233';
server = require('../../lib/index').server;
const request = supertest(server);
const response11 = await request.get('/test/1');
expect(response11.status).toBe(200);
const response12 = await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
expect(response12.status).toBe(200);
const response21 = await request.get('/test/2');
checkBlock(response21);
const response22 = await request.get('/test/2').set('X-Forwarded-For', '233.233.233.233');
expect(response22.status).toBe(200);
}); });
}); });