Merge pull request #888 from ellenfieldn/allow-deny-package-removal
Allow deny package removal
This commit is contained in:
@@ -134,3 +134,62 @@ test('allows packages not defined in the deny packages and groups list', async (
|
|||||||
|
|
||||||
expect(deniedChanges.length).toEqual(0)
|
expect(deniedChanges.length).toEqual(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('deny packages does not prevent removal of denied packages', async () => {
|
||||||
|
const changes: Changes = [
|
||||||
|
createTestChange({
|
||||||
|
change_type: 'added',
|
||||||
|
name: 'deny-by-name-and-version',
|
||||||
|
version: '1.0.0',
|
||||||
|
ecosystem: 'npm'
|
||||||
|
}),
|
||||||
|
createTestChange({
|
||||||
|
change_type: 'removed',
|
||||||
|
name: 'pass-by-name-and-version',
|
||||||
|
version: '1.0.0',
|
||||||
|
ecosystem: 'npm'
|
||||||
|
}),
|
||||||
|
createTestChange({
|
||||||
|
change_type: 'added',
|
||||||
|
name: 'deny-by-name',
|
||||||
|
version: '1.0.0',
|
||||||
|
ecosystem: 'npm'
|
||||||
|
}),
|
||||||
|
createTestChange({
|
||||||
|
change_type: 'removed',
|
||||||
|
name: 'pass-by-name',
|
||||||
|
version: '1.0.0',
|
||||||
|
ecosystem: 'npm'
|
||||||
|
}),
|
||||||
|
createTestChange({
|
||||||
|
change_type: 'added',
|
||||||
|
package_url: 'pkg:npm/org.test.deny.by.namespace/[email protected]',
|
||||||
|
ecosystem: 'npm'
|
||||||
|
}),
|
||||||
|
createTestChange({
|
||||||
|
change_type: 'removed',
|
||||||
|
package_url: 'pkg:npm/org.test.pass.by.namespace/[email protected]',
|
||||||
|
ecosystem: 'npm'
|
||||||
|
})
|
||||||
|
]
|
||||||
|
const deniedPackages = createTestPURLs([
|
||||||
|
'pkg:npm/org.test.deny.by/[email protected]',
|
||||||
|
'pkg:npm/org.test.pass.by/[email protected]',
|
||||||
|
'pkg:npm/org.test.deny.by/deny-by-name',
|
||||||
|
'pkg:npm/org.test.pass.by/pass-by-name'
|
||||||
|
])
|
||||||
|
const deniedGroups = createTestPURLs([
|
||||||
|
'pkg:npm/org.test.deny.by.namespace/',
|
||||||
|
'pkg:npm/org.test.pass.by.namespace/'
|
||||||
|
])
|
||||||
|
const deniedChanges = await getDeniedChanges(
|
||||||
|
changes,
|
||||||
|
deniedPackages,
|
||||||
|
deniedGroups
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(deniedChanges.length).toEqual(3)
|
||||||
|
expect(deniedChanges[0]).toBe(changes[0])
|
||||||
|
expect(deniedChanges[1]).toBe(changes[2])
|
||||||
|
expect(deniedChanges[2]).toBe(changes[4])
|
||||||
|
})
|
||||||
|
|||||||
+3
@@ -182,6 +182,9 @@ function getDeniedChanges(changes_1) {
|
|||||||
return __awaiter(this, arguments, void 0, function* (changes, deniedPackages = [], deniedGroups = []) {
|
return __awaiter(this, arguments, void 0, function* (changes, deniedPackages = [], deniedGroups = []) {
|
||||||
const changesDenied = [];
|
const changesDenied = [];
|
||||||
for (const change of changes) {
|
for (const change of changes) {
|
||||||
|
if (change.change_type === 'removed') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
for (const denied of deniedPackages) {
|
for (const denied of deniedPackages) {
|
||||||
if ((!denied.version || change.version === denied.version) &&
|
if ((!denied.version || change.version === denied.version) &&
|
||||||
change.name === denied.name) {
|
change.name === denied.name) {
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -10,6 +10,10 @@ export async function getDeniedChanges(
|
|||||||
const changesDenied: Change[] = []
|
const changesDenied: Change[] = []
|
||||||
|
|
||||||
for (const change of changes) {
|
for (const change of changes) {
|
||||||
|
if (change.change_type === 'removed') {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
for (const denied of deniedPackages) {
|
for (const denied of deniedPackages) {
|
||||||
if (
|
if (
|
||||||
(!denied.version || change.version === denied.version) &&
|
(!denied.version || change.version === denied.version) &&
|
||||||
|
|||||||
Reference in New Issue
Block a user