This commit is contained in:
Reinier Criel 2026-01-27 11:44:39 -08:00
parent 6c65fb3f4c
commit a011424bf4

View file

@ -24,22 +24,24 @@ describe("E2E: DNS failure resilience", () => {
} }
}); });
it("should not crash when the malware database is unreachable", async () => { it("should not crash when the npm registry is unreachable", async () => {
const shell = await container.openShell("zsh"); const shell = await container.openShell("zsh");
// Make the malware database domain unreachable // Make the npm registry domain unreachable.
// This forces fetchMalwareDatabase to fail // `npm install lodash` talks to https://registry.npmjs.org/ for both metadata and tarballs.
await shell.runCommand( await shell.runCommand(
'echo "127.0.0.1 malware-list.aikido.dev" >> /etc/hosts' 'echo "127.0.0.1 registry.npmjs.org" >> /etc/hosts'
); );
const result = await shell.runCommand( const result = await shell.runCommand(
"npm install lodash --safe-chain-logging=verbose" // Fail fast so the shell runner doesn't time out.
// Also disable extra network calls that could introduce noise.
"npm install lodash --no-audit --no-fund --fetch-retries=0 --fetch-timeout=2000 --safe-chain-logging=verbose"
); );
assert.ok( assert.ok(
result.output.includes("Safe-chain: Error handling request"), result.output.includes("registry.npmjs.org"),
`Output did not include expected error handling message. Output was:\n${result.output}` `Output did not reference the npm registry host; /etc/hosts override may not have applied. Output was:\n${result.output}`
); );
// Ensure it did NOT crash with Unhandled Promise Rejection // Ensure it did NOT crash with Unhandled Promise Rejection