@jskit-ai/users-core 0.1.47 → 0.1.48
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/package.descriptor.mjs +8 -45
- package/package.json +7 -8
- package/src/server/UsersCoreServiceProvider.js +0 -4
- package/src/server/common/registerCommonRepositories.js +0 -5
- package/src/server/registerUsersBootstrap.js +1 -2
- package/src/server/support/workspaceActionSurfaces.js +1 -18
- package/src/server/usersBootstrapContributor.js +10 -23
- package/src/server/workspaceBootstrapContributor.js +1 -0
- package/templates/migrations/users_core_generic_initial.cjs +0 -16
- package/test/registerServiceRealtimeEvents.test.js +0 -8
- package/test/registerUsersCore.test.js +1 -5
- package/test/repositoryContracts.test.js +0 -2
- package/test/resourcesCanonical.test.js +1 -3
- package/test/settingsFieldRegistriesSingleton.test.js +0 -5
- package/test/usersBootstrapContributor.test.js +18 -12
- package/test/usersRouteRequestInputValidator.test.js +2 -43
- package/test/usersRouteResources.test.js +2 -4
- package/test/workspaceActionSurfaces.test.js +3 -23
- package/test-support/registerDefaultSettingsFields.js +0 -1
- package/src/server/consoleSettings/bootConsoleSettingsRoutes.js +0 -63
- package/src/server/consoleSettings/consoleService.js +0 -36
- package/src/server/consoleSettings/consoleSettingsActions.js +0 -55
- package/src/server/consoleSettings/consoleSettingsRepository.js +0 -115
- package/src/server/consoleSettings/consoleSettingsService.js +0 -40
- package/src/server/consoleSettings/registerConsoleSettings.js +0 -56
- package/src/shared/resources/consoleSettingsFields.js +0 -54
- package/src/shared/resources/consoleSettingsResource.js +0 -119
- package/templates/migrations/users_core_console_owner.cjs +0 -37
- package/templates/packages/main/src/shared/resources/consoleSettingsFields.js +0 -11
- package/test/consoleService.test.js +0 -57
- package/test/consoleSettingsService.test.js +0 -86
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { createService } from "../src/server/consoleSettings/consoleService.js";
|
|
4
|
-
|
|
5
|
-
function createFixture(initialOwnerUserId = null) {
|
|
6
|
-
const state = {
|
|
7
|
-
ownerUserId: initialOwnerUserId
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const service = createService({
|
|
11
|
-
consoleSettingsRepository: {
|
|
12
|
-
async ensureOwnerUserId(userId) {
|
|
13
|
-
const normalizedUserId = String(userId || "");
|
|
14
|
-
if (!state.ownerUserId) {
|
|
15
|
-
state.ownerUserId = normalizedUserId;
|
|
16
|
-
}
|
|
17
|
-
return state.ownerUserId;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
return { service, state };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
test("consoleService seeds the first authenticated user as console owner", async () => {
|
|
26
|
-
const { service, state } = createFixture();
|
|
27
|
-
|
|
28
|
-
const firstOwner = await service.ensureInitialConsoleMember("7");
|
|
29
|
-
const secondAttempt = await service.ensureInitialConsoleMember("9");
|
|
30
|
-
|
|
31
|
-
assert.equal(firstOwner, "7");
|
|
32
|
-
assert.equal(secondAttempt, "7");
|
|
33
|
-
assert.equal(state.ownerUserId, "7");
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test("consoleService.requireConsoleOwner denies authenticated non-owners", async () => {
|
|
37
|
-
const { service } = createFixture("7");
|
|
38
|
-
|
|
39
|
-
await assert.rejects(
|
|
40
|
-
() =>
|
|
41
|
-
service.requireConsoleOwner({
|
|
42
|
-
actor: {
|
|
43
|
-
id: "9"
|
|
44
|
-
}
|
|
45
|
-
}),
|
|
46
|
-
(error) => error?.status === 403
|
|
47
|
-
);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test("consoleService.requireConsoleOwner requires authentication", async () => {
|
|
51
|
-
const { service } = createFixture("7");
|
|
52
|
-
|
|
53
|
-
await assert.rejects(
|
|
54
|
-
() => service.requireConsoleOwner({}),
|
|
55
|
-
(error) => error?.status === 401
|
|
56
|
-
);
|
|
57
|
-
});
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { createService } from "../src/server/consoleSettings/consoleSettingsService.js";
|
|
4
|
-
|
|
5
|
-
function createFixture({ deny = false } = {}) {
|
|
6
|
-
const calls = {
|
|
7
|
-
requireConsoleOwner: [],
|
|
8
|
-
updateSingleton: []
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
const service = createService({
|
|
12
|
-
consoleService: {
|
|
13
|
-
async requireConsoleOwner(context) {
|
|
14
|
-
calls.requireConsoleOwner.push(context || null);
|
|
15
|
-
if (deny) {
|
|
16
|
-
const error = new Error("Forbidden.");
|
|
17
|
-
error.status = 403;
|
|
18
|
-
throw error;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
consoleSettingsRepository: {
|
|
23
|
-
async getSingleton() {
|
|
24
|
-
return {};
|
|
25
|
-
},
|
|
26
|
-
async updateSingleton(patch = {}) {
|
|
27
|
-
calls.updateSingleton.push({ ...patch });
|
|
28
|
-
return {};
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
return { service, calls };
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
test("consoleSettingsService.getSettings requires owner access and returns normalized payload", async () => {
|
|
37
|
-
const { service, calls } = createFixture();
|
|
38
|
-
const context = {
|
|
39
|
-
actor: {
|
|
40
|
-
id: 7
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const response = await service.getSettings({ context });
|
|
45
|
-
|
|
46
|
-
assert.deepEqual(calls.requireConsoleOwner, [context]);
|
|
47
|
-
assert.deepEqual(response, {
|
|
48
|
-
settings: {}
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test("consoleSettingsService.updateSettings requires owner access before writing", async () => {
|
|
53
|
-
const { service, calls } = createFixture();
|
|
54
|
-
const context = {
|
|
55
|
-
actor: {
|
|
56
|
-
id: 7
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const response = await service.updateSettings(
|
|
61
|
-
{},
|
|
62
|
-
{ context }
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
assert.deepEqual(calls.requireConsoleOwner, [context]);
|
|
66
|
-
assert.deepEqual(calls.updateSingleton, [{}]);
|
|
67
|
-
assert.deepEqual(response, {
|
|
68
|
-
settings: {}
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
test("consoleSettingsService denies access when owner validation fails", async () => {
|
|
73
|
-
const { service } = createFixture({ deny: true });
|
|
74
|
-
|
|
75
|
-
await assert.rejects(
|
|
76
|
-
() =>
|
|
77
|
-
service.getSettings({
|
|
78
|
-
context: {
|
|
79
|
-
actor: {
|
|
80
|
-
id: 9
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}),
|
|
84
|
-
(error) => error?.status === 403
|
|
85
|
-
);
|
|
86
|
-
});
|