Add tests for /browse redirects
This commit is contained in:
		@ -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)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										34
									
								
								modules/__tests__/browseRedirect-test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								modules/__tests__/browseRedirect-test.js
									
									
									
									
									
										Normal file
									
								
							@ -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();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
@ -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)
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user