Initial Commit
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { expect, test } from 'bun:test';
|
||||
import { checkReferenceReleases, type ReleaseObservation, type ReleaseSource } from '../src/lib/server/reference-release';
|
||||
test('source metadata check uses only HEAD and detects independent changes with opaque ETags', async () => {
|
||||
const previous: Partial<Record<ReleaseSource, ReleaseObservation>> = {};
|
||||
let count = 0;
|
||||
const fetcher = (async (_url: unknown, init?: RequestInit) => {
|
||||
expect(init?.method).toBe('HEAD'); expect(init?.redirect).toBe('error'); count++;
|
||||
return new Response(null, { headers: { etag: '"opaque-not-a-checksum"', 'content-length': '1000', 'last-modified': 'Fri, 18 Sep 2026 12:00:00 GMT' } });
|
||||
}) as typeof fetch;
|
||||
const first = await checkReferenceReleases({ fetch: fetcher });
|
||||
for (const result of first) {
|
||||
expect(result.status).toBe('checked');
|
||||
if (result.status === 'checked') {
|
||||
expect(result.observation.integrity).toBe('not_downloaded'); expect(result.observation.changed).toBe(true);
|
||||
previous[result.source] = result.observation;
|
||||
}
|
||||
}
|
||||
const second = await checkReferenceReleases({ fetch: fetcher, previous });
|
||||
expect(count).toBe(4);
|
||||
expect(second.every(r => r.status === 'checked' && !r.observation.changed)).toBe(true);
|
||||
});
|
||||
test('one metadata failure does not hide the other source, and 304 requires known metadata', async () => {
|
||||
const results = await checkReferenceReleases({ fetch: (async (url: unknown) => String(url).includes('hoboleaks') ? new Response(null, { status: 503 }) : new Response(null, { headers: { etag: 'ref-v2' } })) as typeof fetch });
|
||||
expect(results.map(r => r.status)).toEqual(['checked', 'failed']);
|
||||
const unknown304 = await checkReferenceReleases({ fetch: (async (_url: unknown) => new Response(null, { status: 304 })) as typeof fetch });
|
||||
expect(unknown304.every(r => r.status === 'failed')).toBe(true);
|
||||
});
|
||||
Reference in New Issue
Block a user