Add consent-gated media exchange library

This commit is contained in:
jjbrunton committed 2026-08-09 19:24:38 +01:00
1 parent b8e4a1bb88
commit bf474dfe10
42 files changed
+2533 -9

No files matched your search

+6 -1
View File
@@ -24,6 +24,8 @@ function createWorkspace(includeReactBuild = true): string {
fs.writeFileSync(path.join(workspace, 'public', 'index.html'), '<h1>Legacy dashboard</h1>');
fs.mkdirSync(path.join(workspace, 'data', 'media'), { recursive: true });
fs.writeFileSync(path.join(workspace, 'data', 'media', 'sample.txt'), 'private media');
fs.mkdirSync(path.join(workspace, 'data', 'media-library'), { recursive: true });
fs.writeFileSync(path.join(workspace, 'data', 'media-library', 'library.txt'), 'private library media');
if (includeReactBuild) {
fs.mkdirSync(path.join(workspace, 'apps', 'dashboard', 'dist', 'assets'), { recursive: true });
fs.writeFileSync(path.join(workspace, 'apps', 'dashboard', 'dist', 'index.html'), '<h1>React dashboard</h1><script src="/assets/app.js"></script>');
@@ -81,19 +83,22 @@ describe('authenticated React dashboard cutover', () => {
fetch(`${running.baseUrl}/api/stats`),
fetch(`${running.baseUrl}/api/events/stream`),
fetch(`${running.baseUrl}/media/sample.txt`),
fetch(`${running.baseUrl}/library-media/library.txt`),
fetch(running.baseUrl, { redirect: 'manual' }),
]);
expect(anonymous.map((response) => response.status)).toEqual([401, 401, 401, 302]);
expect(anonymous.map((response) => response.status)).toEqual([401, 401, 401, 401, 302]);
const headers = { Authorization: `Bearer ${AUTH_TOKEN}` };
const api = await fetch(`${running.baseUrl}/api/stats`, { headers });
const media = await fetch(`${running.baseUrl}/media/sample.txt`, { headers });
const libraryMedia = await fetch(`${running.baseUrl}/library-media/library.txt`, { headers });
const root = await fetch(running.baseUrl, { headers });
const asset = await fetch(`${running.baseUrl}/assets/app.js`, { headers });
const spa = await fetch(`${running.baseUrl}/conversations/example`, { headers: { ...headers, Accept: 'text/html' } });
expect(api.status).toBe(200);
expect(await media.text()).toBe('private media');
expect(await libraryMedia.text()).toBe('private library media');
expect(await root.text()).toContain('React dashboard');
expect(await asset.text()).toBe('react-build');
expect(await spa.text()).toContain('React dashboard');