@proteinjs/db 1.25.1 → 1.26.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/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.js +3 -3
- package/dist/generated/test/index.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/src/Db.d.ts +48 -1
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +206 -2
- package/dist/src/Db.js.map +1 -1
- package/dist/src/MigrationRunner.d.ts.map +1 -1
- package/dist/src/MigrationRunner.js +6 -0
- package/dist/src/MigrationRunner.js.map +1 -1
- package/dist/src/UpdatePreserving.d.ts +34 -0
- package/dist/src/UpdatePreserving.d.ts.map +1 -0
- package/dist/src/UpdatePreserving.js +72 -0
- package/dist/src/UpdatePreserving.js.map +1 -0
- package/dist/src/auth/TableAuth.d.ts +9 -0
- package/dist/src/auth/TableAuth.d.ts.map +1 -1
- package/dist/src/auth/TableAuth.js +36 -5
- package/dist/src/auth/TableAuth.js.map +1 -1
- package/dist/src/auth/TableServiceAuth.d.ts +7 -0
- package/dist/src/auth/TableServiceAuth.d.ts.map +1 -1
- package/dist/src/auth/TableServiceAuth.js +34 -0
- package/dist/src/auth/TableServiceAuth.js.map +1 -1
- package/dist/src/reference/ArrayMembershipOps.d.ts +69 -0
- package/dist/src/reference/ArrayMembershipOps.d.ts.map +1 -0
- package/dist/src/reference/ArrayMembershipOps.js +146 -0
- package/dist/src/reference/ArrayMembershipOps.js.map +1 -0
- package/dist/src/services/DbService.d.ts +38 -0
- package/dist/src/services/DbService.d.ts.map +1 -1
- package/dist/src/services/DbService.js.map +1 -1
- package/dist/src/transaction/Transaction.d.ts +19 -2
- package/dist/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/src/transaction/Transaction.js +38 -0
- package/dist/src/transaction/Transaction.js.map +1 -1
- package/dist/src/transaction/TransactionContextFactory.d.ts +10 -0
- package/dist/src/transaction/TransactionContextFactory.d.ts.map +1 -1
- package/dist/test/ArrayMembershipOps.test.d.ts +2 -0
- package/dist/test/ArrayMembershipOps.test.d.ts.map +1 -0
- package/dist/test/ArrayMembershipOps.test.js +147 -0
- package/dist/test/ArrayMembershipOps.test.js.map +1 -0
- package/dist/test/TableServiceAuth.test.js +108 -4
- package/dist/test/TableServiceAuth.test.js.map +1 -1
- package/generated/index.ts +1 -1
- package/generated/test/index.ts +3 -3
- package/index.ts +2 -0
- package/package.json +4 -4
- package/src/Db.ts +160 -1
- package/src/MigrationRunner.ts +6 -0
- package/src/UpdatePreserving.ts +89 -0
- package/src/auth/TableAuth.ts +17 -4
- package/src/auth/TableServiceAuth.ts +36 -1
- package/src/reference/ArrayMembershipOps.ts +155 -0
- package/src/services/DbService.ts +38 -0
- package/src/transaction/Transaction.ts +52 -2
- package/src/transaction/TransactionContextFactory.ts +11 -0
- package/test/ArrayMembershipOps.test.ts +160 -0
- package/test/TableServiceAuth.test.ts +148 -4
|
@@ -240,6 +240,44 @@ var Transaction = /** @class */ (function () {
|
|
|
240
240
|
}
|
|
241
241
|
this.ops.push({ name: 'delete', args: args });
|
|
242
242
|
};
|
|
243
|
+
/**
|
|
244
|
+
* Queue a commutative array-membership update (see `Db.updateArrayMembership`).
|
|
245
|
+
*
|
|
246
|
+
* The op is applied read-modify-write against COMMITTED truth server-side, so it
|
|
247
|
+
* does not touch the local record cache (the caller's in-memory state is the
|
|
248
|
+
* client-side truth and was already mutated by the operation that queued this);
|
|
249
|
+
* `onUpdate` listeners do not fire for membership ops.
|
|
250
|
+
*/
|
|
251
|
+
Transaction.prototype.updateArrayMembership = function (table, update) {
|
|
252
|
+
if (update.ops.length === 0) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
this.ops.push({ name: 'updateArrayMembership', args: [table, update] });
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* Queue an update with committed-truth preservation for the listed column
|
|
259
|
+
* sub-paths (see `Db.updatePreserving`). Cache semantics match `update`
|
|
260
|
+
* for the provided fields; the preservation itself happens server-side.
|
|
261
|
+
*/
|
|
262
|
+
Transaction.prototype.updatePreserving = function (table, record, preserve) {
|
|
263
|
+
if (!record.id) {
|
|
264
|
+
throw new Error("updatePreserving must be called with a record with an id property");
|
|
265
|
+
}
|
|
266
|
+
var recordMap = this.recordMap(table.name);
|
|
267
|
+
var existingRecord = recordMap[record.id];
|
|
268
|
+
if (existingRecord) {
|
|
269
|
+
var prevRecord = __assign({}, existingRecord);
|
|
270
|
+
Object.keys(record).forEach(function (key) {
|
|
271
|
+
if (key !== 'id') {
|
|
272
|
+
existingRecord[key] = record[key];
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
if (this.onUpdate) {
|
|
276
|
+
this.onUpdate(table, prevRecord, existingRecord);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
this.ops.push({ name: 'updatePreserving', args: [table, record, preserve] });
|
|
280
|
+
};
|
|
243
281
|
/**
|
|
244
282
|
* If a QueryBuilder contains a condition like this:
|
|
245
283
|
* `{ field: 'id', operator: 'IN', value: string[] }`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yDAA2D;AAC3D,kCAAwD;AACxD,wCAA+C;AAC/C,gDAA8D;
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/transaction/Transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { Loadable } from '@proteinjs/reflection';
|
|
2
2
|
export declare const getDefaultTransactionContextFactory: () => DefaultTransactionContextFactory;
|
|
3
|
+
/** See {@link TransactionContextData.postCommitHooks} and `Db.runAfterCommit`. */
|
|
4
|
+
export type PostCommitHook = () => void | Promise<void>;
|
|
3
5
|
export interface TransactionContextData {
|
|
4
6
|
currentTransaction?: any;
|
|
7
|
+
/**
|
|
8
|
+
* Hooks queued to run after the current transaction COMMITS — and never on rollback: a hook
|
|
9
|
+
* queued for a write that gets rolled back dies with the write. Seeded by `Db.runTransaction`
|
|
10
|
+
* on the ambient context so every `Db` instance created inside the transaction (table
|
|
11
|
+
* watchers, nested helpers) shares one queue; registered via `Db.runAfterCommit`, drained by
|
|
12
|
+
* `Db.runTransaction` once the driver reports the commit durable.
|
|
13
|
+
*/
|
|
14
|
+
postCommitHooks?: PostCommitHook[];
|
|
5
15
|
}
|
|
6
16
|
export interface DefaultTransactionContextFactory extends Loadable {
|
|
7
17
|
getTransactionContext(): TransactionContextData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionContextFactory.d.ts","sourceRoot":"","sources":["../../../src/transaction/TransactionContextFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AAEnE,eAAO,MAAM,mCAAmC,wCACmE,CAAC;AAEpH,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"TransactionContextFactory.d.ts","sourceRoot":"","sources":["../../../src/transaction/TransactionContextFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AAEnE,eAAO,MAAM,mCAAmC,wCACmE,CAAC;AAEpH,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,EAAE,GAAG,CAAC;IACzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,gCAAiC,SAAQ,QAAQ;IAChE,qBAAqB,IAAI,sBAAsB,CAAC;IAChD,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArrayMembershipOps.test.d.ts","sourceRoot":"","sources":["../../test/ArrayMembershipOps.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var ArrayMembershipOps_1 = require("../src/reference/ArrayMembershipOps");
|
|
4
|
+
var UpdatePreserving_1 = require("../src/UpdatePreserving");
|
|
5
|
+
var replay = function (before, after) {
|
|
6
|
+
return (0, ArrayMembershipOps_1.applyArrayMembershipOps)(before, (0, ArrayMembershipOps_1.computeArrayMembershipOps)(before, after)).ids;
|
|
7
|
+
};
|
|
8
|
+
describe('computeArrayMembershipOps + applyArrayMembershipOps', function () {
|
|
9
|
+
test('replaying the computed ops on the before-list yields exactly the after-list', function () {
|
|
10
|
+
var cases = [
|
|
11
|
+
[[], []],
|
|
12
|
+
[[], ['a']],
|
|
13
|
+
[['a'], []],
|
|
14
|
+
[
|
|
15
|
+
['a', 'b', 'c'],
|
|
16
|
+
['a', 'b', 'c'],
|
|
17
|
+
],
|
|
18
|
+
[
|
|
19
|
+
['a', 'b', 'c'],
|
|
20
|
+
['a', 'c'],
|
|
21
|
+
],
|
|
22
|
+
[
|
|
23
|
+
['a', 'c'],
|
|
24
|
+
['a', 'b', 'c'],
|
|
25
|
+
],
|
|
26
|
+
[
|
|
27
|
+
['a', 'b', 'c'],
|
|
28
|
+
['c', 'b', 'a'],
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
['a', 'b', 'c', 'd', 'e'],
|
|
32
|
+
['e', 'x', 'a', 'c'],
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
['a', 'b'],
|
|
36
|
+
['x', 'y', 'z'],
|
|
37
|
+
],
|
|
38
|
+
[
|
|
39
|
+
['a', 'b', 'c', 'd'],
|
|
40
|
+
['b', 'd', 'a', 'c'],
|
|
41
|
+
],
|
|
42
|
+
];
|
|
43
|
+
for (var _i = 0, cases_1 = cases; _i < cases_1.length; _i++) {
|
|
44
|
+
var _a = cases_1[_i], before = _a[0], after = _a[1];
|
|
45
|
+
expect(replay(before, after)).toEqual(after);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
test('no-op diff computes zero ops and apply reports unchanged', function () {
|
|
49
|
+
var ops = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(['a', 'b'], ['a', 'b']);
|
|
50
|
+
expect(ops).toEqual([]);
|
|
51
|
+
expect((0, ArrayMembershipOps_1.applyArrayMembershipOps)(['a', 'b'], ops).changed).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
test('unchanged relative order of survivors emits no move ops (pure adds/removes)', function () {
|
|
54
|
+
var ops = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(['a', 'b', 'c', 'd'], ['a', 'c', 'd', 'e']);
|
|
55
|
+
expect(ops).toEqual([
|
|
56
|
+
{ op: 'remove', id: 'b' },
|
|
57
|
+
{ op: 'add', id: 'e', afterId: 'd' },
|
|
58
|
+
]);
|
|
59
|
+
});
|
|
60
|
+
test('CONVERGENCE: concurrent removes of different ids both land regardless of commit order', function () {
|
|
61
|
+
// Client A removes x, client B removes y; each computed against the same base.
|
|
62
|
+
var base = ['x', 'y', 'z'];
|
|
63
|
+
var opsA = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(base, ['y', 'z']);
|
|
64
|
+
var opsB = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(base, ['x', 'z']);
|
|
65
|
+
var abOrder = (0, ArrayMembershipOps_1.applyArrayMembershipOps)((0, ArrayMembershipOps_1.applyArrayMembershipOps)(base, opsA).ids, opsB).ids;
|
|
66
|
+
var baOrder = (0, ArrayMembershipOps_1.applyArrayMembershipOps)((0, ArrayMembershipOps_1.applyArrayMembershipOps)(base, opsB).ids, opsA).ids;
|
|
67
|
+
expect(abOrder).toEqual(['z']);
|
|
68
|
+
expect(baOrder).toEqual(['z']);
|
|
69
|
+
});
|
|
70
|
+
test('CONVERGENCE: concurrent adds of different ids both survive regardless of commit order', function () {
|
|
71
|
+
var base = ['a'];
|
|
72
|
+
var opsA = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(base, ['a', 'p']); // A appends p
|
|
73
|
+
var opsB = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(base, ['a', 'q']); // B appends q
|
|
74
|
+
var abOrder = (0, ArrayMembershipOps_1.applyArrayMembershipOps)((0, ArrayMembershipOps_1.applyArrayMembershipOps)(base, opsA).ids, opsB).ids;
|
|
75
|
+
var baOrder = (0, ArrayMembershipOps_1.applyArrayMembershipOps)((0, ArrayMembershipOps_1.applyArrayMembershipOps)(base, opsB).ids, opsA).ids;
|
|
76
|
+
expect(new Set(abOrder)).toEqual(new Set(['a', 'p', 'q']));
|
|
77
|
+
expect(new Set(baOrder)).toEqual(new Set(['a', 'p', 'q']));
|
|
78
|
+
});
|
|
79
|
+
test('CONVERGENCE: the founder burst — three sequential deletes converge under ANY commit order', function () {
|
|
80
|
+
// In-memory the client deletes d, then e, then f (each delta computed
|
|
81
|
+
// against its own pre-state, as deleteThought does). The wire commits in a
|
|
82
|
+
// reordered sequence (Spanner abort/retry): every permutation must end at
|
|
83
|
+
// the fully-deleted list — the pre-fix full-list snapshots resurrect rows.
|
|
84
|
+
var s0 = ['a', 'd', 'e', 'f'];
|
|
85
|
+
var del1 = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(s0, ['a', 'e', 'f']);
|
|
86
|
+
var del2 = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(['a', 'e', 'f'], ['a', 'f']);
|
|
87
|
+
var del3 = (0, ArrayMembershipOps_1.computeArrayMembershipOps)(['a', 'f'], ['a']);
|
|
88
|
+
var permutations = [
|
|
89
|
+
[del1, del2, del3],
|
|
90
|
+
[del1, del3, del2],
|
|
91
|
+
[del2, del1, del3],
|
|
92
|
+
[del2, del3, del1],
|
|
93
|
+
[del3, del1, del2],
|
|
94
|
+
[del3, del2, del1],
|
|
95
|
+
];
|
|
96
|
+
for (var _i = 0, permutations_1 = permutations; _i < permutations_1.length; _i++) {
|
|
97
|
+
var order = permutations_1[_i];
|
|
98
|
+
var ids = s0;
|
|
99
|
+
for (var _a = 0, order_1 = order; _a < order_1.length; _a++) {
|
|
100
|
+
var ops = order_1[_a];
|
|
101
|
+
ids = (0, ArrayMembershipOps_1.applyArrayMembershipOps)(ids, ops).ids;
|
|
102
|
+
}
|
|
103
|
+
expect(ids).toEqual(['a']);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
test('anchors: missing afterId appends at the end; null afterId inserts at the head; moves of removed ids are dropped', function () {
|
|
107
|
+
expect((0, ArrayMembershipOps_1.applyArrayMembershipOps)(['a', 'b'], [{ op: 'add', id: 'n', afterId: 'gone' }]).ids).toEqual(['a', 'b', 'n']);
|
|
108
|
+
expect((0, ArrayMembershipOps_1.applyArrayMembershipOps)(['a', 'b'], [{ op: 'add', id: 'n', afterId: null }]).ids).toEqual(['n', 'a', 'b']);
|
|
109
|
+
expect((0, ArrayMembershipOps_1.applyArrayMembershipOps)(['a', 'b'], [{ op: 'move', id: 'gone', afterId: 'a' }]).ids).toEqual(['a', 'b']);
|
|
110
|
+
expect((0, ArrayMembershipOps_1.applyArrayMembershipOps)(['a', 'b'], [{ op: 'add', id: 'b', afterId: null }]).ids).toEqual(['b', 'a']);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('overlayPreservedPaths', function () {
|
|
114
|
+
test('preserves the committed text content into a structural payload (the class-2 kill)', function () {
|
|
115
|
+
var committed = { content: 'Tab beta', type: 'body1' };
|
|
116
|
+
var incoming = { content: '', type: 'h6', fontSize: 12 };
|
|
117
|
+
expect((0, UpdatePreserving_1.overlayPreservedPaths)(committed, incoming, ['content'], 'string')).toEqual({
|
|
118
|
+
content: 'Tab beta',
|
|
119
|
+
type: 'h6',
|
|
120
|
+
fontSize: 12,
|
|
121
|
+
});
|
|
122
|
+
// The incoming payload object is not mutated.
|
|
123
|
+
expect(incoming.content).toBe('');
|
|
124
|
+
});
|
|
125
|
+
test('nested path (composite text object)', function () {
|
|
126
|
+
var committed = { content: { thoughtTypeId: 't', thoughtObject: { content: 'typed', type: 'body1' } } };
|
|
127
|
+
var incoming = { content: { thoughtTypeId: 't', thoughtObject: { content: '', type: 'h3' } } };
|
|
128
|
+
var out = (0, UpdatePreserving_1.overlayPreservedPaths)(committed, incoming, ['content.thoughtObject.content'], 'string');
|
|
129
|
+
expect(out.content.thoughtObject).toEqual({ content: 'typed', type: 'h3' });
|
|
130
|
+
});
|
|
131
|
+
test('whenType guards shape transitions: committed non-string content is not dragged into a new shape', function () {
|
|
132
|
+
var committedComposite = { content: { thoughtTypeId: 't', thoughtObject: { content: 'x' } } };
|
|
133
|
+
var incomingPlain = { content: 'fresh', type: 'body1' };
|
|
134
|
+
expect((0, UpdatePreserving_1.overlayPreservedPaths)(committedComposite, incomingPlain, ['content'], 'string')).toEqual(incomingPlain);
|
|
135
|
+
});
|
|
136
|
+
test('missing committed path keeps the incoming value (facet-init seeding survives)', function () {
|
|
137
|
+
var committed = { someOtherField: 1 };
|
|
138
|
+
var incoming = { content: 'seeded from description', type: 'body1' };
|
|
139
|
+
expect((0, UpdatePreserving_1.overlayPreservedPaths)(committed, incoming, ['content'], 'string')).toEqual(incoming);
|
|
140
|
+
});
|
|
141
|
+
test('incoming payload lacking the path parent is left untouched', function () {
|
|
142
|
+
var committed = { content: { thoughtTypeId: 't', thoughtObject: { content: 'x' } } };
|
|
143
|
+
var incoming = { plain: true };
|
|
144
|
+
expect((0, UpdatePreserving_1.overlayPreservedPaths)(committed, incoming, ['content.thoughtObject.content'], 'string')).toEqual(incoming);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=ArrayMembershipOps.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArrayMembershipOps.test.js","sourceRoot":"","sources":["../../test/ArrayMembershipOps.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,23 @@ var ProtectedColumnTable = /** @class */ (function (_super) {
|
|
|
57
57
|
}
|
|
58
58
|
return ProtectedColumnTable;
|
|
59
59
|
}(Table_1.Table));
|
|
60
|
+
/**
|
|
61
|
+
* Mirrors the admin tables surfaced in the settings menu (user, invite, session, migration):
|
|
62
|
+
* NO auth block at all — the default-deny contract makes them admin-only through the service path.
|
|
63
|
+
*/
|
|
64
|
+
var NoAuthTable = /** @class */ (function (_super) {
|
|
65
|
+
__extends(NoAuthTable, _super);
|
|
66
|
+
function NoAuthTable() {
|
|
67
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
68
|
+
_this.name = 'no_auth_test';
|
|
69
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
70
|
+
title: new Columns_1.StringColumn('title'),
|
|
71
|
+
owner: new Columns_1.StringColumn('owner'),
|
|
72
|
+
});
|
|
73
|
+
return _this;
|
|
74
|
+
}
|
|
75
|
+
return NoAuthTable;
|
|
76
|
+
}(Table_1.Table));
|
|
60
77
|
/** Read-only intent: only `query` granted (the canDelete-regression shape). */
|
|
61
78
|
var ReadOnlyTable = /** @class */ (function (_super) {
|
|
62
79
|
__extends(ReadOnlyTable, _super);
|
|
@@ -81,6 +98,18 @@ var setUser = function (roles) {
|
|
|
81
98
|
};
|
|
82
99
|
};
|
|
83
100
|
var auth = function () { return new TableServiceAuth_1.TableServiceAuth(); };
|
|
101
|
+
/** A denial must be a client-safe ServiceError naming the table and operation. */
|
|
102
|
+
var expectDenied = function (fn, message) {
|
|
103
|
+
var thrown;
|
|
104
|
+
try {
|
|
105
|
+
fn();
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
thrown = error;
|
|
109
|
+
}
|
|
110
|
+
expect(thrown === null || thrown === void 0 ? void 0 : thrown.name).toBe('ServiceError');
|
|
111
|
+
expect(thrown === null || thrown === void 0 ? void 0 : thrown.message).toBe(message);
|
|
112
|
+
};
|
|
84
113
|
describe('TableServiceAuth — per-operation service grants', function () {
|
|
85
114
|
afterEach(function () {
|
|
86
115
|
user_auth_1.UserAuth.userRepo = undefined;
|
|
@@ -91,9 +120,9 @@ describe('TableServiceAuth — per-operation service grants', function () {
|
|
|
91
120
|
expect(auth().canAccess('query', [table, {}])).toBe(true);
|
|
92
121
|
expect(auth().canAccess('get', [table, { id: 'x' }])).toBe(true);
|
|
93
122
|
expect(auth().canAccess('getRowCount', [table, {}])).toBe(true);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
123
|
+
expectDenied(function () { return auth().canAccess('insert', [table, { title: 't' }]); }, 'User is not authorized to insert records into table: server_written_test');
|
|
124
|
+
expectDenied(function () { return auth().canAccess('update', [table, { id: 'x', title: 't' }]); }, 'User is not authorized to update records in table: server_written_test');
|
|
125
|
+
expectDenied(function () { return auth().canAccess('delete', [table, { id: 'x' }]); }, 'User is not authorized to delete records from table: server_written_test');
|
|
97
126
|
});
|
|
98
127
|
it('admin: writes allowed on a server-written table', function () {
|
|
99
128
|
setUser(['admin']);
|
|
@@ -106,7 +135,82 @@ describe('TableServiceAuth — per-operation service grants', function () {
|
|
|
106
135
|
setUser([]);
|
|
107
136
|
var table = new ReadOnlyTable();
|
|
108
137
|
expect(auth().canAccess('query', [table, {}])).toBe(true);
|
|
109
|
-
|
|
138
|
+
expectDenied(function () { return auth().canAccess('delete', [table, { id: 'x' }]); }, 'User is not authorized to delete records from table: read_only_test');
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe('TableServiceAuth — default deny (no auth block)', function () {
|
|
142
|
+
afterEach(function () {
|
|
143
|
+
user_auth_1.UserAuth.userRepo = undefined;
|
|
144
|
+
});
|
|
145
|
+
it('denies every operation to an authenticated non-admin, naming the table (never a silent false)', function () {
|
|
146
|
+
setUser([]);
|
|
147
|
+
var table = new NoAuthTable();
|
|
148
|
+
var queryDenial = 'User is not authorized to query table: no_auth_test';
|
|
149
|
+
expectDenied(function () { return auth().canAccess('query', [table, {}]); }, queryDenial);
|
|
150
|
+
expectDenied(function () { return auth().canAccess('get', [table, { id: 'x' }]); }, queryDenial);
|
|
151
|
+
expectDenied(function () { return auth().canAccess('getRowCount', [table, {}]); }, queryDenial);
|
|
152
|
+
expectDenied(function () { return auth().canAccess('insert', [table, { title: 't' }]); }, 'User is not authorized to insert records into table: no_auth_test');
|
|
153
|
+
expectDenied(function () { return auth().canAccess('update', [table, { id: 'x', title: 't' }]); }, 'User is not authorized to update records in table: no_auth_test');
|
|
154
|
+
expectDenied(function () { return auth().canAccess('delete', [table, { id: 'x' }]); }, 'User is not authorized to delete records from table: no_auth_test');
|
|
155
|
+
});
|
|
156
|
+
it('allows every operation for an admin', function () {
|
|
157
|
+
setUser(['admin']);
|
|
158
|
+
var table = new NoAuthTable();
|
|
159
|
+
expect(auth().canAccess('query', [table, {}])).toBe(true);
|
|
160
|
+
expect(auth().canAccess('get', [table, { id: 'x' }])).toBe(true);
|
|
161
|
+
expect(auth().canAccess('getRowCount', [table, {}])).toBe(true);
|
|
162
|
+
expect(auth().canAccess('insert', [table, { title: 't' }])).toBe(true);
|
|
163
|
+
expect(auth().canAccess('update', [table, { id: 'x', title: 't' }])).toBe(true);
|
|
164
|
+
expect(auth().canAccess('delete', [table, { id: 'x' }])).toBe(true);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('TableServiceAuth — updateArrayMembership / updatePreserving (update parity)', function () {
|
|
168
|
+
afterEach(function () {
|
|
169
|
+
user_auth_1.UserAuth.userRepo = undefined;
|
|
170
|
+
});
|
|
171
|
+
var membership = function (columnPropertyName) { return ({
|
|
172
|
+
recordId: 'x',
|
|
173
|
+
columnPropertyName: columnPropertyName,
|
|
174
|
+
ops: [{ op: 'add', id: 'm1', afterId: null }],
|
|
175
|
+
}); };
|
|
176
|
+
it('both verbs are gated by the update grant: denied for non-admin, allowed for admin', function () {
|
|
177
|
+
setUser([]);
|
|
178
|
+
var table = new ServerWrittenTable();
|
|
179
|
+
var updateDenial = 'User is not authorized to update records in table: server_written_test';
|
|
180
|
+
expectDenied(function () { return auth().canAccess('updateArrayMembership', [table, membership('title')]); }, updateDenial);
|
|
181
|
+
expectDenied(function () {
|
|
182
|
+
return auth().canAccess('updatePreserving', [
|
|
183
|
+
table,
|
|
184
|
+
{ id: 'x', title: 't' },
|
|
185
|
+
[{ columnPropertyName: 'title', paths: ['content'] }],
|
|
186
|
+
]);
|
|
187
|
+
}, updateDenial);
|
|
188
|
+
setUser(['admin']);
|
|
189
|
+
expect(auth().canAccess('updateArrayMembership', [table, membership('title')])).toBe(true);
|
|
190
|
+
expect(auth().canAccess('updatePreserving', [
|
|
191
|
+
table,
|
|
192
|
+
{ id: 'x', title: 't' },
|
|
193
|
+
[{ columnPropertyName: 'title', paths: ['content'] }],
|
|
194
|
+
])).toBe(true);
|
|
195
|
+
});
|
|
196
|
+
it('default deny (no auth block): both verbs denied for non-admin with the update denial', function () {
|
|
197
|
+
setUser([]);
|
|
198
|
+
var table = new NoAuthTable();
|
|
199
|
+
var updateDenial = 'User is not authorized to update records in table: no_auth_test';
|
|
200
|
+
expectDenied(function () { return auth().canAccess('updateArrayMembership', [table, membership('title')]); }, updateDenial);
|
|
201
|
+
expectDenied(function () { return auth().canAccess('updatePreserving', [table, { id: 'x', title: 't' }, []]); }, updateDenial);
|
|
202
|
+
});
|
|
203
|
+
it('updateArrayMembership cannot target a serviceProtectedColumn (its payload names the column, not record fields)', function () {
|
|
204
|
+
setUser([]);
|
|
205
|
+
var table = new ProtectedColumnTable();
|
|
206
|
+
expectDenied(function () { return auth().canAccess('updateArrayMembership', [table, membership('owner')]); }, "Column 'owner' cannot be written via the db service on table: protected_column_test");
|
|
207
|
+
expect(auth().canAccess('updateArrayMembership', [table, membership('title')])).toBe(true);
|
|
208
|
+
});
|
|
209
|
+
it('updatePreserving runs the record-shaped protected-column check on its payload', function () {
|
|
210
|
+
setUser([]);
|
|
211
|
+
var table = new ProtectedColumnTable();
|
|
212
|
+
expectDenied(function () { return auth().canAccess('updatePreserving', [table, { id: 'x', owner: 'someone' }, []]); }, "Column 'owner' cannot be written via the db service on table: protected_column_test");
|
|
213
|
+
expect(auth().canAccess('updatePreserving', [table, { id: 'x', title: 't', owner: null }, []])).toBe(true);
|
|
110
214
|
});
|
|
111
215
|
});
|
|
112
216
|
describe('TableServiceAuth — serviceProtectedColumns', function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableServiceAuth.test.js","sourceRoot":"","sources":["../../test/TableServiceAuth.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableServiceAuth.test.js","sourceRoot":"","sources":["../../test/TableServiceAuth.test.ts"],"names":[],"mappings":"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"}
|