mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-19 11:01:15 +00:00
Co-authored-by: Dana Lee <dana@n8n.io> Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { UnexpectedError } from 'n8n-workflow';
|
|
import nock from 'nock';
|
|
|
|
import { verifyIntegrity } from '../npm-utils';
|
|
|
|
describe('verifyIntegrity', () => {
|
|
const registryUrl = 'https://registry.npmjs.org';
|
|
const packageName = 'test-package';
|
|
const version = '1.0.0';
|
|
const integrity = 'sha512-hash==';
|
|
|
|
afterEach(() => {
|
|
nock.cleanAll();
|
|
});
|
|
|
|
it('should verify integrity successfully', async () => {
|
|
nock(registryUrl)
|
|
.get(`/${encodeURIComponent(packageName)}/${version}`)
|
|
.reply(200, {
|
|
dist: { integrity },
|
|
});
|
|
|
|
await expect(
|
|
verifyIntegrity(packageName, version, registryUrl, integrity),
|
|
).resolves.not.toThrow();
|
|
});
|
|
|
|
it('should throw error if checksum does not match', async () => {
|
|
const wrongHash = 'sha512-nottherighthash==';
|
|
|
|
nock(registryUrl)
|
|
.get(`/${encodeURIComponent(packageName)}/${version}`)
|
|
.reply(200, {
|
|
dist: { integrity },
|
|
});
|
|
|
|
await expect(verifyIntegrity(packageName, version, registryUrl, wrongHash)).rejects.toThrow(
|
|
UnexpectedError,
|
|
);
|
|
});
|
|
|
|
it('should throw error if metadata request fails', async () => {
|
|
nock(registryUrl)
|
|
.get(`/${encodeURIComponent(packageName)}/${version}`)
|
|
.reply(500);
|
|
|
|
await expect(verifyIntegrity(packageName, version, registryUrl, integrity)).rejects.toThrow();
|
|
});
|
|
|
|
it('should throw UnexpectedError and preserve original error as cause', async () => {
|
|
const integrity = 'sha512-somerandomhash==';
|
|
|
|
nock(registryUrl)
|
|
.get(`/${encodeURIComponent(packageName)}/${version}`)
|
|
.replyWithError('Network failure');
|
|
|
|
try {
|
|
await verifyIntegrity(packageName, version, registryUrl, integrity);
|
|
throw new Error('Expected error was not thrown');
|
|
} catch (error: any) {
|
|
expect(error).toBeInstanceOf(UnexpectedError);
|
|
expect(error.message).toBe('Checksum verification failed');
|
|
expect(error.cause).toBeDefined();
|
|
expect(error.cause.message).toContain('Network failure');
|
|
}
|
|
});
|
|
});
|