File size: 2,204 Bytes
704e84f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import {
    collectInstallScriptIdentities,
    validateInstallScriptPolicy
} from './check-install-script-policy.mjs';
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';

describe('install script policy', () => {
    it('collects install-script identities from direct, nested, and scoped lockfile packages', () => {
        const identities = collectInstallScriptIdentities({
            packages: {
                '': { name: 'fixture' },
                'node_modules/esbuild': { version: '0.28.1', hasInstallScript: true },
                'node_modules/next/node_modules/sharp': { version: '0.34.5', hasInstallScript: true },
                'node_modules/example/node_modules/@scope/native-addon': {
                    version: '1.2.3',
                    hasInstallScript: true
                },
                'node_modules/ignored': { version: '1.0.0' },
                'packages/workspace/node_modules/workspace-native-addon': { version: '2.0.0', hasInstallScript: true }
            }
        });

        assert.deepEqual(identities, [
            '@scope/native-addon@1.2.3',
            'esbuild@0.28.1',
            'sharp@0.34.5',
            'workspace-native-addon@2.0.0'
        ]);
    });

    it('reports missing, stale, and invalid policy entries', () => {
        const result = validateInstallScriptPolicy(
            {
                packages: {
                    'node_modules/esbuild': { version: '0.28.1', hasInstallScript: true },
                    'node_modules/sharp': { version: '0.34.5', hasInstallScript: true }
                }
            },
            {
                allowScripts: {
                    'esbuild@0.28.1': true,
                    'left-pad@1.3.0': false,
                    'sharp@0.34.5': 'approved'
                }
            }
        );

        assert.deepEqual(result, {
            ok: false,
            installScriptIdentities: ['esbuild@0.28.1', 'sharp@0.34.5'],
            approved: ['esbuild@0.28.1'],
            denied: ['left-pad@1.3.0'],
            missing: ['sharp@0.34.5'],
            stale: ['left-pad@1.3.0'],
            invalid: ['sharp@0.34.5']
        });
    });
});