36 lines
1.6 KiB
TypeScript
36 lines
1.6 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { buildAllowedAudiobookUserIds, pickAudiobookOwner } from '../../src/lib/server/audiobooks/user-scope';
|
|
|
|
test.describe('audiobook scope selection', () => {
|
|
test('uses only unclaimed scope when auth is disabled', () => {
|
|
const result = buildAllowedAudiobookUserIds(false, null, 'unclaimed::ns');
|
|
expect(result.preferredUserId).toBe('unclaimed::ns');
|
|
expect(result.allowedUserIds).toEqual(['unclaimed::ns']);
|
|
});
|
|
|
|
test('includes both preferred and unclaimed scopes when auth is enabled', () => {
|
|
const result = buildAllowedAudiobookUserIds(true, 'user-123', 'unclaimed::ns');
|
|
expect(result.preferredUserId).toBe('user-123');
|
|
expect(result.allowedUserIds).toEqual(['user-123', 'unclaimed::ns']);
|
|
});
|
|
|
|
test('deduplicates preferred/unclaimed ids when they are the same', () => {
|
|
const result = buildAllowedAudiobookUserIds(true, 'unclaimed::ns', 'unclaimed::ns');
|
|
expect(result.allowedUserIds).toEqual(['unclaimed::ns']);
|
|
});
|
|
|
|
test('prefers unclaimed owner when both scopes exist', () => {
|
|
const owner = pickAudiobookOwner(['user-123', 'unclaimed::ns'], 'user-123', 'unclaimed::ns');
|
|
expect(owner).toBe('unclaimed::ns');
|
|
});
|
|
|
|
test('falls back to preferred owner when unclaimed is missing', () => {
|
|
const owner = pickAudiobookOwner(['user-123'], 'user-123', 'unclaimed::ns');
|
|
expect(owner).toBe('user-123');
|
|
});
|
|
|
|
test('returns null when no matching owners exist', () => {
|
|
const owner = pickAudiobookOwner([], 'user-123', 'unclaimed::ns');
|
|
expect(owner).toBeNull();
|
|
});
|
|
});
|