diff --git a/modules/__tests__/browseDirectory-test.js b/modules/__tests__/browseDirectory-test.js index c540374..7d64f39 100644 --- a/modules/__tests__/browseDirectory-test.js +++ b/modules/__tests__/browseDirectory-test.js @@ -8,6 +8,20 @@ describe('A request to browse a directory', () => { server = createServer(); }); + describe('with no version specified', () => { + it('redirects to the latest version', done => { + request(server) + .get('/browse/react/') + .end((err, res) => { + expect(res.statusCode).toBe(302); + expect(res.headers.location).toMatch( + /\/browse\/react@\d+\.\d+\.\d+\// + ); + done(); + }); + }); + }); + describe('when the directory exists', () => { it('returns an HTML page', done => { request(server) diff --git a/modules/__tests__/browseRedirect-test.js b/modules/__tests__/browseRedirect-test.js new file mode 100644 index 0000000..c88cf7c --- /dev/null +++ b/modules/__tests__/browseRedirect-test.js @@ -0,0 +1,34 @@ +import request from 'supertest'; + +import createServer from '../createServer.js'; + +describe('A request with a trailing slash', () => { + let server; + beforeEach(() => { + server = createServer(); + }); + + describe('that does not include the version number', () => { + it('redirects to /browse', done => { + request(server) + .get('/react/') + .end((err, res) => { + expect(res.statusCode).toBe(302); + expect(res.headers.location).toEqual('/browse/react/'); + done(); + }); + }); + }); + + describe('that includes the version number', () => { + it('redirects to /browse', done => { + request(server) + .get('/react@16.8.0/') + .end((err, res) => { + expect(res.statusCode).toBe(302); + expect(res.headers.location).toEqual('/browse/react@16.8.0/'); + done(); + }); + }); + }); +}); diff --git a/modules/middleware/validateVersion.js b/modules/middleware/validateVersion.js index 0a76322..90f87f8 100644 --- a/modules/middleware/validateVersion.js +++ b/modules/middleware/validateVersion.js @@ -10,7 +10,8 @@ function semverRedirect(req, res, newVersion) { }) .redirect( 302, - createPackageURL(req.packageName, newVersion, req.filename, req.search) + req.baseUrl + + createPackageURL(req.packageName, newVersion, req.filename, req.search) ); }