evalstate's picture
download
raw
2.29 kB
import { afterEach, describe, expect, it, vi } from 'vitest';
import { assertExternalAddress, isIpInternalOrReserved } from './ip-policy.js';
const { lookupMock } = vi.hoisted(() => ({
lookupMock: vi.fn(),
}));
vi.mock('node:dns/promises', () => ({
lookup: lookupMock,
}));
describe('ip-policy', () => {
afterEach(() => {
lookupMock.mockReset();
delete process.env.ALLOW_INTERNAL_ADDRESS_HOSTS;
});
it('classifies internal/reserved IPv4 ranges', () => {
expect(isIpInternalOrReserved('127.0.0.1')).toBe(true);
expect(isIpInternalOrReserved('10.1.2.3')).toBe(true);
expect(isIpInternalOrReserved('172.20.10.2')).toBe(true);
expect(isIpInternalOrReserved('192.168.1.1')).toBe(true);
expect(isIpInternalOrReserved('8.8.8.8')).toBe(false);
});
it('classifies internal/reserved IPv6 ranges', () => {
expect(isIpInternalOrReserved('::1')).toBe(true);
expect(isIpInternalOrReserved('fc00::1')).toBe(true);
expect(isIpInternalOrReserved('fe80::1')).toBe(true);
expect(isIpInternalOrReserved('2001:db8::1')).toBe(true);
expect(isIpInternalOrReserved('2607:f8b0:4005:80a::200e')).toBe(false);
});
it('blocks internal literal addresses in assertExternalAddress', async () => {
await expect(assertExternalAddress('127.0.0.1')).rejects.toThrow('Blocked internal or reserved address');
await expect(assertExternalAddress('::1')).rejects.toThrow('Blocked internal or reserved address');
});
it('allows external literal addresses in assertExternalAddress', async () => {
await expect(assertExternalAddress('8.8.8.8')).resolves.toBeUndefined();
});
it('blocks hostnames resolving to internal addresses by default', async () => {
lookupMock.mockResolvedValue([{ address: '10.0.246.93' }]);
await expect(assertExternalAddress('huggingface.co')).rejects.toThrow(
'Blocked internal or reserved address for hostname huggingface.co: 10.0.246.93'
);
});
it('allows allowlisted hostnames to resolve to internal addresses', async () => {
process.env.ALLOW_INTERNAL_ADDRESS_HOSTS = 'huggingface.co,*.hf.space';
lookupMock.mockResolvedValue([{ address: '10.0.246.93' }]);
await expect(assertExternalAddress('huggingface.co')).resolves.toBeUndefined();
await expect(assertExternalAddress('demo.hf.space')).resolves.toBeUndefined();
});
});

Xet Storage Details

Size:
2.29 kB
·
Xet hash:
12e2d2da223f7138c5af02d511cbfc7c91ce4c135ebbd3150a48d62ec727e4ff

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.