|
9 | 9 | // "refused outright (#4757)", on the reasoning that "nothing was ever queried" |
10 | 10 | // must not read as "nothing to authorize". `attachment-access-hooks.ts` carries |
11 | 11 | // exactly that refusal, and `attachment-access-hooks.test.ts` pins it against a |
12 | | -// wired engine (#9797). This file pins it END TO END, on the real stack, where |
| 12 | +// wired engine (commit 1258dcaee). This file pins it END TO END, on the real stack, where |
13 | 13 | // RBAC and plugin-sharing are in the path and the session is a real one. |
14 | 14 | // |
15 | 15 | // ## History — this file's original verdict has been OVERTAKEN, twice |
|
20 | 20 | // the `where === undefined` check. That was a PRODUCT gap (#9719), and this |
21 | 21 | // file deliberately declined to pin the behaviour of the day. |
22 | 22 | // |
23 | | -// It has since been fixed. #9719/PR #9797 added an opt-in whole-operation |
| 23 | +// It has since been fixed. #9719/commit 1258dcaee added an opt-in whole-operation |
24 | 24 | // dispatch to the engine, which #9974 renamed `dispatchUnscopedMultiWrite` when |
25 | 25 | // it was ruled onto `beforeUpdate` as well. `attachment-access-hooks.ts` |
26 | 26 | // declares it on both sys_attachment write registrations, so the #4757 refusal |
|
35 | 35 | // properties that look identical on a fixture whose rows split entitled/not — |
36 | 36 | // which is exactly the fixture the first block below uses. Measured on this |
37 | 37 | // suite: with `dispatchUnscopedMultiWrite` removed from BOTH registrations and |
38 | | -// service-storage rebuilt (the pre-#9797 world), the first block stays 5/5 |
| 38 | +// service-storage rebuilt (the world before commit 1258dcaee), the first block stays 5/5 |
39 | 39 | // GREEN. It cannot see the refusal it is named for. |
40 | 40 | // |
41 | 41 | // So the second block seeds the ONE fixture that separates them: a caller who |
@@ -163,7 +163,7 @@ describe('sys_attachment delete gate under an unscoped multi-delete (#9483)', () |
163 | 163 |
|
164 | 164 | it('an unscoped multi-delete is refused OUTRIGHT — on its shape — and deletes NOTHING', async () => { |
165 | 165 | // `{ multi: true }` with neither id nor where composes an AST over the whole |
166 | | - // table. Since #9797 the refusal that answers is #4757's whole-operation |
| 166 | + // table. Since commit 1258dcaee the refusal that answers is #4757's whole-operation |
167 | 167 | // one, dispatched BEFORE any row is resolved — not the per-row gate, which |
168 | 168 | // on this fixture would also have refused (the member is the uploader of |
169 | 169 | // one row and neither uploader nor parent-editor of the other). |
@@ -193,7 +193,7 @@ describe('sys_attachment delete gate under an unscoped multi-delete (#9483)', () |
193 | 193 |
|
194 | 194 | it('an empty `where: {}` reaches the same verdict by a DIFFERENT rule — the per-row gate', async () => { |
195 | 195 | // ⚠️ Same outcome, deliberately different mechanism, and the difference is |
196 | | - // load-bearing. #9797 scoped the whole-operation dispatch to a delete with |
| 196 | + // load-bearing. Commit 1258dcaee scoped the whole-operation dispatch to a delete with |
197 | 197 | // NO `where` at all; a match-all `where: {}` is a real query, so it is NOT |
198 | 198 | // refused on shape — it is refused here only because this caller cannot |
199 | 199 | // have the foreign row. Asserting the per-row message is what keeps that |
@@ -259,7 +259,7 @@ describe('sys_attachment delete gate under an unscoped multi-delete (#9483)', () |
259 | 259 | // whole-operation rule or from the per-row gate, because that fixture holds one |
260 | 260 | // row the caller may not touch. Here the caller uploaded BOTH rows, so the |
261 | 261 | // per-row gate has nothing to refuse — anything that still refuses is refusing |
262 | | -// the SHAPE. Pre-#9797 this exact call resolved and emptied the table. |
| 262 | +// the SHAPE. Before commit 1258dcaee this exact call resolved and emptied the table. |
263 | 263 | // ───────────────────────────────────────────────────────────────────────────── |
264 | 264 |
|
265 | 265 | describe('sys_attachment unscoped multi-delete is refused on its SHAPE, not on entitlement (#9483)', () => { |
@@ -352,7 +352,7 @@ describe('sys_attachment unscoped multi-delete is refused on its SHAPE, not on e |
352 | 352 | }); |
353 | 353 |
|
354 | 354 | it('refuses `{ multi: true }` with no id and no where — even though the caller may delete every matched row', async () => { |
355 | | - // #9719's measured wipe, end to end: before PR #9797 this call RESOLVED and |
| 355 | + // #9719's measured wipe, end to end: before commit 1258dcaee this call RESOLVED and |
356 | 356 | // took both rows (2 -> 0). The per-row gate licenses each row individually, |
357 | 357 | // so nothing but the whole-operation #4757 rule can refuse here — which is |
358 | 358 | // what makes this the case that detects its removal. |
|
0 commit comments