Files
LivingDexTracker/tests/unit/providerEndpoints.test.ts
T
2026-09-14 12:56:09 +01:00

97 lines
3.6 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
PROVIDER_ENDPOINT_DEFAULTS,
resolveProviderEndpoints
} from '$lib/services/providerEndpoints';
const localOverrides = {
TEST_SUPABASE_URL: 'http://127.0.0.1:54321',
E2E_SERVICE_ROLE_KEY: 'local-test-service-key',
GOOGLE_OAUTH_AUTHORIZE_URL: 'http://127.0.0.1:4199/google/authorize',
GOOGLE_OAUTH_TOKEN_URL: 'http://127.0.0.1:4199/google/token',
GOOGLE_DRIVE_API_URL: 'http://127.0.0.1:4199/google/drive',
GOOGLE_DRIVE_UPLOAD_URL: 'http://127.0.0.1:4199/google/upload',
DROPBOX_OAUTH_AUTHORIZE_URL: 'http://127.0.0.1:4199/dropbox/authorize',
DROPBOX_OAUTH_TOKEN_URL: 'http://127.0.0.1:4199/dropbox/token',
DROPBOX_UPLOAD_URL: 'http://127.0.0.1:4199/dropbox/files/upload'
};
describe('provider endpoints', () => {
it('uses the real provider endpoints when nothing is configured', () => {
expect(resolveProviderEndpoints({})).toEqual(PROVIDER_ENDPOINT_DEFAULTS);
});
it('ignores overrides unless they are explicitly allowed', () => {
// The exfiltration case: these variables carry the client secret and refresh token, and
// the env is read per request in production.
expect(resolveProviderEndpoints(localOverrides)).toEqual(PROVIDER_ENDPOINT_DEFAULTS);
expect(
resolveProviderEndpoints({ ...localOverrides, ALLOW_PROVIDER_ENDPOINT_OVERRIDES: 'false' })
).toEqual(PROVIDER_ENDPOINT_DEFAULTS);
expect(
resolveProviderEndpoints({ ...localOverrides, ALLOW_PROVIDER_ENDPOINT_OVERRIDES: '1' })
).toEqual(PROVIDER_ENDPOINT_DEFAULTS);
});
it('applies allowed loopback overrides', () => {
expect(
resolveProviderEndpoints({ ...localOverrides, ALLOW_PROVIDER_ENDPOINT_OVERRIDES: 'true' })
).toEqual({
google: {
authorize: localOverrides.GOOGLE_OAUTH_AUTHORIZE_URL,
token: localOverrides.GOOGLE_OAUTH_TOKEN_URL,
driveApi: localOverrides.GOOGLE_DRIVE_API_URL,
driveUpload: localOverrides.GOOGLE_DRIVE_UPLOAD_URL
},
dropbox: {
authorize: localOverrides.DROPBOX_OAUTH_AUTHORIZE_URL,
token: localOverrides.DROPBOX_OAUTH_TOKEN_URL,
upload: localOverrides.DROPBOX_UPLOAD_URL
}
});
});
it('refuses HTTP overrides without a verified local test stack', () => {
const { TEST_SUPABASE_URL, E2E_SERVICE_ROLE_KEY, ...deployedOverrides } = localOverrides;
expect(TEST_SUPABASE_URL).toBeTruthy();
expect(E2E_SERVICE_ROLE_KEY).toBeTruthy();
expect(
resolveProviderEndpoints({
...deployedOverrides,
NODE_ENV: 'production',
ALLOW_PROVIDER_ENDPOINT_OVERRIDES: 'true'
})
).toEqual(PROVIDER_ENDPOINT_DEFAULTS);
});
it.each([
'https://attacker.example/token',
'http://127.0.0.1.attacker.example/token',
'http://[::2]/token',
'file:///etc/passwd',
'not-a-url',
''
])('refuses the non-loopback override %j even when overrides are allowed', (value) => {
const endpoints = resolveProviderEndpoints({
TEST_SUPABASE_URL: localOverrides.TEST_SUPABASE_URL,
E2E_SERVICE_ROLE_KEY: localOverrides.E2E_SERVICE_ROLE_KEY,
ALLOW_PROVIDER_ENDPOINT_OVERRIDES: 'true',
GOOGLE_OAUTH_TOKEN_URL: value,
DROPBOX_OAUTH_TOKEN_URL: value
});
expect(endpoints.google.token).toBe(PROVIDER_ENDPOINT_DEFAULTS.google.token);
expect(endpoints.dropbox.token).toBe(PROVIDER_ENDPOINT_DEFAULTS.dropbox.token);
});
it('accepts localhost as well as 127.0.0.1', () => {
expect(
resolveProviderEndpoints({
TEST_SUPABASE_URL: localOverrides.TEST_SUPABASE_URL,
E2E_SERVICE_ROLE_KEY: localOverrides.E2E_SERVICE_ROLE_KEY,
ALLOW_PROVIDER_ENDPOINT_OVERRIDES: 'true',
GOOGLE_OAUTH_TOKEN_URL: 'http://localhost:4199/google/token'
}).google.token
).toBe('http://localhost:4199/google/token');
});
});