@substrat-run/contract-tests 0.175.0 → 0.176.0
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/dist/binding-invite-suite.d.ts.map +1 -1
- package/dist/binding-invite-suite.js +42 -7
- package/dist/binding-invite-suite.js.map +1 -1
- package/dist/impersonation-suite.d.ts.map +1 -1
- package/dist/impersonation-suite.js +23 -0
- package/dist/impersonation-suite.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/module-objects-suite.d.ts +5 -0
- package/dist/module-objects-suite.d.ts.map +1 -0
- package/dist/module-objects-suite.js +91 -0
- package/dist/module-objects-suite.js.map +1 -0
- package/dist/module-objects.d.ts +3 -0
- package/dist/module-objects.d.ts.map +1 -0
- package/dist/module-objects.js +41 -0
- package/dist/module-objects.js.map +1 -0
- package/dist/modules.d.ts.map +1 -1
- package/dist/modules.js +10 -1
- package/dist/modules.js.map +1 -1
- package/dist/scope-repoint-suite.d.ts.map +1 -1
- package/dist/scope-repoint-suite.js +1 -0
- package/dist/scope-repoint-suite.js.map +1 -1
- package/dist/test-operations.d.ts +1 -0
- package/dist/test-operations.d.ts.map +1 -1
- package/dist/test-operations.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract suite for a module's own indexes and triggers across a restore (#2820). A restore drops
|
|
3
|
+
* every module table and replays it from the dump; the migrations that made the table's indexes and
|
|
4
|
+
* triggers are journaled, so they never run again. The dump carries them, and a restore puts back
|
|
5
|
+
* the ones that hold invariants: here a partial unique index and an append-only trigger, judged by
|
|
6
|
+
* what they refuse afterwards. A trigger that writes, planted in the dump, is left out, and the
|
|
7
|
+
* restore's admin row names it. The fixture is `moduleObjectsMod`.
|
|
8
|
+
*
|
|
9
|
+
* `audited`: the host's restore row records what its load did with them. A host whose scope has a
|
|
10
|
+
* vertical and a control plane does not: the scope is loaded again in its deployment after the row
|
|
11
|
+
* is written, so the host's own copy would say nothing true there, and the row records nothing.
|
|
12
|
+
*/
|
|
13
|
+
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
14
|
+
import { platformActorId, principalId, scopeId, tenantId } from '@substrat-run/contracts';
|
|
15
|
+
import { ulid } from '@substrat-run/kernel';
|
|
16
|
+
import { moduleObjectsMod } from './module-objects.js';
|
|
17
|
+
export function moduleObjectsContractSuite(adapterName, makeFixture, { audited }) {
|
|
18
|
+
const audit = (record) => (audited ? record : undefined);
|
|
19
|
+
describe(`a module's own indexes and triggers across a restore (#2820): ${adapterName}`, () => {
|
|
20
|
+
let fixture;
|
|
21
|
+
let host;
|
|
22
|
+
const t = tenantId.parse(ulid());
|
|
23
|
+
const staff = platformActorId.parse(ulid());
|
|
24
|
+
const anyone = principalId.parse(ulid());
|
|
25
|
+
beforeAll(async () => {
|
|
26
|
+
fixture = await makeFixture();
|
|
27
|
+
host = fixture.host;
|
|
28
|
+
host.registerModule(moduleObjectsMod);
|
|
29
|
+
await host.admin.createTenant(staff, { id: t, slug: `mo-${t.toLowerCase()}`, name: 'Module objects' });
|
|
30
|
+
await host.admin.grantEntitlement(staff, t, 'module-objects');
|
|
31
|
+
});
|
|
32
|
+
afterAll(async () => {
|
|
33
|
+
await fixture.cleanup();
|
|
34
|
+
});
|
|
35
|
+
/** A scope holding one lead, restored in place from its own dump as `edit` leaves it. */
|
|
36
|
+
const restored = async (edit = (d) => d) => {
|
|
37
|
+
const s = scopeId.parse(ulid());
|
|
38
|
+
await host.provisionScope(staff, { tenantId: t, scopeId: s, vertical: 'module-objects' });
|
|
39
|
+
await host.admin.activateScope(staff, t, s);
|
|
40
|
+
const stub = await host.getScope(anyone, t, s);
|
|
41
|
+
await stub.invoke('mo/insert', { id: 'a', who: 'x', lead: 1 });
|
|
42
|
+
await host.restoreScope(staff, t, s, edit(await host.admin.exportScope(staff, t, s)));
|
|
43
|
+
const [entry] = (await host.admin.auditLog(staff, { scopeId: s })).filter((r) => r.action === 'restoreScope');
|
|
44
|
+
return { stub, moduleObjects: (entry?.after).moduleObjects };
|
|
45
|
+
};
|
|
46
|
+
const COUNTS = {
|
|
47
|
+
type: 'trigger',
|
|
48
|
+
name: 'mo_count',
|
|
49
|
+
ddl: 'CREATE TRIGGER mo_count AFTER INSERT ON mo_ledger BEGIN UPDATE mo_counter SET n = n + 1; END',
|
|
50
|
+
};
|
|
51
|
+
it('puts back the partial unique index and the append-only trigger, and names the trigger it left out', async () => {
|
|
52
|
+
const { stub, moduleObjects } = await restored((dump) => ({
|
|
53
|
+
...dump,
|
|
54
|
+
tables: dump.tables.map((table) => (table.name === 'mo_ledger' ? { ...table, objects: [...table.objects, COUNTS] } : table)),
|
|
55
|
+
}));
|
|
56
|
+
await expect(stub.invoke('mo/insert', { id: 'b', who: 'x', lead: 1 })).rejects.toThrow(/UNIQUE constraint failed/);
|
|
57
|
+
await expect(stub.invoke('mo/demote', { id: 'a' })).rejects.toThrow(/append-only/);
|
|
58
|
+
// The counting trigger was not put back: an insert the index admits leaves the count alone.
|
|
59
|
+
await stub.invoke('mo/insert', { id: 'c', who: 'x', lead: 0 });
|
|
60
|
+
expect(await stub.invoke('mo/count', undefined)).toBe(0);
|
|
61
|
+
// Counted over the whole dump: on a host that migrates every kit module into a scope, other
|
|
62
|
+
// tables carry their own indexes too.
|
|
63
|
+
expect(moduleObjects).toEqual(audit({ carried: expect.any(Number), skipped: ['mo_count'] }));
|
|
64
|
+
});
|
|
65
|
+
it("refuses a dump whose own rows break its unique index, and the scope keeps its rows and its index", async () => {
|
|
66
|
+
const s = scopeId.parse(ulid());
|
|
67
|
+
await host.provisionScope(staff, { tenantId: t, scopeId: s, vertical: 'module-objects' });
|
|
68
|
+
await host.admin.activateScope(staff, t, s);
|
|
69
|
+
const stub = await host.getScope(anyone, t, s);
|
|
70
|
+
await stub.invoke('mo/insert', { id: 'a', who: 'x', lead: 1 });
|
|
71
|
+
const dump = await host.admin.exportScope(staff, t, s);
|
|
72
|
+
const broken = {
|
|
73
|
+
...dump,
|
|
74
|
+
tables: dump.tables.map((table) => (table.name === 'mo_ledger' ? { ...table, rows: [...table.rows, ['b', 'x', 1]] } : table)),
|
|
75
|
+
};
|
|
76
|
+
await expect(host.restoreScope(staff, t, s, broken)).rejects.toThrow(/could not be put back over the dump's own rows/);
|
|
77
|
+
// The load rolled back whole: `b` never landed, and the index still refuses a second lead.
|
|
78
|
+
await stub.invoke('mo/insert', { id: 'b', who: 'y', lead: 0 });
|
|
79
|
+
await expect(stub.invoke('mo/insert', { id: 'c', who: 'x', lead: 1 })).rejects.toThrow(/UNIQUE constraint failed/);
|
|
80
|
+
});
|
|
81
|
+
it('restores a dump written before objects were carried as before, and says they were not carried', async () => {
|
|
82
|
+
const { stub, moduleObjects } = await restored((dump) => ({
|
|
83
|
+
...dump,
|
|
84
|
+
tables: dump.tables.map(({ objects: _, ...table }) => table),
|
|
85
|
+
}));
|
|
86
|
+
await stub.invoke('mo/insert', { id: 'b', who: 'x', lead: 1 });
|
|
87
|
+
expect(moduleObjects).toEqual(audit({ carried: 'not carried', skipped: [] }));
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=module-objects-suite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-objects-suite.js","sourceRoot":"","sources":["../src/module-objects-suite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-objects.d.ts","sourceRoot":"","sources":["../src/module-objects.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,sBAAsB,CAAC;AAGjF,eAAO,MAAM,gBAAgB,EAAE,kBA+B9B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #2820: a module whose own migration declares invariants as SQLite objects: a partial unique index
|
|
3
|
+
* (at most one lead per `who`) and an append-only trigger, both of which a restore puts back. A
|
|
4
|
+
* host may migrate it into every scope it holds, so it declares nothing a restore leaves out: the
|
|
5
|
+
* suite plants a trigger that writes into the dump instead. `moduleObjectsContractSuite` drives it.
|
|
6
|
+
*/
|
|
7
|
+
import { moduleManifest } from '@substrat-run/contracts';
|
|
8
|
+
import { testOperations } from './test-operations.js';
|
|
9
|
+
export const moduleObjectsMod = {
|
|
10
|
+
manifest: moduleManifest.parse({
|
|
11
|
+
id: '@test/module-objects',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
kernelContract: '^0.0.1',
|
|
14
|
+
permissions: [],
|
|
15
|
+
events: { emits: [], consumes: [] },
|
|
16
|
+
migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
|
|
17
|
+
attachmentTargets: [],
|
|
18
|
+
entitlementKey: 'module-objects',
|
|
19
|
+
}),
|
|
20
|
+
migrations: [
|
|
21
|
+
{
|
|
22
|
+
version: '0001-create',
|
|
23
|
+
sql: `
|
|
24
|
+
CREATE TABLE mo_ledger (id TEXT PRIMARY KEY, who TEXT NOT NULL, lead INTEGER NOT NULL);
|
|
25
|
+
CREATE TABLE mo_counter (n INTEGER NOT NULL);
|
|
26
|
+
INSERT INTO mo_counter (n) VALUES (0);
|
|
27
|
+
CREATE UNIQUE INDEX mo_one_lead ON mo_ledger (who) WHERE lead = 1;
|
|
28
|
+
CREATE TRIGGER mo_no_update BEFORE UPDATE ON mo_ledger BEGIN SELECT RAISE(ABORT, 'mo_ledger is append-only'); END;`,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
...testOperations({
|
|
32
|
+
'mo/insert': ((ctx, input) => {
|
|
33
|
+
ctx.sql.exec('INSERT INTO mo_ledger (id, who, lead) VALUES (?, ?, ?)', [input.id, input.who, input.lead]);
|
|
34
|
+
}),
|
|
35
|
+
'mo/demote': ((ctx, input) => {
|
|
36
|
+
ctx.sql.exec('UPDATE mo_ledger SET lead = 0 WHERE id = ?', [input.id]);
|
|
37
|
+
}),
|
|
38
|
+
'mo/count': ((ctx) => ctx.sql.query('SELECT n FROM mo_counter')[0]?.n),
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=module-objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-objects.js","sourceRoot":"","sources":["../src/module-objects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IAClD,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC;QAC7B,EAAE,EAAE,sBAAsB;QAC1B,OAAO,EAAE,OAAO;QAChB,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnC,UAAU,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE;QACnE,iBAAiB,EAAE,EAAE;QACrB,cAAc,EAAE,gBAAgB;KACjC,CAAC;IACF,UAAU,EAAE;QACV;YACE,OAAO,EAAE,aAAa;YACtB,GAAG,EAAE;;;;;2HAKgH;SACtH;KACF;IACD,GAAG,cAAc,CAAC;QAChB,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,KAAgD,EAAE,EAAE;YACtE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,wDAAwD,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5G,CAAC,CAAqC;QACtC,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,KAAqB,EAAE,EAAE;YAC3C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC,CAAqC;QACtC,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAgB,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAqC;KAC1H,CAAC;CACH,CAAC"}
|
package/dist/modules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
|
package/dist/modules.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* validates) draw from this one source. The assertions live in the suites; the
|
|
8
8
|
* artifacts live here.
|
|
9
9
|
*/
|
|
10
|
-
import { dataSubjectId, moduleManifest, operationInputsOf, operationConcurrencyOf, operationIdempotencyOptOutsOf, IDEMPOTENCY_RESULT_LIMIT, permissionKey, pageVisible, principalId, assertTransition, nameRefusedRecord, z, KERNEL_AUTHORED_EVENT_TYPES, substratError, } from '@substrat-run/contracts';
|
|
10
|
+
import { dataSubjectId, moduleManifest, operationInputsOf, operationConcurrencyOf, operationIdempotencyOptOutsOf, operationImpersonationRefusalsOf, IDEMPOTENCY_RESULT_LIMIT, permissionKey, pageVisible, principalId, assertTransition, nameRefusedRecord, z, KERNEL_AUTHORED_EVENT_TYPES, substratError, } from '@substrat-run/contracts';
|
|
11
11
|
import { membershipFixtureMod } from './membership-module.js';
|
|
12
12
|
import { reservedRoleMod } from './reserved-role-module.js';
|
|
13
13
|
import { rebuildMod, stateMod } from './entity-state-module.js';
|
|
@@ -22,6 +22,7 @@ import { bindMod } from './bind-module.js';
|
|
|
22
22
|
import { uploadLinkMod } from './upload-link-module.js';
|
|
23
23
|
import { manyMigrationsMod } from './many-migrations.js';
|
|
24
24
|
import { commentedDdlMod } from './migration-comments.js';
|
|
25
|
+
import { moduleObjectsMod } from './module-objects.js';
|
|
25
26
|
import { fenceDeclaredMod, fenceReusedRightMod, fenceReusedWrongMod, fenceUndeclaredMod, fenceWideMod } from './migration-fence.js';
|
|
26
27
|
import { assertAllowed, readAttachmentText, readHistory, readTimeline, readScopeTimeline, readScopeHistory, ulid, } from '@substrat-run/kernel';
|
|
27
28
|
import { testOperations } from './test-operations.js';
|
|
@@ -1493,6 +1494,9 @@ export const permMod = {
|
|
|
1493
1494
|
'perm/read-check-log': readCheckLogOp,
|
|
1494
1495
|
// K-42 (#868)
|
|
1495
1496
|
'perm/write-note': noteWriteOp,
|
|
1497
|
+
// #2821: the same write, declared `impersonation: 'refused'` below — an act only the
|
|
1498
|
+
// person may make, so no impersonation session reaches the handler.
|
|
1499
|
+
'perm/attest': noteWriteOp,
|
|
1496
1500
|
'perm/read-notes': noteReadOp,
|
|
1497
1501
|
'perm/request-intent': requestIntentOp,
|
|
1498
1502
|
'perm/read-intents': readIntentsOp,
|
|
@@ -1549,6 +1553,8 @@ export const permMod = {
|
|
|
1549
1553
|
await ctx.revoke(principalId.parse(i.principal), permissionKey.parse(i.permission), i.entity);
|
|
1550
1554
|
return { revoked: true };
|
|
1551
1555
|
}),
|
|
1556
|
+
}, {
|
|
1557
|
+
impersonationRefused: operationImpersonationRefusalsOf({ 'perm/attest': { impersonation: 'refused' } }),
|
|
1552
1558
|
}),
|
|
1553
1559
|
consumers: {
|
|
1554
1560
|
'perm.check-requested': checkRequestedConsumer,
|
|
@@ -2719,6 +2725,9 @@ export const contractTestModules = [
|
|
|
2719
2725
|
// #2068 r5: a module whose migrations comment their DDL and then drop the last column. Every
|
|
2720
2726
|
// scope in the kit migrates it, so a regression fails loudly everywhere.
|
|
2721
2727
|
commentedDdlMod,
|
|
2728
|
+
// #2820: a module's own index and triggers across a restore. Inert for every other suite — only
|
|
2729
|
+
// `moduleObjectsContractSuite` grants its entitlement.
|
|
2730
|
+
moduleObjectsMod,
|
|
2722
2731
|
// #2553: a module with more migrations than the applied-migrations read once capped at. Every
|
|
2723
2732
|
// scope in the kit carries it, so the #1236 case reads back over 100 rows on every adapter.
|
|
2724
2733
|
manyMigrationsMod,
|