2021-03-06 18:56:45 +01:00
|
|
|
import path from 'path';
|
|
|
|
import supertest from 'supertest';
|
|
|
|
|
2021-09-26 00:08:00 +02:00
|
|
|
import { HEADERS, HEADER_TYPE, HTTP_STATUS } from '@verdaccio/core';
|
2021-10-29 17:33:05 +02:00
|
|
|
import { setup } from '@verdaccio/logger';
|
|
|
|
import { IGetPackageOptions } from '@verdaccio/store';
|
|
|
|
|
2021-03-06 18:56:45 +01:00
|
|
|
import { initializeServer } from './helper';
|
|
|
|
|
|
|
|
setup([]);
|
|
|
|
|
|
|
|
const mockManifest = jest.fn();
|
2021-05-07 06:43:29 +02:00
|
|
|
const mockQuery = jest.fn(() => [
|
|
|
|
{ ref: 'pkg1', score: 1 },
|
|
|
|
{ ref: 'pk2', score: 0.9 },
|
|
|
|
]);
|
2021-03-06 18:56:45 +01:00
|
|
|
jest.mock('@verdaccio/ui-theme', () => mockManifest());
|
|
|
|
|
|
|
|
jest.mock('@verdaccio/store', () => ({
|
|
|
|
Storage: class {
|
|
|
|
public init() {
|
|
|
|
return Promise.resolve();
|
|
|
|
}
|
|
|
|
public getPackage({ name, callback }: IGetPackageOptions) {
|
|
|
|
callback(null, {
|
|
|
|
name,
|
|
|
|
['dist-tags']: {
|
|
|
|
latest: '1.0.0',
|
|
|
|
},
|
|
|
|
versions: {
|
|
|
|
['1.0.0']: {
|
|
|
|
name,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
SearchInstance: {
|
|
|
|
configureStorage: () => {},
|
|
|
|
query: () => mockQuery(),
|
|
|
|
},
|
|
|
|
}));
|
|
|
|
|
|
|
|
describe('test web server', () => {
|
|
|
|
beforeAll(() => {
|
2021-04-02 15:59:47 +02:00
|
|
|
mockManifest.mockReturnValue(() => ({
|
2021-03-06 18:56:45 +01:00
|
|
|
staticPath: path.join(__dirname, 'static'),
|
2021-04-02 15:59:47 +02:00
|
|
|
manifestFiles: {
|
|
|
|
js: ['runtime.js', 'vendors.js', 'main.js'],
|
|
|
|
},
|
2021-03-06 18:56:45 +01:00
|
|
|
manifest: require('./partials/manifest/manifest.json'),
|
2021-04-02 15:59:47 +02:00
|
|
|
}));
|
2021-03-06 18:56:45 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
jest.clearAllMocks();
|
|
|
|
mockManifest.mockClear();
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should OK to search api', async () => {
|
|
|
|
const response = await supertest(await initializeServer('default-test.yaml'))
|
|
|
|
.get('/-/verdaccio/search/keyword')
|
|
|
|
.set('Accept', HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HTTP_STATUS.OK);
|
|
|
|
expect(response.body).toHaveLength(2);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should 404 to search api', async () => {
|
|
|
|
mockQuery.mockReturnValue([]);
|
|
|
|
const response = await supertest(await initializeServer('default-test.yaml'))
|
|
|
|
.get('/-/verdaccio/search/notFound')
|
|
|
|
.set('Accept', HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HTTP_STATUS.OK);
|
|
|
|
expect(response.body).toHaveLength(0);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should fail search api', async () => {
|
|
|
|
mockQuery.mockImplementation(() => {
|
2021-05-07 06:43:29 +02:00
|
|
|
return [
|
|
|
|
{ ref: 'aa', score: 1 },
|
|
|
|
{ ref: 'bb', score: 0.8 },
|
|
|
|
{ ref: 'cc', score: 0.6 },
|
|
|
|
];
|
2021-03-06 18:56:45 +01:00
|
|
|
});
|
|
|
|
const response = await supertest(await initializeServer('default-test.yaml'))
|
|
|
|
.get('/-/verdaccio/search/notFound')
|
|
|
|
.set('Accept', HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HTTP_STATUS.OK);
|
|
|
|
expect(response.body).toHaveLength(3);
|
|
|
|
});
|
|
|
|
});
|