forked from wangziqi/gongxue-base
88 lines
2.3 KiB
JavaScript
88 lines
2.3 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { pathToFileURL } from 'node:url';
|
|
|
|
const repoRoot = process.cwd();
|
|
const authModule = await import(pathToFileURL(`${repoRoot}/apps/taro/src/services/api-auth.ts`).href);
|
|
|
|
authModule.setSupabaseAccessTokenProviderForTest(async () => 'supabase_access_token');
|
|
|
|
assert.equal(
|
|
await authModule.resolveApiAuthorization({
|
|
hasTokenOverride: false,
|
|
legacyToken: 'tk_legacy_token',
|
|
}),
|
|
'supabase_access_token',
|
|
);
|
|
|
|
assert.equal(
|
|
await authModule.resolveApiAuthorization({
|
|
authMode: 'none',
|
|
hasTokenOverride: false,
|
|
legacyToken: 'tk_legacy_token',
|
|
}),
|
|
null,
|
|
);
|
|
|
|
assert.equal(
|
|
await authModule.resolveApiAuthorization({
|
|
authMode: 'legacy',
|
|
hasTokenOverride: false,
|
|
legacyToken: 'tk_legacy_token',
|
|
}),
|
|
'tk_legacy_token',
|
|
);
|
|
|
|
assert.equal(
|
|
await authModule.resolveApiAuthorization({
|
|
hasTokenOverride: true,
|
|
explicitToken: null,
|
|
legacyToken: 'tk_legacy_token',
|
|
}),
|
|
null,
|
|
);
|
|
|
|
authModule.setSupabaseAccessTokenProviderForTest(async () => null);
|
|
|
|
assert.equal(
|
|
await authModule.resolveApiAuthorization({
|
|
hasTokenOverride: false,
|
|
legacyToken: 'tk_legacy_token',
|
|
}),
|
|
'tk_legacy_token',
|
|
);
|
|
|
|
assert.equal(
|
|
await authModule.resolveApiAuthorization({
|
|
authMode: 'supabase',
|
|
hasTokenOverride: false,
|
|
legacyToken: 'tk_legacy_token',
|
|
}),
|
|
null,
|
|
);
|
|
|
|
const authenticatedHeaders = authModule.buildApiHeaders({
|
|
tenantId: 'tenant-1',
|
|
token: 'supabase_access_token',
|
|
extraHeaders: { 'x-client-version': 'test' },
|
|
});
|
|
assert.equal(authenticatedHeaders.authorization, 'Bearer supabase_access_token');
|
|
assert.equal(authenticatedHeaders['x-tenant-id'], 'tenant-1');
|
|
assert.equal(authenticatedHeaders['x-client-version'], 'test');
|
|
|
|
const publicHeaders = authModule.buildApiHeaders({ tenantId: null, token: null });
|
|
assert.equal(publicHeaders.authorization, undefined);
|
|
assert.equal(publicHeaders['x-tenant-id'], undefined);
|
|
|
|
assert.throws(
|
|
() => authModule.buildApiHeaders({ extraHeaders: { Authorization: 'Bearer unsafe' } }),
|
|
/Reserved API header cannot be overridden/,
|
|
);
|
|
assert.throws(
|
|
() => authModule.buildApiHeaders({ tenantId: 'tenant-1', extraHeaders: { 'X-Tenant-Id': 'tenant-2' } }),
|
|
/Reserved API header cannot be overridden/,
|
|
);
|
|
|
|
authModule.setSupabaseAccessTokenProviderForTest(null);
|
|
|
|
console.log('[PASS] Taro API auth mode guardrails');
|