openreader/tests/unit/tts-segments-audio-cache.spec.ts

31 lines
1.2 KiB
TypeScript

import { expect, test } from '@playwright/test';
import {
buildSegmentAudioCacheHeaders,
normalizeAudioByteRangeHeader,
TTS_SEGMENT_AUDIO_VARY,
TTS_SEGMENT_FALLBACK_CACHE_CONTROL,
} from '../../src/lib/server/tts/segments-audio';
test.describe('tts segment audio cache headers', () => {
test('builds fallback cache headers', () => {
expect(buildSegmentAudioCacheHeaders()).toEqual({
'Cache-Control': TTS_SEGMENT_FALLBACK_CACHE_CONTROL,
Vary: TTS_SEGMENT_AUDIO_VARY,
});
});
test('normalizes valid byte range header', () => {
expect(normalizeAudioByteRangeHeader('bytes=0-1023')).toBe('bytes=0-1023');
expect(normalizeAudioByteRangeHeader(' bytes=2048- ')).toBe('bytes=2048-');
expect(normalizeAudioByteRangeHeader('bytes=-512')).toBe('bytes=-512');
});
test('rejects invalid byte range header', () => {
expect(normalizeAudioByteRangeHeader(null)).toBeNull();
expect(normalizeAudioByteRangeHeader('')).toBeNull();
expect(normalizeAudioByteRangeHeader('items=0-10')).toBeNull();
expect(normalizeAudioByteRangeHeader('bytes=-')).toBeNull();
expect(normalizeAudioByteRangeHeader('bytes=20-10')).toBeNull();
expect(normalizeAudioByteRangeHeader('bytes=abc-def')).toBeNull();
});
});