@bongos/core 1.19.260 → 1.19.261
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +33 -23
- package/docs/adr/0181-teardown-state-gate-and-address-retention.md +63 -0
- package/docs/adr/README.md +1 -0
- package/docs/api/openapi.json +1 -1
- package/docs/copy-inventory.md +94 -91
- package/docs/copy-registry.json +179 -143
- package/modules/provisioning/provisioning.js +15 -4
- package/modules/provisioning/routes/provisioning.js +23 -8
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/public-landing/assets/cosmos.css +6 -0
- package/public-landing/projects.html +144 -6
- package/scripts/gds/copy-inventory.js +9 -5
- package/scripts/gds/provision.js +4 -4
- package/src/module-api.js +3 -1
- package/tests/projects_hub.mjs +67 -0
- package/tests/provisioning_teardown_states.mjs +176 -0
- package/tests/public_landing_projects.mjs +22 -0
|
@@ -121,6 +121,28 @@ test('the manage view is served: identity block + honest not-yet sections (task
|
|
|
121
121
|
assert.doesNotMatch(missing, /permission|allowed|access|owner/i);
|
|
122
122
|
});
|
|
123
123
|
|
|
124
|
+
test('the delete section is served live, and never claims to erase (task 1003042)', async () => {
|
|
125
|
+
const { body } = await request('/projects', 'game.test.local');
|
|
126
|
+
assert.match(body, /id="mDel"/, 'the live section body is served');
|
|
127
|
+
assert.match(body, /id="mDelWhat"/, 'the teardown-vs-delete fold is served');
|
|
128
|
+
assert.match(body, /does <b>not<\/b> erase the project/i,
|
|
129
|
+
'the distinction survives to the wire, not just the source');
|
|
130
|
+
assert.match(body, /no permanent-delete button/i, 'the absent capability is admitted');
|
|
131
|
+
// the confirmation asks for the project's own name — the heaviest gate on the page
|
|
132
|
+
assert.match(body, /Type the project’s name to confirm/, 'the typed confirmation is served');
|
|
133
|
+
assert.match(body, /data-del-yes disabled/, 'and the act starts unreachable');
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
test('the served teardown copy no longer claims the address goes quiet (task 1003042)', async () => {
|
|
137
|
+
const { body } = await request('/projects', 'game.test.local');
|
|
138
|
+
// teardown has no DNS or Caddy leg: the hostname keeps resolving and 502s, so
|
|
139
|
+
// this sentence was false on the wire. Task 1002897 owns actually releasing it.
|
|
140
|
+
assert.doesNotMatch(body, /the address stops answering/,
|
|
141
|
+
'no served copy may promise a silence the runner does not deliver');
|
|
142
|
+
assert.match(body, /stays reserved for this project/,
|
|
143
|
+
'the truthful replacement is what ships');
|
|
144
|
+
});
|
|
145
|
+
|
|
124
146
|
test('the repo-visibility section is served live, with the private direction refused (task 1003045)', async () => {
|
|
125
147
|
const { body } = await request('/projects', 'game.test.local');
|
|
126
148
|
assert.match(body, /id="mRepoVis"/, 'the live section body is served');
|