feat(share): a link's address says what it opens
A video stays on /watch/, anything else is given out on /file/ and a folder on /folder/. The token is the whole key, so every path opens every link and the links already sent keep working. The new paths are kept out of search indexes like /watch/, boot the player alone, and the unfurl card calls a file a file.
This commit is contained in:
@@ -99,6 +99,29 @@ function chain(seen: Map<string, string | null>, mod: string): string {
|
||||
return path.join(" → ");
|
||||
}
|
||||
|
||||
describe("the paths a share link opens on", () => {
|
||||
// The server's list: each of the places below that has to know them follows it.
|
||||
const main = readFileSync(join(SRC, "..", "..", "backend", "app", "main.py"), "utf8");
|
||||
const prefixes = [
|
||||
...(/SHARE_PREFIXES = \(([^)]*)\)/.exec(main)?.[1] ?? "").matchAll(/"(\w+)\/"/g),
|
||||
].map((m) => m[1]);
|
||||
|
||||
it("are read off the server", () => {
|
||||
expect(prefixes).toEqual(["watch", "file", "folder"]);
|
||||
});
|
||||
|
||||
it("are all kept out of search indexes", () => {
|
||||
const robots = readFileSync(join(SRC, "..", "public", "robots.txt"), "utf8");
|
||||
for (const p of prefixes) expect(robots).toContain(`Disallow: /${p}/`);
|
||||
});
|
||||
|
||||
it("all boot the player alone in `vite dev` and all give up their token", () => {
|
||||
const vite = readFileSync(join(SRC, "..", "vite.config.ts"), "utf8");
|
||||
const page = readFileSync(join(SRC, "watch", "WatchPage.tsx"), "utf8");
|
||||
for (const src of [vite, page]) expect(src).toContain(`(?:${prefixes.join("|")})`);
|
||||
});
|
||||
});
|
||||
|
||||
describe("the /watch entry", () => {
|
||||
it("loads nothing the app alone may load", () => {
|
||||
const seen = reach(join(SRC, "watchMain.tsx"));
|
||||
|
||||
Reference in New Issue
Block a user