@nangohq/runner-sdk 0.70.8 → 0.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,76 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST, canonicalizeHostnameForDenylist, isBaseUrlOverrideDenied, mergeProxyBaseUrlOverrideDenylist, normalizeDenylist, normalizeDenylistHost, resolveProxyBaseUrlOverrideDenylist } from './baseUrlOverrideDenylist.js';
3
- describe('runner-sdk baseUrlOverrideDenylist', () => {
4
- beforeEach(() => {
5
- vi.resetModules();
6
- vi.unstubAllEnvs();
7
- });
8
- afterEach(() => {
9
- vi.unstubAllEnvs();
10
- });
11
- it('matches utils canonicalizeHostnameForDenylist behavior', () => {
12
- expect(canonicalizeHostnameForDenylist('localhost.')).toBe('localhost');
13
- expect(canonicalizeHostnameForDenylist('[::1]')).toBe('::1');
14
- });
15
- it('matches utils normalizeDenylistHost behavior', () => {
16
- expect(normalizeDenylistHost('LOCALHOST')).toBe('localhost');
17
- expect(normalizeDenylistHost('http://169.254.169.254/path')).toBe('169.254.169.254');
18
- });
19
- it('matches utils isBaseUrlOverrideDenied behavior', () => {
20
- expect(isBaseUrlOverrideDenied('http://169.254.169.254/', new Set())).toBe(false);
21
- expect(isBaseUrlOverrideDenied('http://169.254.169.254/foo', new Set(['169.254.169.254']))).toBe(true);
22
- });
23
- it('blocks IPv4-mapped IPv6 loopback with default denylist', () => {
24
- const list = normalizeDenylist([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
25
- expect(isBaseUrlOverrideDenied('http://[::ffff:127.0.0.1]/', list)).toBe(true);
26
- });
27
- it('resolveProxyBaseUrlOverrideDenylist returns defaults when unset', () => {
28
- expect(resolveProxyBaseUrlOverrideDenylist(undefined)).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
29
- });
30
- it('resolveProxyBaseUrlOverrideDenylist applies secure defaults for empty env (runner does not inherit server opt-out)', () => {
31
- expect(resolveProxyBaseUrlOverrideDenylist('[]')).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
32
- expect(resolveProxyBaseUrlOverrideDenylist('[ ]')).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
33
- expect(resolveProxyBaseUrlOverrideDenylist('[\n]')).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
34
- expect(resolveProxyBaseUrlOverrideDenylist('')).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
35
- });
36
- it('resolveProxyBaseUrlOverrideDenylist falls back to secure defaults on malformed JSON', () => {
37
- expect(resolveProxyBaseUrlOverrideDenylist('not-json')).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
38
- expect(resolveProxyBaseUrlOverrideDenylist('null')).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
39
- expect(resolveProxyBaseUrlOverrideDenylist('{}')).toEqual([...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST]);
40
- });
41
- it('mergeProxyBaseUrlOverrideDenylist merges custom entries with defaults', () => {
42
- expect(mergeProxyBaseUrlOverrideDenylist(['denylisted-proxy-test.invalid'])).toEqual([
43
- ...DEFAULT_NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST,
44
- 'denylisted-proxy-test.invalid'
45
- ]);
46
- });
47
- it('getBaseUrlOverrideDenylistFromEnv applies defaults when env is unset', async () => {
48
- const { getBaseUrlOverrideDenylistFromEnv: getDenylist } = await import('./baseUrlOverrideDenylist.js');
49
- const denylist = getDenylist();
50
- expect(denylist.has('localhost')).toBe(true);
51
- expect(denylist.has('169.254.169.254')).toBe(true);
52
- });
53
- it('getBaseUrlOverrideDenylistFromEnv applies secure defaults when denylist env is empty', async () => {
54
- vi.stubEnv('NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST', '[]');
55
- const { getBaseUrlOverrideDenylistFromEnv: getDenylist } = await import('./baseUrlOverrideDenylist.js');
56
- const denylist = getDenylist();
57
- expect(denylist.has('localhost')).toBe(true);
58
- expect(denylist.has('169.254.169.254')).toBe(true);
59
- });
60
- it('getBaseUrlOverrideDenylistFromEnv enforces secure defaults when override feature is disabled', async () => {
61
- vi.stubEnv('NANGO_PROXY_BASE_URL_OVERRIDE_ENABLED', 'false');
62
- vi.stubEnv('NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST', '[]');
63
- const { getBaseUrlOverrideDenylistFromEnv: getDenylist } = await import('./baseUrlOverrideDenylist.js');
64
- const denylist = getDenylist();
65
- expect(denylist.has('localhost')).toBe(true);
66
- expect(denylist.has('169.254.169.254')).toBe(true);
67
- });
68
- it('getBaseUrlOverrideDenylistFromEnv auto-denies AWS Lambda runtime API host', async () => {
69
- vi.stubEnv('NANGO_PROXY_BASE_URL_OVERRIDE_DENYLIST', '[]');
70
- vi.stubEnv('AWS_LAMBDA_RUNTIME_API', '127.0.0.1:9001');
71
- const { getBaseUrlOverrideDenylistFromEnv: getDenylist } = await import('./baseUrlOverrideDenylist.js');
72
- const denylist = getDenylist();
73
- expect(denylist.has('127.0.0.1')).toBe(true);
74
- });
75
- });
76
- //# sourceMappingURL=baseUrlOverrideDenylist.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseUrlOverrideDenylist.unit.test.js","sourceRoot":"","sources":["../lib/baseUrlOverrideDenylist.unit.test.ts"],"names":[],"mappings":"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"}