2022-01-09 20:51:50 +01:00
|
|
|
import _ from 'lodash';
|
2018-06-30 01:20:27 +02:00
|
|
|
import path from 'path';
|
2022-01-09 20:51:50 +01:00
|
|
|
|
2023-03-18 22:40:34 +01:00
|
|
|
import { normalisePackageAccess } from '@verdaccio/config';
|
|
|
|
|
|
|
|
import { hasProxyTo } from '../../../../src/lib/config-utils';
|
2022-01-09 20:51:50 +01:00
|
|
|
import { parseConfigFile } from '../../../../src/lib/utils';
|
2018-06-30 01:20:27 +02:00
|
|
|
|
|
|
|
describe('Config Utilities', () => {
|
2019-05-22 07:50:14 +02:00
|
|
|
const parseConfigurationFile = (conf) => {
|
|
|
|
const { name, ext } = path.parse(conf);
|
|
|
|
const format = ext.startsWith('.') ? ext.substring(1) : 'yaml';
|
|
|
|
|
|
|
|
return path.join(__dirname, `../../partials/config/${format}/${name}.${format}`);
|
2018-06-30 01:20:27 +02:00
|
|
|
};
|
|
|
|
|
2018-07-04 00:12:28 +02:00
|
|
|
describe('hasProxyTo', () => {
|
|
|
|
test('should test basic config', () => {
|
2023-01-18 22:49:28 +01:00
|
|
|
const packages = normalisePackageAccess(
|
|
|
|
parseConfigFile(parseConfigurationFile('pkgs-basic')).packages
|
|
|
|
);
|
2018-07-04 00:12:28 +02:00
|
|
|
// react
|
|
|
|
expect(hasProxyTo('react', 'facebook', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('react', 'google', packages)).toBeFalsy();
|
|
|
|
// vue
|
|
|
|
expect(hasProxyTo('vue', 'google', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('vue', 'fake', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('vue', 'npmjs', packages)).toBeTruthy();
|
|
|
|
// angular
|
|
|
|
expect(hasProxyTo('angular', 'google', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('angular', 'facebook', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('angular', 'npmjs', packages)).toBeTruthy();
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should test resolve based on custom package access', () => {
|
2023-01-18 22:49:28 +01:00
|
|
|
const packages = normalisePackageAccess(
|
|
|
|
parseConfigFile(parseConfigurationFile('pkgs-custom')).packages
|
|
|
|
);
|
2018-07-04 00:12:28 +02:00
|
|
|
// react
|
|
|
|
expect(hasProxyTo('react', 'facebook', packages)).toBeTruthy();
|
|
|
|
expect(hasProxyTo('react', 'google', packages)).toBeFalsy();
|
|
|
|
// vue
|
|
|
|
expect(hasProxyTo('vue', 'google', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('vue', 'fake', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('vue', 'npmjs', packages)).toBeTruthy();
|
|
|
|
// angular
|
|
|
|
expect(hasProxyTo('angular', 'google', packages)).toBeTruthy();
|
|
|
|
expect(hasProxyTo('angular', 'facebook', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('angular', 'npmjs', packages)).toBeFalsy();
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should not resolve any proxy', () => {
|
2023-01-18 22:49:28 +01:00
|
|
|
const packages = normalisePackageAccess(
|
|
|
|
parseConfigFile(parseConfigurationFile('pkgs-empty')).packages
|
|
|
|
);
|
2018-07-04 00:12:28 +02:00
|
|
|
// react
|
|
|
|
expect(hasProxyTo('react', 'npmjs', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('react', 'npmjs', packages)).toBeFalsy();
|
|
|
|
// vue
|
|
|
|
expect(hasProxyTo('vue', 'npmjs', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('vue', 'npmjs', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('vue', 'npmjs', packages)).toBeFalsy();
|
|
|
|
// angular
|
|
|
|
expect(hasProxyTo('angular', 'npmjs', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('angular', 'npmjs', packages)).toBeFalsy();
|
|
|
|
expect(hasProxyTo('angular', 'npmjs', packages)).toBeFalsy();
|
|
|
|
// private
|
|
|
|
expect(hasProxyTo('private', 'fake', packages)).toBeFalsy();
|
|
|
|
});
|
|
|
|
});
|
2018-06-30 01:20:27 +02:00
|
|
|
});
|