@proteinjs/db 1.26.0 → 1.28.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/CHANGELOG.md +17 -0
- package/dist/generated/index.js +3 -3
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.js +7 -7
- 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 +18 -5
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +43 -35
- package/dist/src/Db.js.map +1 -1
- package/dist/src/MigrationRunner.d.ts +9 -0
- package/dist/src/MigrationRunner.d.ts.map +1 -1
- package/dist/src/MigrationRunner.js +24 -10
- package/dist/src/MigrationRunner.js.map +1 -1
- package/dist/src/auth/TableAuth.d.ts +7 -1
- package/dist/src/auth/TableAuth.d.ts.map +1 -1
- package/dist/src/auth/TableAuth.js +7 -1
- package/dist/src/auth/TableAuth.js.map +1 -1
- package/dist/src/tables/MigrationTable.d.ts +7 -0
- package/dist/src/tables/MigrationTable.d.ts.map +1 -1
- package/dist/src/tables/MigrationTable.js +10 -0
- package/dist/src/tables/MigrationTable.js.map +1 -1
- package/dist/src/transaction/TransactionContextFactory.d.ts +8 -1
- package/dist/src/transaction/TransactionContextFactory.d.ts.map +1 -1
- package/dist/test/MigrationAuth.test.d.ts +2 -0
- package/dist/test/MigrationAuth.test.d.ts.map +1 -0
- package/dist/test/MigrationAuth.test.js +77 -0
- package/dist/test/MigrationAuth.test.js.map +1 -0
- package/dist/test/MigrationRunnerContainment.test.d.ts +2 -0
- package/dist/test/MigrationRunnerContainment.test.d.ts.map +1 -0
- package/dist/test/MigrationRunnerContainment.test.js +144 -0
- package/dist/test/MigrationRunnerContainment.test.js.map +1 -0
- package/dist/test/TableServiceAuth.test.js +67 -0
- package/dist/test/TableServiceAuth.test.js.map +1 -1
- package/dist/test/index.d.ts +1 -0
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +1 -0
- package/dist/test/index.js.map +1 -1
- package/dist/test/util/DbTestEnvironment.d.ts.map +1 -1
- package/dist/test/util/DbTestEnvironment.js +5 -0
- package/dist/test/util/DbTestEnvironment.js.map +1 -1
- package/dist/test/util/testUser.d.ts +5 -0
- package/dist/test/util/testUser.d.ts.map +1 -0
- package/dist/test/util/testUser.js +17 -0
- package/dist/test/util/testUser.js.map +1 -0
- package/generated/index.ts +3 -3
- package/generated/test/index.ts +7 -7
- package/index.ts +2 -0
- package/package.json +4 -4
- package/src/Db.ts +47 -28
- package/src/MigrationRunner.ts +20 -5
- package/src/auth/TableAuth.ts +13 -2
- package/src/tables/MigrationTable.ts +10 -0
- package/src/transaction/TransactionContextFactory.ts +8 -1
- package/test/MigrationAuth.test.ts +87 -0
- package/test/MigrationRunnerContainment.test.ts +104 -0
- package/test/TableServiceAuth.test.ts +90 -1
- package/test/index.ts +2 -0
- package/test/util/DbTestEnvironment.ts +5 -0
- package/test/util/testUser.ts +27 -0
|
@@ -12,9 +12,16 @@ export interface TransactionContextData {
|
|
|
12
12
|
* `Db.runTransaction` once the driver reports the commit durable.
|
|
13
13
|
*/
|
|
14
14
|
postCommitHooks?: PostCommitHook[];
|
|
15
|
+
/**
|
|
16
|
+
* Set by `Db.runTransaction` when the transaction completes. Work spawned inside the
|
|
17
|
+
* transaction body but not awaited by it still holds this store by reference (the async
|
|
18
|
+
* context propagates) — the flag turns any later db operation from that escaped context
|
|
19
|
+
* into a loud, named error instead of silently handing the driver a finished transaction.
|
|
20
|
+
*/
|
|
21
|
+
ended?: boolean;
|
|
15
22
|
}
|
|
16
23
|
export interface DefaultTransactionContextFactory extends Loadable {
|
|
17
24
|
getTransactionContext(): TransactionContextData;
|
|
18
|
-
runInContext<T>(
|
|
25
|
+
runInContext<T>(context: TransactionContextData, fn: () => Promise<T>): Promise<T>;
|
|
19
26
|
}
|
|
20
27
|
//# sourceMappingURL=TransactionContextFactory.d.ts.map
|
|
@@ -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,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;
|
|
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;IACnC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gCAAiC,SAAQ,QAAQ;IAChE,qBAAqB,IAAI,sBAAsB,CAAC;IAChD,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationAuth.test.d.ts","sourceRoot":"","sources":["../../test/MigrationAuth.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var user_auth_1 = require("@proteinjs/user-auth");
|
|
4
|
+
// Deep dist path on purpose: the package index doesn't export the auth gate (it is framework
|
|
5
|
+
// plumbing), but the test must exercise the REAL gate, not a re-implementation of its rules.
|
|
6
|
+
var ServiceAuth_1 = require("@proteinjs/service/dist/src/ServiceAuth");
|
|
7
|
+
var reflection_1 = require("@proteinjs/reflection");
|
|
8
|
+
var MigrationRunner_1 = require("../src/MigrationRunner");
|
|
9
|
+
var MigrationTable_1 = require("../src/tables/MigrationTable");
|
|
10
|
+
var TableAuth_1 = require("../src/auth/TableAuth");
|
|
11
|
+
var setUser = function (roles) {
|
|
12
|
+
user_auth_1.UserAuth.userRepo = {
|
|
13
|
+
getUser: function () { return ({ email: 'user@test.local', roles: roles }); },
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
var setMapping = function (mapping) {
|
|
17
|
+
user_auth_1.UserAuth.permissionRolesMapping = {
|
|
18
|
+
getRoles: function (permission) { return mapping[permission]; },
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
var canRunMigrations = function () {
|
|
22
|
+
var method = new reflection_1.Method('runMigration', undefined, true, false, false, false, 'public', []);
|
|
23
|
+
return ServiceAuth_1.ServiceAuth.canRunService(new MigrationRunner_1.MigrationRunner(), method, ['some-migration-id']);
|
|
24
|
+
};
|
|
25
|
+
describe('migrations ride the dev permission', function () {
|
|
26
|
+
beforeEach(function () {
|
|
27
|
+
setMapping({ dev: ['dev-crew'] });
|
|
28
|
+
});
|
|
29
|
+
afterEach(function () {
|
|
30
|
+
user_auth_1.UserAuth.userRepo = undefined;
|
|
31
|
+
user_auth_1.UserAuth.permissionRolesMapping = undefined;
|
|
32
|
+
});
|
|
33
|
+
it("a consumer-mapped dev-role holder can run migrations and use the migration table's doors", function () {
|
|
34
|
+
setUser(['dev-crew']);
|
|
35
|
+
expect(canRunMigrations()).toBe(true);
|
|
36
|
+
var auth = new TableAuth_1.TableAuth();
|
|
37
|
+
var table = new MigrationTable_1.MigrationTable();
|
|
38
|
+
var _loop_1 = function (api) {
|
|
39
|
+
expect(function () { return auth.canQuery(table, api); }).not.toThrow();
|
|
40
|
+
expect(function () { return auth.canUpdate(table, api); }).not.toThrow();
|
|
41
|
+
};
|
|
42
|
+
// The record-table page reads via the service api; the runner updates via the db api.
|
|
43
|
+
for (var _i = 0, _a = ['db', 'service']; _i < _a.length; _i++) {
|
|
44
|
+
var api = _a[_i];
|
|
45
|
+
_loop_1(api);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
it('a permissionless user is denied the service and both table doors', function () {
|
|
49
|
+
setUser(['ops-team']);
|
|
50
|
+
expect(canRunMigrations()).toBe(false);
|
|
51
|
+
var auth = new TableAuth_1.TableAuth();
|
|
52
|
+
var table = new MigrationTable_1.MigrationTable();
|
|
53
|
+
var _loop_2 = function (api) {
|
|
54
|
+
expect(function () { return auth.canQuery(table, api); }).toThrow('User is not authorized to query table: migration');
|
|
55
|
+
expect(function () { return auth.canUpdate(table, api); }).toThrow('User is not authorized to update records in table: migration');
|
|
56
|
+
};
|
|
57
|
+
for (var _i = 0, _a = ['db', 'service']; _i < _a.length; _i++) {
|
|
58
|
+
var api = _a[_i];
|
|
59
|
+
_loop_2(api);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
it('admin passes everything as break-glass', function () {
|
|
63
|
+
setUser(['admin']);
|
|
64
|
+
expect(canRunMigrations()).toBe(true);
|
|
65
|
+
var auth = new TableAuth_1.TableAuth();
|
|
66
|
+
var table = new MigrationTable_1.MigrationTable();
|
|
67
|
+
var _loop_3 = function (api) {
|
|
68
|
+
expect(function () { return auth.canQuery(table, api); }).not.toThrow();
|
|
69
|
+
expect(function () { return auth.canUpdate(table, api); }).not.toThrow();
|
|
70
|
+
};
|
|
71
|
+
for (var _i = 0, _a = ['db', 'service']; _i < _a.length; _i++) {
|
|
72
|
+
var api = _a[_i];
|
|
73
|
+
_loop_3(api);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=MigrationAuth.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationAuth.test.js","sourceRoot":"","sources":["../../test/MigrationAuth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationRunnerContainment.test.d.ts","sourceRoot":"","sources":["../../test/MigrationRunnerContainment.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
// EnvInfo.isDev() requires a GlobalDataStorage implementation that only exists in a running app
|
|
40
|
+
// (same mock the @proteinjs/service executor suite uses).
|
|
41
|
+
jest.mock('@proteinjs/server-api', function () { return ({
|
|
42
|
+
EnvInfo: { isDev: function () { return true; } },
|
|
43
|
+
}); });
|
|
44
|
+
var logger_1 = require("@proteinjs/logger");
|
|
45
|
+
var reflection_1 = require("@proteinjs/reflection");
|
|
46
|
+
var serializer_1 = require("@proteinjs/serializer");
|
|
47
|
+
// Deep dist path on purpose: the package index doesn't export the executor (framework plumbing),
|
|
48
|
+
// but the executor check below must run the REAL BUILT owner of the doNotAwait seam.
|
|
49
|
+
var ServiceExecutor_1 = require("@proteinjs/service/dist/src/ServiceExecutor");
|
|
50
|
+
var MigrationRunner_1 = require("../src/MigrationRunner");
|
|
51
|
+
var MigrationTable_1 = require("../src/tables/MigrationTable");
|
|
52
|
+
var SourceRecordRepo_1 = require("../src/source/SourceRecordRepo");
|
|
53
|
+
var testUser_1 = require("./util/testUser");
|
|
54
|
+
/**
|
|
55
|
+
* This harness loads no reflection graph and registers no DefaultDbDriverFactory, so the body's
|
|
56
|
+
* FIRST db access (`new Db()` constructing its table-watcher runner) throws this. The specific
|
|
57
|
+
* message is a harness accident standing in for any mid-run infrastructure failure (db.update
|
|
58
|
+
* rejecting); the contract under test is that the failure escapes as a rejection at all.
|
|
59
|
+
*/
|
|
60
|
+
var infrastructureFailure = 'Unable to find type: @proteinjs/db/TableWatcher';
|
|
61
|
+
var plantMigration = function (id) {
|
|
62
|
+
var migration = {
|
|
63
|
+
id: id,
|
|
64
|
+
description: 'containment test migration',
|
|
65
|
+
run: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
66
|
+
return [2 /*return*/, undefined];
|
|
67
|
+
}); }); },
|
|
68
|
+
};
|
|
69
|
+
new SourceRecordRepo_1.SourceRecordRepo().loadSourceRecord(new MigrationTable_1.MigrationTable().name, migration);
|
|
70
|
+
return migration;
|
|
71
|
+
};
|
|
72
|
+
describe('MigrationRunner containment (doNotAwait dispatch)', function () {
|
|
73
|
+
it('throws synchronously on a bogus migration id, not through the detached promise', function () {
|
|
74
|
+
var runner = new MigrationRunner_1.MigrationRunner();
|
|
75
|
+
expect(function () { return runner.runMigration('bogus-migration-id'); }).toThrow('Unable to find migration source record for id: bogus-migration-id');
|
|
76
|
+
});
|
|
77
|
+
it('rejects the detached promise on a mid-run infrastructure failure — the caller owns it', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
78
|
+
var runner;
|
|
79
|
+
return __generator(this, function (_a) {
|
|
80
|
+
switch (_a.label) {
|
|
81
|
+
case 0:
|
|
82
|
+
// The runner no longer swallows infrastructure failures: the rejection escapes to whoever
|
|
83
|
+
// holds the promise.
|
|
84
|
+
plantMigration('containment-test-migration');
|
|
85
|
+
runner = new MigrationRunner_1.MigrationRunner();
|
|
86
|
+
return [4 /*yield*/, expect(runner.runMigration('containment-test-migration')).rejects.toThrow(infrastructureFailure)];
|
|
87
|
+
case 1:
|
|
88
|
+
_a.sent();
|
|
89
|
+
return [2 /*return*/];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}); });
|
|
93
|
+
it('through the real built executor, an infrastructure-failure rejection is terminally logged — not process death', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
94
|
+
var runner, method, _interface, executor, entries_1, errorEntry;
|
|
95
|
+
var _a, _b;
|
|
96
|
+
return __generator(this, function (_c) {
|
|
97
|
+
switch (_c.label) {
|
|
98
|
+
case 0:
|
|
99
|
+
// Admin identity passes the service's 'dev' permission as break-glass (MigrationAuth.test.ts
|
|
100
|
+
// pins the mapping itself).
|
|
101
|
+
(0, testUser_1.registerTestUser)();
|
|
102
|
+
_c.label = 1;
|
|
103
|
+
case 1:
|
|
104
|
+
_c.trys.push([1, , 5, 6]);
|
|
105
|
+
plantMigration('containment-test-migration-executor');
|
|
106
|
+
runner = new MigrationRunner_1.MigrationRunner();
|
|
107
|
+
method = new reflection_1.Method('runMigration', undefined, true, false, false, false, 'public', []);
|
|
108
|
+
_interface = new reflection_1.Interface('@proteinjs/db', 'MigrationRunnerService', [], [method]);
|
|
109
|
+
executor = new ServiceExecutor_1.ServiceExecutor(runner, _interface, method);
|
|
110
|
+
entries_1 = [];
|
|
111
|
+
executor.logger = new logger_1.Logger({
|
|
112
|
+
name: 'MigrationRunnerService.runMigration',
|
|
113
|
+
logWriter: { write: function (log) { return entries_1.push(log); } },
|
|
114
|
+
});
|
|
115
|
+
// The client response does not carry the failure — execute resolves immediately.
|
|
116
|
+
return [4 /*yield*/, expect(executor.execute(serializer_1.Serializer.serialize(['containment-test-migration-executor']))).resolves.toBeUndefined()];
|
|
117
|
+
case 2:
|
|
118
|
+
// The client response does not carry the failure — execute resolves immediately.
|
|
119
|
+
_c.sent();
|
|
120
|
+
// The detached rejection settles after the microtask queue drains; flush macrotasks so the
|
|
121
|
+
// executor's terminal catch has written its log entry. Were the rejection unobserved, jest
|
|
122
|
+
// would surface it as a failure here — and a bare node process would die.
|
|
123
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setImmediate(resolve); })];
|
|
124
|
+
case 3:
|
|
125
|
+
// The detached rejection settles after the microtask queue drains; flush macrotasks so the
|
|
126
|
+
// executor's terminal catch has written its log entry. Were the rejection unobserved, jest
|
|
127
|
+
// would surface it as a failure here — and a bare node process would die.
|
|
128
|
+
_c.sent();
|
|
129
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setImmediate(resolve); })];
|
|
130
|
+
case 4:
|
|
131
|
+
_c.sent();
|
|
132
|
+
errorEntry = entries_1.find(function (entry) { return entry.logLevel === 'error'; });
|
|
133
|
+
expect((_a = errorEntry === null || errorEntry === void 0 ? void 0 : errorEntry.error) === null || _a === void 0 ? void 0 : _a.message).toContain(infrastructureFailure);
|
|
134
|
+
expect((_b = errorEntry === null || errorEntry === void 0 ? void 0 : errorEntry.obj) === null || _b === void 0 ? void 0 : _b.functionName).toBe('MigrationRunnerService.runMigration');
|
|
135
|
+
return [3 /*break*/, 6];
|
|
136
|
+
case 5:
|
|
137
|
+
(0, testUser_1.clearTestUser)();
|
|
138
|
+
return [7 /*endfinally*/];
|
|
139
|
+
case 6: return [2 /*return*/];
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}); });
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=MigrationRunnerContainment.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationRunnerContainment.test.js","sourceRoot":"","sources":["../../test/MigrationRunnerContainment.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,6 +74,30 @@ var NoAuthTable = /** @class */ (function (_super) {
|
|
|
74
74
|
}
|
|
75
75
|
return NoAuthTable;
|
|
76
76
|
}(Table_1.Table));
|
|
77
|
+
/**
|
|
78
|
+
* Mirrors the user table's shape: doors keyed to an abstract PERMISSION resolved through the
|
|
79
|
+
* consumer mapping, with a service-protected column reserved to a dedicated service.
|
|
80
|
+
*/
|
|
81
|
+
var PermissionGatedTable = /** @class */ (function (_super) {
|
|
82
|
+
__extends(PermissionGatedTable, _super);
|
|
83
|
+
function PermissionGatedTable() {
|
|
84
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
85
|
+
_this.name = 'permission_gated_test';
|
|
86
|
+
_this.auth = {
|
|
87
|
+
service: {
|
|
88
|
+
query: { permission: 'users' },
|
|
89
|
+
update: { permission: 'users' },
|
|
90
|
+
},
|
|
91
|
+
serviceProtectedColumns: ['owner'],
|
|
92
|
+
};
|
|
93
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
94
|
+
title: new Columns_1.StringColumn('title'),
|
|
95
|
+
owner: new Columns_1.StringColumn('owner'),
|
|
96
|
+
});
|
|
97
|
+
return _this;
|
|
98
|
+
}
|
|
99
|
+
return PermissionGatedTable;
|
|
100
|
+
}(Table_1.Table));
|
|
77
101
|
/** Read-only intent: only `query` granted (the canDelete-regression shape). */
|
|
78
102
|
var ReadOnlyTable = /** @class */ (function (_super) {
|
|
79
103
|
__extends(ReadOnlyTable, _super);
|
|
@@ -97,6 +121,11 @@ var setUser = function (roles) {
|
|
|
97
121
|
getUser: function () { return ({ email: 'user@test.local', roles: roles }); },
|
|
98
122
|
};
|
|
99
123
|
};
|
|
124
|
+
var setMapping = function (mapping) {
|
|
125
|
+
user_auth_1.UserAuth.permissionRolesMapping = {
|
|
126
|
+
getRoles: function (permission) { return mapping[permission]; },
|
|
127
|
+
};
|
|
128
|
+
};
|
|
100
129
|
var auth = function () { return new TableServiceAuth_1.TableServiceAuth(); };
|
|
101
130
|
/** A denial must be a client-safe ServiceError naming the table and operation. */
|
|
102
131
|
var expectDenied = function (fn, message) {
|
|
@@ -138,6 +167,44 @@ describe('TableServiceAuth — per-operation service grants', function () {
|
|
|
138
167
|
expectDenied(function () { return auth().canAccess('delete', [table, { id: 'x' }]); }, 'User is not authorized to delete records from table: read_only_test');
|
|
139
168
|
});
|
|
140
169
|
});
|
|
170
|
+
describe('TableServiceAuth — permission-keyed doors (the user table shape)', function () {
|
|
171
|
+
afterEach(function () {
|
|
172
|
+
user_auth_1.UserAuth.userRepo = undefined;
|
|
173
|
+
user_auth_1.UserAuth.permissionRolesMapping = undefined;
|
|
174
|
+
});
|
|
175
|
+
it("grants a holder of the consumer's mapped role; denies without the role", function () {
|
|
176
|
+
var table = new PermissionGatedTable();
|
|
177
|
+
setMapping({ users: ['support'] });
|
|
178
|
+
setUser(['support']);
|
|
179
|
+
expect(auth().canAccess('query', [table, {}])).toBe(true);
|
|
180
|
+
expect(auth().canAccess('update', [table, { id: 'x', title: 't' }])).toBe(true);
|
|
181
|
+
setUser(['dev']);
|
|
182
|
+
expectDenied(function () { return auth().canAccess('query', [table, {}]); }, 'User is not authorized to query table: permission_gated_test');
|
|
183
|
+
});
|
|
184
|
+
it('denies everyone but admin when no mapping is registered (default deny)', function () {
|
|
185
|
+
var table = new PermissionGatedTable();
|
|
186
|
+
setUser(['support']);
|
|
187
|
+
expectDenied(function () { return auth().canAccess('query', [table, {}]); }, 'User is not authorized to query table: permission_gated_test');
|
|
188
|
+
setUser(['admin']);
|
|
189
|
+
expect(auth().canAccess('query', [table, {}])).toBe(true);
|
|
190
|
+
});
|
|
191
|
+
it('operations without a grant stay closed even for permission holders (and admin)', function () {
|
|
192
|
+
var table = new PermissionGatedTable();
|
|
193
|
+
setMapping({ users: ['support'] });
|
|
194
|
+
setUser(['support']);
|
|
195
|
+
expectDenied(function () { return auth().canAccess('insert', [table, { title: 't' }]); }, 'User is not authorized to insert records into table: permission_gated_test');
|
|
196
|
+
// An auth block with no grant for the operation is a deliberate lock, not an admin default —
|
|
197
|
+
// the audit-table shape (role_grant_event) depends on this.
|
|
198
|
+
setUser(['admin']);
|
|
199
|
+
expectDenied(function () { return auth().canAccess('delete', [table, { id: 'x' }]); }, 'User is not authorized to delete records from table: permission_gated_test');
|
|
200
|
+
});
|
|
201
|
+
it('the protected column stays unwritable even for a permission holder with the update grant', function () {
|
|
202
|
+
var table = new PermissionGatedTable();
|
|
203
|
+
setMapping({ users: ['support'] });
|
|
204
|
+
setUser(['support']);
|
|
205
|
+
expectDenied(function () { return auth().canAccess('update', [table, { id: 'x', owner: 'someone' }]); }, "Column 'owner' cannot be written via the db service on table: permission_gated_test");
|
|
206
|
+
});
|
|
207
|
+
});
|
|
141
208
|
describe('TableServiceAuth — default deny (no auth block)', function () {
|
|
142
209
|
afterEach(function () {
|
|
143
210
|
user_auth_1.UserAuth.userRepo = undefined;
|
|
@@ -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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"}
|
package/dist/test/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './reusable/ColumnTypesTests';
|
|
|
4
4
|
export * from './reusable/DynamicReferenceColumnTests';
|
|
5
5
|
export * from './reusable/TransactionTests';
|
|
6
6
|
export * from './reusable/CascadeDeleteTests';
|
|
7
|
+
export * from './util/testUser';
|
|
7
8
|
export * from './util/tables/cascadeDeleteTestTables';
|
|
8
9
|
export * from './util/tables/columnTypesTestTables';
|
|
9
10
|
export * from './util/tables/crudTestTables';
|
package/dist/test/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,iBAAiB,CAAC;AAEhC,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC"}
|
package/dist/test/index.js
CHANGED
|
@@ -20,6 +20,7 @@ __exportStar(require("./reusable/ColumnTypesTests"), exports);
|
|
|
20
20
|
__exportStar(require("./reusable/DynamicReferenceColumnTests"), exports);
|
|
21
21
|
__exportStar(require("./reusable/TransactionTests"), exports);
|
|
22
22
|
__exportStar(require("./reusable/CascadeDeleteTests"), exports);
|
|
23
|
+
__exportStar(require("./util/testUser"), exports);
|
|
23
24
|
__exportStar(require("./util/tables/cascadeDeleteTestTables"), exports);
|
|
24
25
|
__exportStar(require("./util/tables/columnTypesTestTables"), exports);
|
|
25
26
|
__exportStar(require("./util/tables/crudTestTables"), exports);
|
package/dist/test/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,uDAAqC;AACrC,8DAA4C;AAC5C,yEAAuD;AACvD,8DAA4C;AAC5C,gEAA8C;AAE9C,wEAAsD;AACtD,sEAAoD;AACpD,+DAA6C;AAC7C,iFAA+D;AAC/D,uEAAqD;AACrD,sEAAoD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,uDAAqC;AACrC,8DAA4C;AAC5C,yEAAuD;AACvD,8DAA4C;AAC5C,gEAA8C;AAE9C,kDAAgC;AAEhC,wEAAsD;AACtD,sEAAoD;AACpD,+DAA6C;AAC7C,iFAA+D;AAC/D,uEAAqD;AACrD,sEAAoD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbTestEnvironment.d.ts","sourceRoot":"","sources":["../../../test/util/DbTestEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"DbTestEnvironment.d.ts","sourceRoot":"","sources":["../../../test/util/DbTestEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAkBhD;;GAEG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;gBADb,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAGvD,SAAS;IAaT,QAAQ;CAUf"}
|
|
@@ -46,6 +46,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
46
46
|
};
|
|
47
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
48
|
exports.DbTestEnvironment = void 0;
|
|
49
|
+
var testUser_1 = require("./testUser");
|
|
49
50
|
var cascadeDeleteTestTables_1 = require("./tables/cascadeDeleteTestTables");
|
|
50
51
|
var columnTypesTestTables_1 = require("./tables/columnTypesTestTables");
|
|
51
52
|
var crudTestTables_1 = require("./tables/crudTestTables");
|
|
@@ -67,6 +68,9 @@ var DbTestEnvironment = /** @class */ (function () {
|
|
|
67
68
|
return __generator(this, function (_a) {
|
|
68
69
|
switch (_a.label) {
|
|
69
70
|
case 0:
|
|
71
|
+
// UserAuth is fail-closed; the suites run non-system Db paths, so they carry an explicit
|
|
72
|
+
// identity instead of leaning on an open gate.
|
|
73
|
+
(0, testUser_1.registerTestUser)();
|
|
70
74
|
if (!this.dbDriver.start) return [3 /*break*/, 2];
|
|
71
75
|
return [4 /*yield*/, this.dbDriver.start()];
|
|
72
76
|
case 1:
|
|
@@ -96,6 +100,7 @@ var DbTestEnvironment = /** @class */ (function () {
|
|
|
96
100
|
return __generator(this, function (_b) {
|
|
97
101
|
switch (_b.label) {
|
|
98
102
|
case 0:
|
|
103
|
+
(0, testUser_1.clearTestUser)();
|
|
99
104
|
_i = 0, _a = TABLES.reverse();
|
|
100
105
|
_b.label = 1;
|
|
101
106
|
case 1:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbTestEnvironment.js","sourceRoot":"","sources":["../../../test/util/DbTestEnvironment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4EAA2E;AAC3E,wEAAuE;AACvE,0DAAyD;AACzD,8FAAuF;AACvF,0EAAyE;AACzE,wEAAuE;AAEvE,IAAM,MAAM,2FACP,MAAM,CAAC,MAAM,CAAC,iDAAuB,CAAC,SACtC,MAAM,CAAC,MAAM,CAAC,6CAAqB,CAAC,SACpC,MAAM,CAAC,MAAM,CAAC,+BAAc,CAAC,SAC7B,MAAM,CAAC,MAAM,CAAC,6DAA0B,CAAC,SACzC,MAAM,CAAC,MAAM,CAAC,+CAAsB,CAAC,SACrC,MAAM,CAAC,MAAM,CAAC,6CAAqB,CAAC,OACxC,CAAC;AAEF;;GAEG;AACH;IACE,2BACU,QAAkB,EAClB,aAAmD;QADnD,aAAQ,GAAR,QAAQ,CAAU;QAClB,kBAAa,GAAb,aAAa,CAAsC;IAC1D,CAAC;IAEE,qCAAS,GAAf;;;;;;
|
|
1
|
+
{"version":3,"file":"DbTestEnvironment.js","sourceRoot":"","sources":["../../../test/util/DbTestEnvironment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA6D;AAC7D,4EAA2E;AAC3E,wEAAuE;AACvE,0DAAyD;AACzD,8FAAuF;AACvF,0EAAyE;AACzE,wEAAuE;AAEvE,IAAM,MAAM,2FACP,MAAM,CAAC,MAAM,CAAC,iDAAuB,CAAC,SACtC,MAAM,CAAC,MAAM,CAAC,6CAAqB,CAAC,SACpC,MAAM,CAAC,MAAM,CAAC,+BAAc,CAAC,SAC7B,MAAM,CAAC,MAAM,CAAC,6DAA0B,CAAC,SACzC,MAAM,CAAC,MAAM,CAAC,+CAAsB,CAAC,SACrC,MAAM,CAAC,MAAM,CAAC,6CAAqB,CAAC,OACxC,CAAC;AAEF;;GAEG;AACH;IACE,2BACU,QAAkB,EAClB,aAAmD;QADnD,aAAQ,GAAR,QAAQ,CAAU;QAClB,kBAAa,GAAb,aAAa,CAAsC;IAC1D,CAAC;IAEE,qCAAS,GAAf;;;;;;wBACE,yFAAyF;wBACzF,+CAA+C;wBAC/C,IAAA,2BAAgB,GAAE,CAAC;6BACf,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAnB,wBAAmB;wBACrB,qBAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAA;;wBAA3B,SAA2B,CAAC;;;8BAGJ,EAAN,iBAAM;;;6BAAN,CAAA,oBAAM,CAAA;wBAAf,KAAK;wBACd,qBAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAA;;wBAAtD,SAAsD,CAAC;;;wBADrC,IAAM,CAAA;;;;;;KAG3B;IAEK,oCAAQ,GAAd;;;;;;wBACE,IAAA,wBAAa,GAAE,CAAC;8BACoB,EAAhB,KAAA,MAAM,CAAC,OAAO,EAAE;;;6BAAhB,CAAA,cAAgB,CAAA;wBAAzB,KAAK;wBACd,qBAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAA;;wBAA/B,SAA+B,CAAC;;;wBADd,IAAgB,CAAA;;;6BAIhC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAlB,wBAAkB;wBACpB,qBAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;;;;;;KAE9B;IACH,wBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,8CAAiB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Register an explicit identity on `UserAuth` (admin by default — the reusable suites test CRUD, not table doors). */
|
|
2
|
+
export declare const registerTestUser: (roles?: string[], email?: string) => void;
|
|
3
|
+
/** Remove the registered test identity, restoring the deny-everything unregistered state. */
|
|
4
|
+
export declare const clearTestUser: () => void;
|
|
5
|
+
//# sourceMappingURL=testUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testUser.d.ts","sourceRoot":"","sources":["../../../test/util/testUser.ts"],"names":[],"mappings":"AAkBA,uHAAuH;AACvH,eAAO,MAAM,gBAAgB,WAAW,MAAM,EAAE,yBAE/C,CAAC;AAEF,6FAA6F;AAC7F,eAAO,MAAM,aAAa,YAEzB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearTestUser = exports.registerTestUser = void 0;
|
|
4
|
+
var user_auth_1 = require("@proteinjs/user-auth");
|
|
5
|
+
/** Register an explicit identity on `UserAuth` (admin by default — the reusable suites test CRUD, not table doors). */
|
|
6
|
+
var registerTestUser = function (roles, email) {
|
|
7
|
+
if (roles === void 0) { roles = ['admin']; }
|
|
8
|
+
if (email === void 0) { email = 'db-test-user@test.local'; }
|
|
9
|
+
user_auth_1.UserAuth.userRepo = { getUser: function () { return ({ email: email, roles: roles }); } };
|
|
10
|
+
};
|
|
11
|
+
exports.registerTestUser = registerTestUser;
|
|
12
|
+
/** Remove the registered test identity, restoring the deny-everything unregistered state. */
|
|
13
|
+
var clearTestUser = function () {
|
|
14
|
+
user_auth_1.UserAuth.userRepo = undefined;
|
|
15
|
+
};
|
|
16
|
+
exports.clearTestUser = clearTestUser;
|
|
17
|
+
//# sourceMappingURL=testUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testUser.js","sourceRoot":"","sources":["../../../test/util/testUser.ts"],"names":[],"mappings":";;;AAAA,kDAAgD;AAkBhD,uHAAuH;AAChH,IAAM,gBAAgB,GAAG,UAAC,KAA2B,EAAE,KAAiC;IAA9D,sBAAA,EAAA,SAAmB,OAAO,CAAC;IAAE,sBAAA,EAAA,iCAAiC;IAC5F,oBAAyC,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,cAAM,OAAA,CAAC,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAC,EAAlB,CAAkB,EAAE,CAAC;AAC9F,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEF,6FAA6F;AACtF,IAAM,aAAa,GAAG;IAC1B,oBAAyC,CAAC,QAAQ,GAAG,SAAS,CAAC;AAClE,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB"}
|