import request from 'supertest'; import createServer from '../createServer'; import clearBlacklist from './utils/clearBlacklist'; import withToken from './utils/withToken'; describe('The /api/blacklist endpoint', () => { let server; beforeEach(() => { server = createServer(); }); describe('POST /api/blacklist', () => { afterEach(clearBlacklist); describe('with no auth', () => { it('is forbidden', done => { request(server) .post('/api/blacklist') .end((err, res) => { expect(res.statusCode).toBe(403); done(); }); }); }); describe('with the "blacklist.add" scope', () => { it('can add to the blacklist', done => { withToken({ blacklist: { add: true } }, token => { request(server) .post('/api/blacklist') .send({ token, packageName: 'bad-package' }) .end((err, res) => { expect(res.statusCode).toBe(200); expect(res.body.ok).toBe(true); done(); }); }); }); }); }); describe('GET /api/blacklist', () => { describe('with no auth', () => { it('is forbidden', done => { request(server) .get('/api/blacklist') .end((err, res) => { expect(res.statusCode).toBe(403); done(); }); }); }); describe('with the "blacklist.read" scope', () => { it('can read the blacklist', done => { withToken({ blacklist: { read: true } }, token => { request(server) .get('/api/blacklist?token=' + token) .end((err, res) => { expect(res.statusCode).toBe(200); done(); }); }); }); }); }); describe('DELETE /api/blacklist', () => { describe('with no auth', () => { it('is forbidden', done => { request(server) .delete('/api/blacklist') .end((err, res) => { expect(res.statusCode).toBe(403); done(); }); }); }); describe('with the "blacklist.remove" scope', () => { it('can remove a package from the blacklist', done => { withToken({ blacklist: { remove: true } }, token => { request(server) .delete('/api/blacklist') .send({ token, packageName: 'bad-package' }) .end((err, res) => { expect(res.statusCode).toBe(200); expect(res.body.ok).toBe(true); done(); }); }); }); it('can remove a scoped package from the blacklist', done => { withToken({ blacklist: { remove: true } }, token => { request(server) .delete('/api/blacklist') .send({ token, packageName: '@scope/bad-package' }) .end((err, res) => { expect(res.statusCode).toBe(200); expect(res.body.ok).toBe(true); done(); }); }); }); }); }); });