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