unpkg/modules/__tests__/server-test.js

68 lines
1.6 KiB
JavaScript

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();
});
});
});
});
});