1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-13 03:35:52 +01:00
verdaccio/test/unit/api/store.spec.js

94 lines
3.0 KiB
JavaScript
Raw Normal View History

2018-02-19 19:29:14 +01:00
// @flow
import _ from 'lodash';
// $FlowFixMe
import configExample from '../partials/config/index';
import AppConfig from '../../../src/lib/config';
import Storage from '../../../src/lib/storage';
import {setup} from '../../../src/lib/logger';
2018-02-19 19:29:14 +01:00
import type {Config} from '@verdaccio/types';
import type {IStorageHandler} from '../../../types/index';
2018-06-27 08:52:52 +02:00
import {API_ERROR, HTTP_STATUS} from '../../../src/lib/constants';
2018-06-24 22:39:09 +02:00
import {mockServer} from './mock';
import {DOMAIN_SERVERS} from '../../functional/config.functional';
2018-02-19 19:29:14 +01:00
setup(configExample.logs);
2018-06-24 22:39:09 +02:00
const mockServerPort: number = 55548;
2018-06-27 08:52:52 +02:00
const generateStorage = async function(port = mockServerPort, configDefault = configExample) {
const storageConfig = _.clone(configDefault);
2018-06-24 22:39:09 +02:00
const storage = `./unit/partials/store/test-storage-store.spec`;
2018-02-19 19:29:14 +01:00
storageConfig.self_path = __dirname;
storageConfig.storage = storage;
2018-06-24 22:39:09 +02:00
storageConfig.uplinks = {
npmjs: {
url: `http://${DOMAIN_SERVERS}:${port}`
}
};
const config: Config = new AppConfig(storageConfig);
const store: IStorageHandler = new Storage(config);
await store.init(config);
2018-02-19 19:29:14 +01:00
2018-06-24 22:39:09 +02:00
return store;
2018-02-19 19:29:14 +01:00
}
describe('StorageTest', () => {
2018-06-24 22:39:09 +02:00
let mockRegistry;
2018-02-19 19:29:14 +01:00
2018-06-24 22:39:09 +02:00
beforeAll(async () => {
mockRegistry = await mockServer(mockServerPort).init();
});
2018-02-19 19:29:14 +01:00
2018-06-24 22:39:09 +02:00
afterAll(function(done) {
mockRegistry[0].stop();
done();
});
2018-02-19 19:29:14 +01:00
2018-06-24 22:39:09 +02:00
test('should be defined', async () => {
const storage: IStorageHandler = await generateStorage();
2018-02-19 19:29:14 +01:00
expect(storage).toBeDefined();
2018-06-24 22:39:09 +02:00
});
2018-02-19 19:29:14 +01:00
2018-06-27 08:52:52 +02:00
describe('test _syncUplinksMetadata', () => {
test('should fetch from uplink jquery metadata from registry', async (done) => {
const storage: IStorageHandler = await generateStorage();
2018-02-19 19:29:14 +01:00
2018-06-27 08:52:52 +02:00
// $FlowFixMe
storage._syncUplinksMetadata('jquery', null, {}, (err, metadata, errors) => {
expect(err).toBeNull();
expect(metadata).toBeDefined();
expect(metadata).toBeInstanceOf(Object);
done();
});
2018-06-24 22:39:09 +02:00
});
2018-02-19 19:29:14 +01:00
2018-06-27 08:52:52 +02:00
test('should fails on fetch from uplink non existing from registry', async (done) => {
const storage: IStorageHandler = await generateStorage();
// $FlowFixMe
storage._syncUplinksMetadata('@verdaccio/404', null, {}, (err, metadata, errors) => {
expect(err).not.toBeNull();
expect(errors).toBeInstanceOf(Array);
expect(errors[0][0].statusCode).toBe(HTTP_STATUS.NOT_FOUND);
expect(errors[0][0].message).toMatch(API_ERROR.NOT_PACKAGE_UPLINK);
done();
});
});
test('should fails on fetch from uplink corrupted pkg from registry', async (done) => {
const storage: IStorageHandler = await generateStorage();
2018-02-19 19:29:14 +01:00
2018-06-27 08:52:52 +02:00
// $FlowFixMe
storage._syncUplinksMetadata('corrupted-package', null, {}, (err, metadata, errors) => {
expect(err).not.toBeNull();
expect(errors).toBeInstanceOf(Array);
expect(errors[0][0].statusCode).toBe(HTTP_STATUS.INTERNAL_ERROR);
expect(errors[0][0].message).toMatch(API_ERROR.BAD_STATUS_CODE);
done();
});
2018-06-24 22:39:09 +02:00
});
2018-02-19 19:29:14 +01:00
});
});