@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.
Files changed (31) hide show
  1. package/package.descriptor.mjs +8 -45
  2. package/package.json +7 -8
  3. package/src/server/UsersCoreServiceProvider.js +0 -4
  4. package/src/server/common/registerCommonRepositories.js +0 -5
  5. package/src/server/registerUsersBootstrap.js +1 -2
  6. package/src/server/support/workspaceActionSurfaces.js +1 -18
  7. package/src/server/usersBootstrapContributor.js +10 -23
  8. package/src/server/workspaceBootstrapContributor.js +1 -0
  9. package/templates/migrations/users_core_generic_initial.cjs +0 -16
  10. package/test/registerServiceRealtimeEvents.test.js +0 -8
  11. package/test/registerUsersCore.test.js +1 -5
  12. package/test/repositoryContracts.test.js +0 -2
  13. package/test/resourcesCanonical.test.js +1 -3
  14. package/test/settingsFieldRegistriesSingleton.test.js +0 -5
  15. package/test/usersBootstrapContributor.test.js +18 -12
  16. package/test/usersRouteRequestInputValidator.test.js +2 -43
  17. package/test/usersRouteResources.test.js +2 -4
  18. package/test/workspaceActionSurfaces.test.js +3 -23
  19. package/test-support/registerDefaultSettingsFields.js +0 -1
  20. package/src/server/consoleSettings/bootConsoleSettingsRoutes.js +0 -63
  21. package/src/server/consoleSettings/consoleService.js +0 -36
  22. package/src/server/consoleSettings/consoleSettingsActions.js +0 -55
  23. package/src/server/consoleSettings/consoleSettingsRepository.js +0 -115
  24. package/src/server/consoleSettings/consoleSettingsService.js +0 -40
  25. package/src/server/consoleSettings/registerConsoleSettings.js +0 -56
  26. package/src/shared/resources/consoleSettingsFields.js +0 -54
  27. package/src/shared/resources/consoleSettingsResource.js +0 -119
  28. package/templates/migrations/users_core_console_owner.cjs +0 -37
  29. package/templates/packages/main/src/shared/resources/consoleSettingsFields.js +0 -11
  30. package/test/consoleService.test.js +0 -57
  31. 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
- });