2021-03-06 12:56:45 -05:00
|
|
|
import path from 'path';
|
|
|
|
import supertest from 'supertest';
|
2024-10-20 12:26:36 -05:00
|
|
|
import { afterEach, beforeAll, describe, expect, test, vi } from 'vitest';
|
2021-03-06 12:56:45 -05:00
|
|
|
|
2021-09-25 17:08:00 -05:00
|
|
|
import { HEADERS, HEADER_TYPE, HTTP_STATUS } from '@verdaccio/core';
|
2021-10-29 10:33:05 -05:00
|
|
|
import { setup } from '@verdaccio/logger';
|
2022-03-27 14:42:52 -05:00
|
|
|
import { publishVersion } from '@verdaccio/test-helper';
|
2021-10-29 10:33:05 -05:00
|
|
|
|
2021-03-06 12:56:45 -05:00
|
|
|
import { initializeServer } from './helper';
|
|
|
|
|
2024-10-20 12:26:36 -05:00
|
|
|
setup({});
|
2021-03-06 12:56:45 -05:00
|
|
|
|
2024-10-20 12:26:36 -05:00
|
|
|
const mockManifest = vi.fn();
|
|
|
|
vi.mock('@verdaccio/ui-theme', () => mockManifest());
|
2021-03-06 12:56:45 -05:00
|
|
|
|
|
|
|
describe('test web server', () => {
|
|
|
|
beforeAll(() => {
|
2021-04-02 08:59:47 -05:00
|
|
|
mockManifest.mockReturnValue(() => ({
|
2021-03-06 12:56:45 -05:00
|
|
|
staticPath: path.join(__dirname, 'static'),
|
2021-04-02 08:59:47 -05:00
|
|
|
manifestFiles: {
|
|
|
|
js: ['runtime.js', 'vendors.js', 'main.js'],
|
|
|
|
},
|
2021-03-06 12:56:45 -05:00
|
|
|
manifest: require('./partials/manifest/manifest.json'),
|
2021-04-02 08:59:47 -05:00
|
|
|
}));
|
2021-03-06 12:56:45 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
2024-10-20 12:26:36 -05:00
|
|
|
Date.now = vi.fn(() => new Date(Date.UTC(2017, 1, 14)).valueOf());
|
|
|
|
vi.clearAllMocks();
|
2021-03-06 12:56:45 -05:00
|
|
|
mockManifest.mockClear();
|
|
|
|
});
|
|
|
|
|
2022-03-27 14:42:52 -05:00
|
|
|
test('should find results to search api', async () => {
|
|
|
|
const app = await initializeServer('default-test.yaml');
|
|
|
|
await publishVersion(app, 'foo', '1.0.0');
|
|
|
|
const response = await supertest(app)
|
|
|
|
.get('/-/verdaccio/data/search/foo')
|
2021-03-06 12:56:45 -05:00
|
|
|
.set('Accept', HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HTTP_STATUS.OK);
|
2022-03-27 14:42:52 -05:00
|
|
|
expect(response.body).toHaveLength(1);
|
|
|
|
// FUTURE: we can improve here matching the right outcome
|
2021-03-06 12:56:45 -05:00
|
|
|
});
|
|
|
|
|
2022-03-27 14:42:52 -05:00
|
|
|
test('should found no results to search', async () => {
|
2021-03-06 12:56:45 -05:00
|
|
|
const response = await supertest(await initializeServer('default-test.yaml'))
|
2022-01-15 14:12:28 -05:00
|
|
|
.get('/-/verdaccio/data/search/notFound')
|
2021-03-06 12:56:45 -05:00
|
|
|
.set('Accept', HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HTTP_STATUS.OK);
|
|
|
|
expect(response.body).toHaveLength(0);
|
|
|
|
});
|
|
|
|
|
2022-03-27 14:42:52 -05:00
|
|
|
// TODO: need a way to make this fail
|
|
|
|
test.skip('should fail search api', async () => {
|
2021-03-06 12:56:45 -05:00
|
|
|
const response = await supertest(await initializeServer('default-test.yaml'))
|
2022-03-27 14:42:52 -05:00
|
|
|
.get('/-/verdaccio/data/search/thisWillFail')
|
2021-03-06 12:56:45 -05:00
|
|
|
.set('Accept', HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
|
|
|
|
.expect(HTTP_STATUS.OK);
|
|
|
|
expect(response.body).toHaveLength(3);
|
|
|
|
});
|
2022-03-27 14:42:52 -05:00
|
|
|
|
|
|
|
test.todo('search abort request');
|
|
|
|
// maybe these could be done in storage package to avoid have specifics on this level
|
|
|
|
test.todo('search allow request permissions');
|
|
|
|
test.todo('search query params, pagination etc');
|
2021-03-06 12:56:45 -05:00
|
|
|
});
|