Skip to content

Commit b000fa5

Browse files
review: cleanup nits + honest about WAC bypass on /.well-known/* (JavaScriptSolidServer#447)
Four batched pickups from Copilot. 1. Stray blank line inside the if (ownerKey) block in createRootPodStructure. Removed. 2. Code comment said 'See JavaScriptSolidServer#447 review' — but JavaScriptSolidServer#447 IS this PR. Changed to 'JavaScriptSolidServer#446' (the issue this PR closes), which is the actually-stable reference. 3. Per-describe DATA_DIR suffixes in test/well-known-nostr-json.test.js. The three suites previously shared './test-data-nip05'; latent collision risk if --test-concurrency is ever raised above 1 (currently 1 per the npm script). Each describe now uses its own dir. 4. PR description honesty fix is in the PR body (separate from this commit): the file is intentionally public per NIP-05 spec and /.well-known/* is WAC-bypassed at the request layer, so the earlier 'operator can lock it down with a .acl' claim was misleading. Updated the description to say the file is intentionally public. 860/860 tests pass.
1 parent 2cfc8c1 commit b000fa5

2 files changed

Lines changed: 20 additions & 16 deletions

File tree

src/server.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1159,12 +1159,11 @@ export function createServer(options = {}) {
11591159
'Failed to write owner key file at /private/privkey.jsonld'
11601160
);
11611161
}
1162-
11631162
}
11641163
// NIP-05 mapping is written outside this function (in the
11651164
// single-user onReady block) so it covers both root pods and
11661165
// named single-user pods (which take the createPodStructure
1167-
// path), not just the root case. See #447 review.
1166+
// path), not just the root case. See #446.
11681167

11691168
// Generate profile (with the owner key's VM landed in
11701169
// verificationMethod when --provision-keys is on). Written last —

test/well-known-nostr-json.test.js

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,44 @@ import assert from 'node:assert';
1919
import fs from 'fs-extra';
2020
import { createServer } from '../src/server.js';
2121

22-
const DATA_DIR = './test-data-nip05';
23-
24-
async function startServer(options = {}) {
25-
await fs.remove(DATA_DIR);
26-
await fs.ensureDir(DATA_DIR);
22+
// Per-describe DATA_DIR suffixes so the three suites in this file
23+
// don't collide if --test-concurrency is ever raised above 1.
24+
// Currently 1 per the npm test script, but the latent risk was
25+
// flagged in the #447 review.
26+
async function startServer(dataDir, options = {}) {
27+
await fs.remove(dataDir);
28+
await fs.ensureDir(dataDir);
2729
const server = createServer({
2830
logger: false,
2931
forceCloseConnections: true,
30-
root: DATA_DIR,
32+
root: dataDir,
3133
...options
3234
});
3335
await server.listen({ port: 0, host: '127.0.0.1' });
3436
const baseUrl = `http://127.0.0.1:${server.server.address().port}`;
3537
return { server, baseUrl };
3638
}
3739

38-
async function stopServer(server) {
40+
async function stopServer(server, dataDir) {
3941
await server.close();
40-
await fs.remove(DATA_DIR);
42+
await fs.remove(dataDir);
4143
}
4244

4345
describe('NIP-05 MVP — single-user with provisioned key', () => {
46+
const DATA_DIR = './test-data-nip05-with-key';
4447
let server, baseUrl;
4548
let savedDataRoot;
4649

4750
before(async () => {
4851
savedDataRoot = process.env.DATA_ROOT;
49-
({ server, baseUrl } = await startServer({
52+
({ server, baseUrl } = await startServer(DATA_DIR, {
5053
singleUser: true,
5154
provisionKeys: true
5255
}));
5356
});
5457

5558
after(async () => {
56-
await stopServer(server);
59+
await stopServer(server, DATA_DIR);
5760
if (savedDataRoot === undefined) delete process.env.DATA_ROOT;
5861
else process.env.DATA_ROOT = savedDataRoot;
5962
});
@@ -94,16 +97,17 @@ describe('NIP-05 MVP — single-user with provisioned key', () => {
9497
});
9598

9699
describe('NIP-05 MVP — single-user without a provisioned key', () => {
100+
const DATA_DIR = './test-data-nip05-no-key';
97101
let server;
98102
let savedDataRoot;
99103

100104
before(async () => {
101105
savedDataRoot = process.env.DATA_ROOT;
102-
({ server } = await startServer({ singleUser: true }));
106+
({ server } = await startServer(DATA_DIR, { singleUser: true }));
103107
});
104108

105109
after(async () => {
106-
await stopServer(server);
110+
await stopServer(server, DATA_DIR);
107111
if (savedDataRoot === undefined) delete process.env.DATA_ROOT;
108112
else process.env.DATA_ROOT = savedDataRoot;
109113
});
@@ -118,6 +122,7 @@ describe('NIP-05 MVP — single-user without a provisioned key', () => {
118122
});
119123

120124
describe('NIP-05 MVP — multi-user mode', () => {
125+
const DATA_DIR = './test-data-nip05-multiuser';
121126
let server, baseUrl;
122127
let savedDataRoot;
123128

@@ -126,11 +131,11 @@ describe('NIP-05 MVP — multi-user mode', () => {
126131
// No singleUser → multi-user. The MVP only writes the NIP-05
127132
// file in single-user mode; aggregation across multi-user pods
128133
// is the next slice of #445.
129-
({ server, baseUrl } = await startServer({}));
134+
({ server, baseUrl } = await startServer(DATA_DIR, {}));
130135
});
131136

132137
after(async () => {
133-
await stopServer(server);
138+
await stopServer(server, DATA_DIR);
134139
if (savedDataRoot === undefined) delete process.env.DATA_ROOT;
135140
else process.env.DATA_ROOT = savedDataRoot;
136141
});

0 commit comments

Comments
 (0)