mirror of
https://github.com/verdaccio/verdaccio.git
synced 2024-11-13 03:35:52 +01:00
2e157fb134
match package access normalise
108 lines
3.6 KiB
JavaScript
108 lines
3.6 KiB
JavaScript
// @flow
|
|
import path from 'path';
|
|
import {spliceURL} from '../../../src/utils/string';
|
|
import {parseConfigFile} from '../../../src/lib/utils';
|
|
import {normalisePackageAccess} from '../../../src/lib/config-utils';
|
|
import {PACKAGE_ACCESS, ROLES} from '../../../src/lib/constants';
|
|
|
|
describe('Config Utilities', () => {
|
|
|
|
const parsePartial = (name) => {
|
|
return path.join(__dirname, `../partials/config/yaml/${name}.yaml`);
|
|
};
|
|
|
|
describe('getMatchedPackagesSpec', () => {
|
|
test('should test basic conversion', ()=> {
|
|
const {packages} = parseConfigFile(parsePartial('pkgs-basic'));
|
|
const access = normalisePackageAccess(packages);
|
|
|
|
expect(access).toBeDefined();
|
|
const scoped = access[`${PACKAGE_ACCESS.SCOPE}`];
|
|
const all = access[`${PACKAGE_ACCESS.ALL}`];
|
|
|
|
expect(scoped).toBeDefined();
|
|
expect(all).toBeDefined();
|
|
});
|
|
|
|
test('should test multi group', ()=> {
|
|
const {packages} = parseConfigFile(parsePartial('pkgs-multi-group'));
|
|
const access = normalisePackageAccess(packages);
|
|
|
|
expect(access).toBeDefined();
|
|
const scoped = access[`${PACKAGE_ACCESS.SCOPE}`];
|
|
|
|
const all = access[`${PACKAGE_ACCESS.ALL}`];
|
|
|
|
expect(scoped).toBeDefined();
|
|
expect(scoped.access).toContain('$all');
|
|
expect(scoped.publish).toHaveLength(2);
|
|
expect(scoped.publish).toContain('admin');
|
|
expect(scoped.publish).toContain('superadmin');
|
|
|
|
expect(all).toBeDefined();
|
|
expect(all.access).toHaveLength(3);
|
|
expect(all.access).toContain('$all');
|
|
expect(all.publish).toHaveLength(1);
|
|
expect(all.publish).toContain('admin');
|
|
|
|
});
|
|
|
|
|
|
test('should deprecated packages props', ()=> {
|
|
const {packages} = parseConfigFile(parsePartial('deprecated-pkgs-basic'));
|
|
const access = normalisePackageAccess(packages);
|
|
|
|
expect(access).toBeDefined();
|
|
const scoped = access[`${PACKAGE_ACCESS.SCOPE}`];
|
|
const all = access[`${PACKAGE_ACCESS.ALL}`];
|
|
const react = access['react-*'];
|
|
|
|
expect(react).toBeDefined();
|
|
expect(react.access[0]).toBe(ROLES.$ALL);
|
|
expect(react.publish[0]).toBe('admin');
|
|
expect(react.proxy[0]).toBe('uplink2');
|
|
expect(react.storage).toBeDefined();
|
|
|
|
expect(react.storage).toBe('react-storage');
|
|
expect(scoped).toBeDefined();
|
|
expect(scoped.storage).not.toBeDefined();
|
|
expect(all).toBeDefined();
|
|
expect(all.access).toBeDefined();
|
|
expect(all.storage).not.toBeDefined();
|
|
expect(all.publish).toBeDefined();
|
|
expect(all.proxy).toBeDefined();
|
|
expect(all.allow_access).toBeUndefined();
|
|
expect(all.allow_publish).toBeUndefined();
|
|
expect(all.proxy_access).toBeUndefined();
|
|
});
|
|
|
|
test('should check not default packages access', ()=> {
|
|
const {packages} = parseConfigFile(parsePartial('pkgs-empty'));
|
|
const access = normalisePackageAccess(packages);
|
|
expect(access).toBeDefined();
|
|
const scoped = access[`${PACKAGE_ACCESS.SCOPE}`];
|
|
expect(scoped).toBeUndefined();
|
|
const all = access[`${PACKAGE_ACCESS.ALL}`];
|
|
|
|
expect(all).toBeDefined();
|
|
expect(all.access).toBeUndefined();
|
|
expect(all.publish).toBeUndefined();
|
|
|
|
});
|
|
});
|
|
|
|
describe('spliceURL', () => {
|
|
test('should splice two strings and generate a url', () => {
|
|
const url: string = spliceURL('http://domain.com', '/-/static/logo.png');
|
|
|
|
expect(url).toMatch('http://domain.com/-/static/logo.png');
|
|
});
|
|
|
|
test('should splice a empty strings and generate a url', () => {
|
|
const url: string = spliceURL('', '/-/static/logo.png');
|
|
|
|
expect(url).toMatch('/-/static/logo.png');
|
|
});
|
|
});
|
|
});
|