49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
import request from 'supertest';
|
|
|
|
import createServer from '../createServer.js';
|
|
|
|
describe('A request to browse a file', () => {
|
|
let server;
|
|
beforeEach(() => {
|
|
server = createServer();
|
|
});
|
|
|
|
describe('when the file exists', () => {
|
|
it('returns an HTML page', done => {
|
|
request(server)
|
|
.get('/browse/react@16.8.0/umd/react.production.min.js')
|
|
.end((err, res) => {
|
|
expect(res.statusCode).toBe(200);
|
|
expect(res.headers['content-type']).toMatch(/\btext\/html\b/);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when the file does not exist', () => {
|
|
it('returns a 404 HTML page', done => {
|
|
request(server)
|
|
.get('/browse/react@16.8.0/not-here.js')
|
|
.end((err, res) => {
|
|
expect(res.statusCode).toBe(404);
|
|
expect(res.headers['content-type']).toMatch(/\btext\/html\b/);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when the URL contains invalid query params', () => {
|
|
it('strips them from the URL', done => {
|
|
request(server)
|
|
.get('/browse/react@16.8.0/react.production.min.js?invalid')
|
|
.end((err, res) => {
|
|
expect(res.statusCode).toBe(302);
|
|
expect(res.headers.location).toBe(
|
|
'/browse/react@16.8.0/react.production.min.js'
|
|
);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|