const request = require('supertest'); const createServer = require('../createServer'); const clearBlacklist = require('./utils/clearBlacklist'); const withBlacklist = require('./utils/withBlacklist'); describe('The server', () => { let server; beforeEach(() => { server = createServer(); }); it('redirects /_meta to ?meta', done => { request(server) .get('/_meta/react') .end((err, res) => { expect(res.statusCode).toBe(301); expect(res.headers.location).toBe('/react?meta'); done(); }); }); it('redirects ?json to ?meta', done => { request(server) .get('/react?json') .end((err, res) => { expect(res.statusCode).toBe(301); expect(res.headers.location).toBe('/react?meta'); done(); }); }); it('redirects invalid query params', done => { request(server) .get('/react?main=index&invalid') .end((err, res) => { expect(res.statusCode).toBe(302); expect(res.headers.location).toBe('/react?main=index'); done(); }); }); it('rejects invalid package names', done => { request(server) .get('/_invalid/index.js') .end((err, res) => { expect(res.statusCode).toBe(403); done(); }); }); describe('blacklisted packages', () => { afterEach(clearBlacklist); it('does not serve blacklisted packages', done => { withBlacklist(['bad-package'], () => { request(server) .get('/bad-package/index.js') .end((err, res) => { expect(res.statusCode).toBe(403); done(); }); }); }); }); });