0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-16 21:56:25 -05:00
verdaccio/packages/web/test/api.search.test.ts
Juan Picado 558d78f32a feat: flexible user interface generator (#2070)
* feat: flexible template generator and manifest

* chore: add changeset

* chore: restore dep

* chore: add docs

* chore: update snapshots

* chore: update docker examples for v5

* chore: refactor web module

* chore: format

* chore: refactor web api endpoints

* test: add test for user login web

* chore: refactor endpoints

* chore: fix merge

* chore: fix merge

* Update ci.yml

* chore: test

* chore: add static

* chore: update script

* chore: fix e2e

* chore: fix method

* docs: update v5 relative docker example

* chore: update html render

* chore: update style

* Update .prettierignore

* chore: update changeset

* chore: use pnpm6 on run test

temporary ci

* chore: drop node 16 for pnpm 6

* chore: update ci

* chore: update ci

* chore: update ci

* chore: update ci

* chore: remove circle ci

* chore: better url prefix handling

* chore: format code

* chore: remove test node 10

* docs: add docker v5 relative revers proxy example

* chore: use base html tag

* chore: update test
2021-04-09 17:54:38 +02:00

92 lines
2.7 KiB
TypeScript

import path from 'path';
import supertest from 'supertest';
import { IGetPackageOptions } from '@verdaccio/store';
import { setup } from '@verdaccio/logger';
import { HEADERS, HEADER_TYPE, HTTP_STATUS } from '@verdaccio/commons-api';
import { initializeServer } from './helper';
setup([]);
const mockManifest = jest.fn();
const mockQuery = jest.fn(() => ['pkg1', 'pk2']);
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(() => {
mockManifest.mockReturnValue({
staticPath: path.join(__dirname, 'static'),
manifest: require('./partials/manifest/manifest.json'),
});
});
afterEach(() => {
jest.clearAllMocks();
mockManifest.mockClear();
});
test('should OK to search api', async () => {
mockManifest.mockReturnValue({
manifest: require('./partials/manifest/manifest.json'),
});
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 () => {
mockManifest.mockReturnValue({
manifest: require('./partials/manifest/manifest.json'),
});
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 () => {
mockManifest.mockReturnValue({
manifest: require('./partials/manifest/manifest.json'),
});
mockQuery.mockImplementation(() => {
return ['aa', 'bb', 'cc'];
});
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);
});
});