@substrat-run/contract-tests 0.1.0 → 0.2.1
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/README.md +2 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modules.d.ts +727 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +383 -0
- package/dist/modules.js.map +1 -0
- package/dist/permission-suite.d.ts.map +1 -1
- package/dist/permission-suite.js +49 -33
- package/dist/permission-suite.js.map +1 -1
- package/dist/scope-host-suite.d.ts +12 -1
- package/dist/scope-host-suite.d.ts.map +1 -1
- package/dist/scope-host-suite.js +190 -200
- package/dist/scope-host-suite.js.map +1 -1
- package/package.json +3 -3
package/dist/scope-host-suite.js
CHANGED
|
@@ -1,216 +1,61 @@
|
|
|
1
1
|
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
2
|
-
import {
|
|
2
|
+
import { moduleManifest, platformActorId, principalId, scopeId, tenantId, } from '@substrat-run/contracts';
|
|
3
3
|
import { ulid } from '@substrat-run/kernel';
|
|
4
|
-
|
|
5
|
-
id: '@test/mod',
|
|
6
|
-
version: '1.0.0',
|
|
7
|
-
kernelContract: '^0.0.1',
|
|
8
|
-
permissions: [{ key: 'testmod:use', description: 'test permission' }],
|
|
9
|
-
events: { emits: [], consumes: [] },
|
|
10
|
-
migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
|
|
11
|
-
attachmentTargets: [],
|
|
12
|
-
entityRelations: [{ entityType: 'item', parentType: 'box' }],
|
|
13
|
-
entitlementKey: 'testmod',
|
|
14
|
-
});
|
|
15
|
-
const flowModManifest = moduleManifest.parse({
|
|
16
|
-
id: '@test/flow',
|
|
17
|
-
version: '1.0.0',
|
|
18
|
-
kernelContract: '^0.0.1',
|
|
19
|
-
permissions: [{ key: 'flow:use', description: 'flow permission' }],
|
|
20
|
-
events: {
|
|
21
|
-
emits: [
|
|
22
|
-
{ type: 'flow.step1', schemaVersion: 1 },
|
|
23
|
-
{ type: 'flow.step2', schemaVersion: 1 },
|
|
24
|
-
],
|
|
25
|
-
consumes: [
|
|
26
|
-
{ type: 'flow.step1', schemaVersion: 1 },
|
|
27
|
-
{ type: 'flow.step2', schemaVersion: 1 },
|
|
28
|
-
],
|
|
29
|
-
},
|
|
30
|
-
migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
|
|
31
|
-
attachmentTargets: [],
|
|
32
|
-
entitlementKey: 'flow',
|
|
33
|
-
});
|
|
34
|
-
const lateModManifest = moduleManifest.parse({
|
|
35
|
-
id: '@test/late',
|
|
36
|
-
version: '1.0.0',
|
|
37
|
-
kernelContract: '^0.0.1',
|
|
38
|
-
permissions: [{ key: 'late:use', description: 'late module permission' }],
|
|
39
|
-
events: { emits: [], consumes: [] },
|
|
40
|
-
migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
|
|
41
|
-
attachmentTargets: [],
|
|
42
|
-
entitlementKey: 'late',
|
|
43
|
-
});
|
|
44
|
-
const addItem = (ctx, input) => {
|
|
45
|
-
ctx.sql.exec('INSERT INTO testmod_items (id, box) VALUES (?, ?)', [input.id, input.box]);
|
|
46
|
-
ctx.link({ entityType: 'item', entityId: input.id }, { entityType: 'box', entityId: input.box });
|
|
47
|
-
};
|
|
48
|
-
const relinkItem = (ctx, input) => {
|
|
49
|
-
ctx.link({ entityType: 'item', entityId: input.id }, { entityType: 'box', entityId: input.box });
|
|
50
|
-
};
|
|
51
|
-
const linkUndeclared = (ctx) => {
|
|
52
|
-
ctx.link({ entityType: 'box', entityId: 'b1' }, { entityType: 'item', entityId: 'i1' });
|
|
53
|
-
};
|
|
54
|
-
const readJournal = (ctx) => ctx.sql.query('SELECT module_id, version FROM _substrat_migrations ORDER BY module_id');
|
|
55
|
-
const readTuples = (ctx) => ctx.sql.query('SELECT subject, relation, object FROM _substrat_tuples ORDER BY subject');
|
|
4
|
+
import { billedMod, contractTestBareOps, contractTestInitialModules, gateModManifest, lateMod, testModManifest, victimModManifest, } from './modules.js';
|
|
56
5
|
/**
|
|
57
6
|
* The scope-host contract suite (design doc §11). Every adapter — pure SQLite,
|
|
58
7
|
* Cloudflare, and any future one — must pass this unchanged (D-14). If an
|
|
59
8
|
* adapter needs the suite modified, the contract changed and that is a
|
|
60
9
|
* decision, not a patch.
|
|
61
10
|
*/
|
|
62
|
-
export function scopeHostContractSuite(adapterName, makeFixture) {
|
|
11
|
+
export function scopeHostContractSuite(adapterName, makeFixture, opts = {}) {
|
|
12
|
+
const supportsRuntimeRegistration = opts.supportsRuntimeRegistration !== false;
|
|
63
13
|
describe(`scope-host contract: ${adapterName}`, () => {
|
|
64
14
|
let fixture;
|
|
65
15
|
let host;
|
|
66
16
|
const t1 = tenantId.parse(ulid());
|
|
67
17
|
const t2 = tenantId.parse(ulid());
|
|
18
|
+
const t3 = tenantId.parse(ulid()); // control-plane §4.1 tenant-lifecycle fixture
|
|
19
|
+
const t4 = tenantId.parse(ulid()); // §4.3 entitlement-gate fixture
|
|
68
20
|
const s1 = scopeId.parse(ulid());
|
|
69
21
|
const s2 = scopeId.parse(ulid());
|
|
22
|
+
const s3 = scopeId.parse(ulid()); // scope under t3
|
|
23
|
+
const s4 = scopeId.parse(ulid()); // scope under t4
|
|
70
24
|
const alice = principalId.parse(ulid());
|
|
25
|
+
const staff = platformActorId.parse(ulid());
|
|
71
26
|
beforeAll(async () => {
|
|
72
27
|
fixture = await makeFixture();
|
|
73
28
|
host = fixture.host;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
host.
|
|
92
|
-
stash.value = input;
|
|
93
|
-
});
|
|
94
|
-
host.defineOperation('test/read-stash', () => {
|
|
95
|
-
return stash.value;
|
|
96
|
-
});
|
|
97
|
-
host.defineOperation('test/emit-event', (ctx, input) => {
|
|
98
|
-
ctx.emit({
|
|
99
|
-
type: 'test.happened',
|
|
100
|
-
schemaVersion: 1,
|
|
101
|
-
entity: { entityType: 'test-thing', entityId: 'x1' },
|
|
102
|
-
piiClass: input?.subject ? 'pseudonymous' : 'none',
|
|
103
|
-
...(input?.subject ? { subjectId: dataSubjectId.parse(input.subject) } : {}),
|
|
104
|
-
payload: { hello: 'world' },
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
host.defineOperation('test/emit-unclassified-pii', (ctx) => {
|
|
108
|
-
// piiClass 'direct' without subjectId — must be rejected at emit (§6.1)
|
|
109
|
-
ctx.emit({
|
|
110
|
-
type: 'test.bad',
|
|
111
|
-
schemaVersion: 1,
|
|
112
|
-
entity: { entityType: 'test-thing', entityId: 'x2' },
|
|
113
|
-
piiClass: 'direct',
|
|
114
|
-
payload: {},
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
host.defineOperation('test/read-outbox', (ctx) => ctx.sql.query('SELECT * FROM _substrat_outbox ORDER BY id'));
|
|
118
|
-
host.defineOperation('test/write-marker', (ctx, input) => {
|
|
119
|
-
ctx.sql.exec('CREATE TABLE IF NOT EXISTS marker (v TEXT NOT NULL)');
|
|
120
|
-
ctx.sql.exec('INSERT INTO marker (v) VALUES (?)', [input.v]);
|
|
121
|
-
});
|
|
122
|
-
host.defineOperation('test/read-markers', (ctx) => {
|
|
123
|
-
ctx.sql.exec('CREATE TABLE IF NOT EXISTS marker (v TEXT NOT NULL)');
|
|
124
|
-
return ctx.sql.query('SELECT v FROM marker').map((r) => r.v);
|
|
125
|
-
});
|
|
126
|
-
host.defineOperation('test/atomic-init', (ctx) => {
|
|
127
|
-
ctx.sql.exec('CREATE TABLE IF NOT EXISTS atomic_t (n INTEGER NOT NULL)');
|
|
128
|
-
});
|
|
129
|
-
host.defineOperation('test/atomic-fail', (ctx) => {
|
|
130
|
-
ctx.sql.exec('INSERT INTO atomic_t (n) VALUES (1)');
|
|
131
|
-
ctx.emit({
|
|
132
|
-
type: 'test.atomic',
|
|
133
|
-
schemaVersion: 1,
|
|
134
|
-
entity: { entityType: 'test-thing', entityId: 'x9' },
|
|
135
|
-
piiClass: 'none',
|
|
136
|
-
payload: {},
|
|
137
|
-
});
|
|
138
|
-
throw new Error('boom');
|
|
139
|
-
});
|
|
140
|
-
host.defineOperation('test/atomic-read', (ctx) => ({
|
|
141
|
-
rows: ctx.sql.query('SELECT n FROM atomic_t').length,
|
|
142
|
-
events: ctx.sql.query('SELECT id FROM _substrat_outbox WHERE type = ?', ['test.atomic'])
|
|
143
|
-
.length,
|
|
144
|
-
}));
|
|
145
|
-
host.registerModule({
|
|
146
|
-
manifest: testModManifest,
|
|
147
|
-
migrations: [
|
|
148
|
-
{
|
|
149
|
-
version: '0001-init',
|
|
150
|
-
sql: 'CREATE TABLE testmod_items (id TEXT PRIMARY KEY, box TEXT NOT NULL)',
|
|
151
|
-
},
|
|
152
|
-
],
|
|
153
|
-
operations: {
|
|
154
|
-
'testmod/add': addItem,
|
|
155
|
-
'testmod/relink': relinkItem,
|
|
156
|
-
'testmod/link-undeclared': linkUndeclared,
|
|
157
|
-
'testmod/read-journal': readJournal,
|
|
158
|
-
'testmod/read-tuples': readTuples,
|
|
159
|
-
},
|
|
160
|
-
});
|
|
161
|
-
host.registerModule({
|
|
162
|
-
manifest: flowModManifest,
|
|
163
|
-
migrations: [
|
|
164
|
-
{
|
|
165
|
-
version: '0001-init',
|
|
166
|
-
sql: 'CREATE TABLE flow_log (event_id TEXT PRIMARY KEY, type TEXT NOT NULL)',
|
|
167
|
-
},
|
|
168
|
-
],
|
|
169
|
-
operations: {
|
|
170
|
-
'flow/produce': ((ctx) => {
|
|
171
|
-
ctx.emit({
|
|
172
|
-
type: 'flow.step1',
|
|
173
|
-
schemaVersion: 1,
|
|
174
|
-
entity: { entityType: 'flow-thing', entityId: 'f1' },
|
|
175
|
-
piiClass: 'none',
|
|
176
|
-
payload: {},
|
|
177
|
-
});
|
|
178
|
-
}),
|
|
179
|
-
'flow/log': ((ctx) => ctx.sql.query('SELECT event_id, type FROM flow_log ORDER BY event_id')),
|
|
180
|
-
'flow/deliveries': ((ctx) => ctx.sql.query(`SELECT event_id, consumer_module, error FROM _substrat_deliveries
|
|
181
|
-
WHERE consumer_module = '@test/flow' ORDER BY event_id`)),
|
|
182
|
-
'flow/step2-actors': ((ctx) => ctx.sql.query(`SELECT actor FROM _substrat_outbox WHERE type = 'flow.step2'`)),
|
|
183
|
-
},
|
|
184
|
-
consumers: {
|
|
185
|
-
'flow.step1': (ctx, event) => {
|
|
186
|
-
ctx.sql.exec('INSERT INTO flow_log (event_id, type) VALUES (?, ?)', [
|
|
187
|
-
event.id,
|
|
188
|
-
event.type,
|
|
189
|
-
]);
|
|
190
|
-
ctx.emit({
|
|
191
|
-
type: 'flow.step2',
|
|
192
|
-
schemaVersion: 1,
|
|
193
|
-
entity: event.entity,
|
|
194
|
-
piiClass: 'none',
|
|
195
|
-
payload: {},
|
|
196
|
-
});
|
|
197
|
-
},
|
|
198
|
-
'flow.step2': (ctx, event) => {
|
|
199
|
-
ctx.sql.exec('INSERT INTO flow_log (event_id, type) VALUES (?, ?)', [
|
|
200
|
-
event.id,
|
|
201
|
-
event.type,
|
|
202
|
-
]);
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
});
|
|
206
|
-
await host.provisionScope({ tenantId: t1, scopeId: s1, jurisdiction: 'eu' });
|
|
207
|
-
await host.provisionScope({ tenantId: t2, scopeId: s2, jurisdiction: 'eu' });
|
|
29
|
+
// Bare operations (no manifest) and the initial module set, registered in
|
|
30
|
+
// the order the contract fixes (see contractTestInitialModules).
|
|
31
|
+
for (const [name, handler] of Object.entries(contractTestBareOps)) {
|
|
32
|
+
host.defineOperation(name, handler);
|
|
33
|
+
}
|
|
34
|
+
for (const reg of contractTestInitialModules) {
|
|
35
|
+
host.registerModule(reg);
|
|
36
|
+
}
|
|
37
|
+
// A scope requires an existing active tenant (§4.1) — create then provision.
|
|
38
|
+
await host.admin.createTenant(staff, { id: t1, slug: 'tenant-one', name: 'Tenant One' });
|
|
39
|
+
await host.admin.createTenant(staff, { id: t2, slug: 'tenant-two', name: 'Tenant Two' });
|
|
40
|
+
// Entitlements are default-deny (§4.3): t1 invokes these modules' operations,
|
|
41
|
+
// so it must hold their SKU flags. (t2 only exercises bare, ungated ops.)
|
|
42
|
+
for (const key of ['testmod', 'flow', 'guarded', 'victim', 'late']) {
|
|
43
|
+
await host.admin.grantEntitlement(staff, t1, key);
|
|
44
|
+
}
|
|
45
|
+
await host.provisionScope(staff, { tenantId: t1, scopeId: s1, jurisdiction: 'eu' });
|
|
46
|
+
await host.provisionScope(staff, { tenantId: t2, scopeId: s2, jurisdiction: 'eu' });
|
|
208
47
|
});
|
|
209
48
|
afterAll(async () => {
|
|
210
49
|
await fixture.cleanup();
|
|
211
50
|
});
|
|
212
51
|
it('provisioning is idempotent', async () => {
|
|
213
|
-
await expect(host.provisionScope({ tenantId: t1, scopeId: s1, jurisdiction: 'eu' })).resolves.toBeUndefined();
|
|
52
|
+
await expect(host.provisionScope(staff, { tenantId: t1, scopeId: s1, jurisdiction: 'eu' })).resolves.toBeUndefined();
|
|
53
|
+
});
|
|
54
|
+
it('refuses to provision a scope under a tenant with no record (§4.1)', async () => {
|
|
55
|
+
await expect(host.provisionScope(staff, {
|
|
56
|
+
tenantId: tenantId.parse(ulid()),
|
|
57
|
+
scopeId: scopeId.parse(ulid()),
|
|
58
|
+
})).rejects.toThrow(/unknown tenant/);
|
|
214
59
|
});
|
|
215
60
|
it('fails closed on a mismatched (tenantId, scopeId) pair (K-3)', async () => {
|
|
216
61
|
await expect(host.getScope(alice, t2, s1)).rejects.toThrow();
|
|
@@ -280,17 +125,8 @@ export function scopeHostContractSuite(adapterName, makeFixture) {
|
|
|
280
125
|
const journal2 = await again.invoke('testmod/read-journal');
|
|
281
126
|
expect(journal2.filter((r) => r.module_id === '@test/mod')).toHaveLength(1);
|
|
282
127
|
});
|
|
283
|
-
it('applies migrations of modules registered after a scope was first accessed', async () => {
|
|
284
|
-
host.registerModule(
|
|
285
|
-
manifest: lateModManifest,
|
|
286
|
-
migrations: [
|
|
287
|
-
{ version: '0001-init', sql: 'CREATE TABLE late_t (id TEXT PRIMARY KEY)' },
|
|
288
|
-
],
|
|
289
|
-
operations: {
|
|
290
|
-
'late/check': ((ctx) => ctx.sql.query(`SELECT name FROM sqlite_master WHERE name = 'late_t'`)
|
|
291
|
-
.length),
|
|
292
|
-
},
|
|
293
|
-
});
|
|
128
|
+
it.runIf(supportsRuntimeRegistration)('applies migrations of modules registered after a scope was first accessed', async () => {
|
|
129
|
+
host.registerModule(lateMod);
|
|
294
130
|
const stub = await host.getScope(alice, t1, s1);
|
|
295
131
|
await expect(stub.invoke('late/check')).resolves.toBe(1);
|
|
296
132
|
const journal = await stub.invoke('testmod/read-journal');
|
|
@@ -299,6 +135,60 @@ export function scopeHostContractSuite(adapterName, makeFixture) {
|
|
|
299
135
|
it('rejects duplicate module registration', () => {
|
|
300
136
|
expect(() => host.registerModule({ manifest: testModManifest })).toThrow(/already registered/);
|
|
301
137
|
});
|
|
138
|
+
// -- manifest-declared operation guards (K-17) ---------------------------
|
|
139
|
+
it('runs a manifest guard before the handler; a throw blocks and rolls back (K-17)', async () => {
|
|
140
|
+
const stub = await host.getScope(alice, t1, s1);
|
|
141
|
+
// Guard fails → the handler never ran: no row, and no event on the spine.
|
|
142
|
+
await expect(stub.invoke('guarded/act', { flag: 'stop' })).rejects.toThrow(/expected flag/);
|
|
143
|
+
await expect(stub.invoke('guarded/rows')).resolves.toEqual([]);
|
|
144
|
+
await expect(stub.invoke('guarded/events')).resolves.toBe(0);
|
|
145
|
+
// Guard passes → the handler runs, in the same transaction.
|
|
146
|
+
await stub.invoke('guarded/act', { flag: 'go' });
|
|
147
|
+
await expect(stub.invoke('guarded/rows')).resolves.toEqual(['go']);
|
|
148
|
+
await expect(stub.invoke('guarded/events')).resolves.toBe(1);
|
|
149
|
+
});
|
|
150
|
+
it('fails closed when a declared guard names a predicate no module contributes', async () => {
|
|
151
|
+
const stub = await host.getScope(alice, t1, s1);
|
|
152
|
+
await expect(stub.invoke('guarded/orphan')).rejects.toThrow(/unknown guard predicate/);
|
|
153
|
+
});
|
|
154
|
+
it('rejects a predicate name already contributed by another module', () => {
|
|
155
|
+
expect(() => host.registerModule({
|
|
156
|
+
manifest: moduleManifest.parse({
|
|
157
|
+
...gateModManifest,
|
|
158
|
+
id: '@test/gate-clash',
|
|
159
|
+
entitlementKey: 'gate-clash',
|
|
160
|
+
permissions: [{ key: 'gateclash:use', description: 'clash' }],
|
|
161
|
+
}),
|
|
162
|
+
predicates: { 'gate/flag-set': () => undefined },
|
|
163
|
+
})).toThrow(/already contributed/);
|
|
164
|
+
});
|
|
165
|
+
it('leaves unguarded operations untouched', async () => {
|
|
166
|
+
const stub = await host.getScope(alice, t1, s1);
|
|
167
|
+
await expect(stub.invoke('guarded/rows')).resolves.toEqual(['go']);
|
|
168
|
+
});
|
|
169
|
+
// -- operation withdrawal (K-17) -----------------------------------------
|
|
170
|
+
it('withdraws a default binding regardless of registration order (K-17)', async () => {
|
|
171
|
+
const stub = await host.getScope(alice, t1, s1);
|
|
172
|
+
// withdrawn BEFORE its module registered…
|
|
173
|
+
await expect(stub.invoke('victim/a')).rejects.toThrow(/unknown operation/);
|
|
174
|
+
// …and AFTER its module registered. Both are indistinguishable from an
|
|
175
|
+
// operation that was never defined: fail closed, no special error class.
|
|
176
|
+
await expect(stub.invoke('victim/b')).rejects.toThrow(/unknown operation/);
|
|
177
|
+
// Withdrawal is per-operation and opt-in: everything else still binds.
|
|
178
|
+
await expect(stub.invoke('victim/c')).resolves.toBe('c');
|
|
179
|
+
});
|
|
180
|
+
it('rejects a module withdrawing its own operation', () => {
|
|
181
|
+
expect(() => host.registerModule({
|
|
182
|
+
manifest: moduleManifest.parse({
|
|
183
|
+
...victimModManifest,
|
|
184
|
+
id: '@test/self-withdrawer',
|
|
185
|
+
entitlementKey: 'self-withdrawer',
|
|
186
|
+
permissions: [{ key: 'selfw:use', description: 'self' }],
|
|
187
|
+
withdraws: ['selfw/op'],
|
|
188
|
+
}),
|
|
189
|
+
operations: { 'selfw/op': (() => 'x') },
|
|
190
|
+
})).toThrow(/withdraws its own operation/);
|
|
191
|
+
});
|
|
302
192
|
it('links declared entity relations, idempotently (K-16)', async () => {
|
|
303
193
|
const stub = await host.getScope(alice, t1, s1);
|
|
304
194
|
await stub.invoke('testmod/add', { id: 'i1', box: 'b1' });
|
|
@@ -333,6 +223,106 @@ export function scopeHostContractSuite(adapterName, makeFixture) {
|
|
|
333
223
|
expect(JSON.parse(row.actor)).toEqual({ system: '@test/flow' });
|
|
334
224
|
}
|
|
335
225
|
});
|
|
226
|
+
// -- tenant registry + lifecycle (control-plane.md §4.1) -----------------
|
|
227
|
+
it('creates a tenant record, idempotently; only real creates are audited', async () => {
|
|
228
|
+
await host.admin.createTenant(staff, { id: t3, slug: 'acme-co', name: 'Acme Co' });
|
|
229
|
+
await host.admin.createTenant(staff, { id: t3, slug: 'acme-co', name: 'Acme Co' }); // no-op
|
|
230
|
+
expect(await host.admin.getTenant(t3)).toMatchObject({
|
|
231
|
+
id: t3,
|
|
232
|
+
slug: 'acme-co',
|
|
233
|
+
name: 'Acme Co',
|
|
234
|
+
status: 'active',
|
|
235
|
+
});
|
|
236
|
+
expect((await host.admin.listTenants()).filter((x) => x.id === t3)).toHaveLength(1);
|
|
237
|
+
const creates = (await host.admin.auditLog({ tenantId: t3 })).filter((r) => r.action === 'createTenant');
|
|
238
|
+
expect(creates).toHaveLength(1); // the idempotent no-op left no row
|
|
239
|
+
expect(creates[0].actor).toBe(staff);
|
|
240
|
+
});
|
|
241
|
+
it('suspends a tenant: getScope fails closed for its scopes; reactivation restores (§4.1)', async () => {
|
|
242
|
+
await host.provisionScope(staff, { tenantId: t3, scopeId: s3, jurisdiction: 'eu' });
|
|
243
|
+
await expect(host.getScope(alice, t3, s3)).resolves.toBeDefined();
|
|
244
|
+
await host.admin.setTenantStatus(staff, t3, 'suspended');
|
|
245
|
+
await expect(host.getScope(alice, t3, s3)).rejects.toThrow(/not active/);
|
|
246
|
+
await host.admin.setTenantStatus(staff, t3, 'active');
|
|
247
|
+
await expect(host.getScope(alice, t3, s3)).resolves.toBeDefined();
|
|
248
|
+
});
|
|
249
|
+
it('records setTenantStatus with before/after status', async () => {
|
|
250
|
+
const transitions = (await host.admin.auditLog({ tenantId: t3 })).filter((r) => r.action === 'setTenantStatus');
|
|
251
|
+
expect(transitions.length).toBeGreaterThanOrEqual(2);
|
|
252
|
+
const suspend = transitions.find((r) => r.after.status === 'suspended');
|
|
253
|
+
expect(suspend.before.status).toBe('active');
|
|
254
|
+
});
|
|
255
|
+
it('rejects a status transition on an unknown tenant', async () => {
|
|
256
|
+
await expect(host.admin.setTenantStatus(staff, tenantId.parse(ulid()), 'suspended')).rejects.toThrow(/unknown tenant/);
|
|
257
|
+
});
|
|
258
|
+
// -- scope lifecycle (control-plane.md §4.2) ------------------------------
|
|
259
|
+
it('suspend/unsuspend a scope gates getScope for that scope alone (§4.2)', async () => {
|
|
260
|
+
// s3 is active (reactivated above). Suspending it fails closed…
|
|
261
|
+
await host.admin.suspendScope(staff, t3, s3);
|
|
262
|
+
await expect(host.getScope(alice, t3, s3)).rejects.toThrow(/scope not active/);
|
|
263
|
+
// …while a sibling scope under the same tenant is untouched.
|
|
264
|
+
const sibling = scopeId.parse(ulid());
|
|
265
|
+
await host.provisionScope(staff, { tenantId: t3, scopeId: sibling, jurisdiction: 'eu' });
|
|
266
|
+
await expect(host.getScope(alice, t3, sibling)).resolves.toBeDefined();
|
|
267
|
+
// Unsuspend restores.
|
|
268
|
+
await host.admin.unsuspendScope(staff, t3, s3);
|
|
269
|
+
await expect(host.getScope(alice, t3, s3)).resolves.toBeDefined();
|
|
270
|
+
});
|
|
271
|
+
it('archive then un-archive is an explicit audited restore (§4.2)', async () => {
|
|
272
|
+
await host.admin.archiveScope(staff, t3, s3);
|
|
273
|
+
await expect(host.getScope(alice, t3, s3)).rejects.toThrow(/scope not active/);
|
|
274
|
+
await host.admin.unarchiveScope(staff, t3, s3);
|
|
275
|
+
await expect(host.getScope(alice, t3, s3)).resolves.toBeDefined();
|
|
276
|
+
const transitions = (await host.admin.auditLog({ tenantId: t3 })).filter((r) => r.action === 'archiveScope' || r.action === 'unarchiveScope');
|
|
277
|
+
expect(transitions.map((r) => r.action)).toEqual(expect.arrayContaining(['archiveScope', 'unarchiveScope']));
|
|
278
|
+
for (const r of transitions) {
|
|
279
|
+
expect(r.scopeId).toBe(s3);
|
|
280
|
+
expect(r.actor).toBe(staff);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
it('rejects an illegal scope transition, fail closed (§4.2)', async () => {
|
|
284
|
+
// s3 is active — you cannot un-archive an active scope.
|
|
285
|
+
await expect(host.admin.unarchiveScope(staff, t3, s3)).rejects.toThrow(/illegal scope transition/);
|
|
286
|
+
});
|
|
287
|
+
it('rejects a lifecycle transition on a scope not under the named tenant', async () => {
|
|
288
|
+
await expect(host.admin.suspendScope(staff, t1, s3)).rejects.toThrow(/unknown scope for tenant/);
|
|
289
|
+
});
|
|
290
|
+
// -- entitlement gate (control-plane.md §4.3) -----------------------------
|
|
291
|
+
it('gates a module operation on the tenant holding its SKU flag (§4.3)', async () => {
|
|
292
|
+
host.registerModule(billedMod);
|
|
293
|
+
await host.admin.createTenant(staff, { id: t4, slug: 'billed-co', name: 'Billed Co' });
|
|
294
|
+
await host.provisionScope(staff, { tenantId: t4, scopeId: s4, jurisdiction: 'eu' });
|
|
295
|
+
const stub = await host.getScope(alice, t4, s4);
|
|
296
|
+
// Default-deny: the flag is not held, so the operation does not resolve.
|
|
297
|
+
await expect(stub.invoke('billed/act')).rejects.toThrow(/not entitled/);
|
|
298
|
+
// Granting the flag loads the module for this tenant.
|
|
299
|
+
await host.admin.grantEntitlement(staff, t4, 'billed');
|
|
300
|
+
await expect(stub.invoke('billed/act')).resolves.toBe('ran');
|
|
301
|
+
expect(await host.admin.listEntitlements(t4)).toContain('billed');
|
|
302
|
+
// Revoking it takes the operation away again — as if never registered.
|
|
303
|
+
await host.admin.revokeEntitlement(staff, t4, 'billed');
|
|
304
|
+
await expect(stub.invoke('billed/act')).rejects.toThrow(/not entitled/);
|
|
305
|
+
expect(await host.admin.listEntitlements(t4)).not.toContain('billed');
|
|
306
|
+
});
|
|
307
|
+
it('audits grant/revoke idempotently and records the SKU flag', async () => {
|
|
308
|
+
// Re-grant twice: only the first is a real change, so only one row.
|
|
309
|
+
await host.admin.grantEntitlement(staff, t4, 'audited-sku');
|
|
310
|
+
await host.admin.grantEntitlement(staff, t4, 'audited-sku');
|
|
311
|
+
const grants = (await host.admin.auditLog({ tenantId: t4 })).filter((r) => r.action === 'grantEntitlement' &&
|
|
312
|
+
r.after.entitlementKey === 'audited-sku');
|
|
313
|
+
expect(grants).toHaveLength(1);
|
|
314
|
+
expect(grants[0].actor).toBe(staff);
|
|
315
|
+
await host.admin.revokeEntitlement(staff, t4, 'audited-sku');
|
|
316
|
+
const revokes = (await host.admin.auditLog({ tenantId: t4 })).filter((r) => r.action === 'revokeEntitlement');
|
|
317
|
+
expect(revokes.length).toBeGreaterThanOrEqual(1);
|
|
318
|
+
expect(revokes[revokes.length - 1].before.entitlementKey).toBe('audited-sku');
|
|
319
|
+
});
|
|
320
|
+
it('leaves bare (module-less) operations ungated', async () => {
|
|
321
|
+
// test/read-counter was registered via defineOperation, no manifest — it
|
|
322
|
+
// must resolve regardless of entitlements.
|
|
323
|
+
const stub = await host.getScope(alice, t1, s1);
|
|
324
|
+
await expect(stub.invoke('test/read-counter')).resolves.toBeTypeOf('number');
|
|
325
|
+
});
|
|
336
326
|
});
|
|
337
327
|
}
|
|
338
328
|
//# sourceMappingURL=scope-host-suite.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-host-suite.js","sourceRoot":"","sources":["../src/scope-host-suite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scope-host-suite.js","sourceRoot":"","sources":["../src/scope-host-suite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/contract-tests",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "The suite every scope-host adapter must pass, forever (D-14)",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"vitest": "^3.0.0",
|
|
26
|
-
"@substrat-run/
|
|
27
|
-
"@substrat-run/
|
|
26
|
+
"@substrat-run/kernel": "^0.2.1",
|
|
27
|
+
"@substrat-run/contracts": "^0.2.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"typescript": "^5.6.0"
|