mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 10:16:49 +00:00
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { describe, expect, it } from 'bun:test';
|
|
import {
|
|
normalizeSharedResourceMetadata,
|
|
resolveSharedResourcePolicy,
|
|
sharedResourceModeToMetadata,
|
|
} from '../../../src/auth/shared-resource-policy';
|
|
|
|
describe('shared resource policy', () => {
|
|
it('defaults missing metadata to shared resources', () => {
|
|
const policy = resolveSharedResourcePolicy(undefined);
|
|
|
|
expect(policy.mode).toBe('shared');
|
|
expect(policy.inferred).toBe(true);
|
|
expect(policy.profileLocal).toBe(false);
|
|
});
|
|
|
|
it('resolves legacy bare metadata as profile-local', () => {
|
|
const policy = resolveSharedResourcePolicy({ bare: true });
|
|
|
|
expect(policy.mode).toBe('profile-local');
|
|
expect(policy.inferred).toBe(true);
|
|
expect(policy.profileLocal).toBe(true);
|
|
});
|
|
|
|
it('lets explicit shared mode override stale bare metadata', () => {
|
|
const normalized = normalizeSharedResourceMetadata({
|
|
shared_resource_mode: 'shared',
|
|
bare: true,
|
|
});
|
|
|
|
expect(normalized.shared_resource_mode).toBe('shared');
|
|
expect(normalized.bare).toBeUndefined();
|
|
expect(resolveSharedResourcePolicy(normalized).profileLocal).toBe(false);
|
|
});
|
|
|
|
it('normalizes explicit profile-local mode to legacy-compatible bare metadata', () => {
|
|
const normalized = normalizeSharedResourceMetadata({
|
|
shared_resource_mode: 'profile-local',
|
|
});
|
|
|
|
expect(normalized.shared_resource_mode).toBe('profile-local');
|
|
expect(normalized.bare).toBe(true);
|
|
});
|
|
|
|
it('builds write metadata for both supported modes', () => {
|
|
expect(sharedResourceModeToMetadata('profile-local')).toEqual({
|
|
shared_resource_mode: 'profile-local',
|
|
bare: true,
|
|
});
|
|
expect(sharedResourceModeToMetadata('shared')).toEqual({
|
|
shared_resource_mode: 'shared',
|
|
bare: undefined,
|
|
});
|
|
});
|
|
});
|