diff --git a/__tests__/deny.test.ts b/__tests__/deny.test.ts index e3cf026..e5888b9 100644 --- a/__tests__/deny.test.ts +++ b/__tests__/deny.test.ts @@ -1,11 +1,7 @@ import {expect, jest, test} from '@jest/globals' import {Change, Changes} from '../src/schemas' -import { - createMavenTestChange, - createPipTestChange, - createRubyTestChange, - createTestChange -} from './fixtures/create-test-change' +import {createTestChange} from './fixtures/create-test-change' +import {getDeniedChanges} from '../src/deny' jest.mock('@actions/core') @@ -19,7 +15,6 @@ const mockOctokit = { } } -let getDeniedChanges: Function let npmChange: Change let rubyChange: Change let pipChange: Change @@ -43,22 +38,18 @@ beforeEach(async () => { // true for BSD, false for all others return jest.fn((license: string, _: string): boolean => license === 'BSD') }) - // eslint-disable-next-line @typescript-eslint/no-require-imports - ;({getDeniedChanges} = require('../src/deny')) - npmChange = createTestChange() - rubyChange = createRubyTestChange() - pipChange = createPipTestChange() - mvnChange = createMavenTestChange() + npmChange = createTestChange({ecosystem: 'npm'}) + rubyChange = createTestChange({ecosystem: 'rubygems'}) + pipChange = createTestChange({ecosystem: 'pip'}) + mvnChange = createTestChange({ecosystem: 'maven'}) }) test('denies packages from the deny packages list', async () => { const changes: Changes = [npmChange, rubyChange] - const deniedChanges = await getDeniedChanges( - changes, - ['pkg:gem/actionsomething@3.2.0'], - [] - ) + const deniedChanges = await getDeniedChanges(changes, [ + 'pkg:gem/actionsomething@3.2.0' + ]) expect(deniedChanges[0]).toBe(rubyChange) expect(deniedChanges.length).toEqual(1) @@ -67,11 +58,9 @@ test('denies packages from the deny packages list', async () => { test('denies packages only for the specified version from deny packages list', async () => { const packageWithDifferentVersion = 'pkg:npm/lodash@1.2.3' const changes: Changes = [npmChange] - const deniedChanges = await getDeniedChanges( - changes, - [packageWithDifferentVersion], - [] - ) + const deniedChanges = await getDeniedChanges(changes, [ + packageWithDifferentVersion + ]) expect(deniedChanges.length).toEqual(0) }) @@ -83,11 +72,7 @@ test('if no specified version from deny packages list, it will treat package as createTestChange({name: 'lodash', version: '7.8.9'}) ] const denyAllLodashVersions = 'pkg:npm/lodash' - const deniedChanges = await getDeniedChanges( - changes, - [denyAllLodashVersions], - [] - ) + const deniedChanges = await getDeniedChanges(changes, [denyAllLodashVersions]) expect(deniedChanges.length).toEqual(3) }) diff --git a/__tests__/fixtures/create-test-change.ts b/__tests__/fixtures/create-test-change.ts index 979c3e2..30d5653 100644 --- a/__tests__/fixtures/create-test-change.ts +++ b/__tests__/fixtures/create-test-change.ts @@ -101,29 +101,19 @@ const defaultMavenChange: Change = { ] } -const createTestChange = (overwrites: Partial = {}): Change => ({ - ...defaultNpmChange, - ...overwrites -}) - -const createRubyTestChange = (overwrites: Partial = {}): Change => ({ - ...defaultRubyChange, - ...overwrites -}) - -const createPipTestChange = (overwrites: Partial = {}): Change => ({ - ...defaultPipChange, - ...overwrites -}) - -const createMavenTestChange = (overwrites: Partial = {}): Change => ({ - ...defaultMavenChange, - ...overwrites -}) - -export { - createTestChange, - createRubyTestChange, - createPipTestChange, - createMavenTestChange +const ecosystemToDefaultChange: {[key: string]: Change} = { + npm: defaultNpmChange, + rubygems: defaultRubyChange, + pip: defaultPipChange, + maven: defaultMavenChange } + +const createTestChange = (overwrites: Partial = {}): Change => { + const ecosystem = overwrites.ecosystem || 'npm' + return { + ...ecosystemToDefaultChange[ecosystem], + ...overwrites + } +} + +export {createTestChange} diff --git a/src/deny.ts b/src/deny.ts index 2614306..60c9bf3 100644 --- a/src/deny.ts +++ b/src/deny.ts @@ -3,21 +3,22 @@ import * as core from '@actions/core' export async function getDeniedChanges( changes: Change[], - deniedPackages: string[], - deniedGroups: string[] + deniedPackages: string[] = [], + deniedGroups: string[] = [] ): Promise { const changesDenied: Change[] = [] let hasDeniedPackage = false for (const change of changes) { - change.name = change.name.toLowerCase() - const [name, version] = change.package_url.toLowerCase().split('@') + const [packageName, packageVersion] = change.package_url + .toLowerCase() + .split('@') for (const denied of deniedPackages) { const [deniedName, deniedVersion] = denied.toLowerCase().split('@') if ( - (!deniedVersion || version === deniedVersion) && - name === deniedName + (!deniedVersion || packageVersion === deniedVersion) && + packageName === deniedName ) { changesDenied.push(change) hasDeniedPackage = true @@ -25,7 +26,7 @@ export async function getDeniedChanges( } for (const denied of deniedGroups) { - if (name.startsWith(denied.toLowerCase())) { + if (packageName.startsWith(denied.toLowerCase())) { changesDenied.push(change) hasDeniedPackage = true }