// Public folder pages are served at /p//// and also as // navigate.st/s3/…, so every link in them must be relative to the folder. import test from 'node:test'; import assert from 'node:assert/strict'; import { folderPage } from '../server.js'; test('folder page links are relative, names escaped, media playable', () => { const html = folderPage({ owner: 'alice.x', bucket: 'music-house', key: 'Deep/Night/', listing: { folders: ['Remixes/'], files: [{ name: 'A song & co.mp3', size: 9_437_184 }, { name: 'cover.jpg', size: 2048 }, { name: 'notes.txt', size: 12 }], next: null }, }); assert.match(html, //); assert.match(html, /href="A%20%3Ci%3Esong%20%26%20co\.mp3"/); assert.match(html, /A <i>song & co\.mp3/); assert.doesNotMatch(html, /song/); assert.match(html, /data-kind="audio"/); assert.match(html, /music-house<\/a> \/ Deep<\/a> \/ Night<\/span>/); assert.doesNotMatch(html, /href="\/p\//); }); test('drive root page has no stray parents', () => { const html = folderPage({ owner: '0123', bucket: 'd', key: '', listing: { folders: [], files: [], next: 'tok/en' } }); assert.match(html, /This folder is empty/); assert.match(html, /href="\?token=tok%2Fen"/); assert.match(html, /d<\/a>/); });