cojson 0.18.31 → 0.18.33

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 (140) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +17 -0
  3. package/dist/SyncStateManager.d.ts.map +1 -1
  4. package/dist/SyncStateManager.js +2 -2
  5. package/dist/SyncStateManager.js.map +1 -1
  6. package/dist/coValueCore/SessionMap.d.ts +1 -0
  7. package/dist/coValueCore/SessionMap.d.ts.map +1 -1
  8. package/dist/coValueCore/SessionMap.js +17 -2
  9. package/dist/coValueCore/SessionMap.js.map +1 -1
  10. package/dist/coValueCore/coValueCore.d.ts +14 -9
  11. package/dist/coValueCore/coValueCore.d.ts.map +1 -1
  12. package/dist/coValueCore/coValueCore.js +62 -47
  13. package/dist/coValueCore/coValueCore.js.map +1 -1
  14. package/dist/coValueCore/verifiedState.d.ts +2 -2
  15. package/dist/coValueCore/verifiedState.d.ts.map +1 -1
  16. package/dist/coValueCore/verifiedState.js +86 -75
  17. package/dist/coValueCore/verifiedState.js.map +1 -1
  18. package/dist/coValues/group.d.ts +1 -0
  19. package/dist/coValues/group.d.ts.map +1 -1
  20. package/dist/coValues/group.js +24 -4
  21. package/dist/coValues/group.js.map +1 -1
  22. package/dist/crypto/PureJSCrypto.d.ts.map +1 -1
  23. package/dist/crypto/PureJSCrypto.js +2 -10
  24. package/dist/crypto/PureJSCrypto.js.map +1 -1
  25. package/dist/knownState.d.ts +1 -1
  26. package/dist/knownState.d.ts.map +1 -1
  27. package/dist/knownState.js +1 -1
  28. package/dist/knownState.js.map +1 -1
  29. package/dist/localNode.d.ts.map +1 -1
  30. package/dist/localNode.js +1 -2
  31. package/dist/localNode.js.map +1 -1
  32. package/dist/queue/LocalTransactionsSyncQueue.d.ts.map +1 -1
  33. package/dist/queue/LocalTransactionsSyncQueue.js +16 -1
  34. package/dist/queue/LocalTransactionsSyncQueue.js.map +1 -1
  35. package/dist/storage/knownState.js +2 -2
  36. package/dist/storage/knownState.js.map +1 -1
  37. package/dist/storage/sqlite/index.d.ts.map +1 -1
  38. package/dist/storage/sqlite/index.js +17 -3
  39. package/dist/storage/sqlite/index.js.map +1 -1
  40. package/dist/storage/sqlite/sqliteMigrations.d.ts +6 -1
  41. package/dist/storage/sqlite/sqliteMigrations.d.ts.map +1 -1
  42. package/dist/storage/sqlite/sqliteMigrations.js +1 -3
  43. package/dist/storage/sqlite/sqliteMigrations.js.map +1 -1
  44. package/dist/storage/sqlite/types.d.ts +2 -0
  45. package/dist/storage/sqlite/types.d.ts.map +1 -1
  46. package/dist/storage/sqliteAsync/index.d.ts.map +1 -1
  47. package/dist/storage/sqliteAsync/index.js +17 -3
  48. package/dist/storage/sqliteAsync/index.js.map +1 -1
  49. package/dist/storage/sqliteAsync/types.d.ts +2 -0
  50. package/dist/storage/sqliteAsync/types.d.ts.map +1 -1
  51. package/dist/sync.d.ts.map +1 -1
  52. package/dist/sync.js +8 -2
  53. package/dist/sync.js.map +1 -1
  54. package/dist/tests/PureJSCrypto.test.js +1 -1
  55. package/dist/tests/PureJSCrypto.test.js.map +1 -1
  56. package/dist/tests/StorageApiAsync.test.js +11 -11
  57. package/dist/tests/StorageApiAsync.test.js.map +1 -1
  58. package/dist/tests/StorageApiSync.test.js +3 -3
  59. package/dist/tests/StorageApiSync.test.js.map +1 -1
  60. package/dist/tests/WasmCrypto.test.js +1 -1
  61. package/dist/tests/WasmCrypto.test.js.map +1 -1
  62. package/dist/tests/coPlainText.test.js +1 -1
  63. package/dist/tests/coStream.test.js +12 -12
  64. package/dist/tests/coStream.test.js.map +1 -1
  65. package/dist/tests/coValueCore.isCompletelyDownloaded.test.d.ts +2 -0
  66. package/dist/tests/coValueCore.isCompletelyDownloaded.test.d.ts.map +1 -0
  67. package/dist/tests/coValueCore.isCompletelyDownloaded.test.js +421 -0
  68. package/dist/tests/coValueCore.isCompletelyDownloaded.test.js.map +1 -0
  69. package/dist/tests/coValueCore.isStreaming.test.d.ts +2 -0
  70. package/dist/tests/coValueCore.isStreaming.test.d.ts.map +1 -0
  71. package/dist/tests/coValueCore.isStreaming.test.js +181 -0
  72. package/dist/tests/coValueCore.isStreaming.test.js.map +1 -0
  73. package/dist/tests/coValueCore.newContentSince.test.d.ts +2 -0
  74. package/dist/tests/coValueCore.newContentSince.test.d.ts.map +1 -0
  75. package/dist/tests/coValueCore.newContentSince.test.js +808 -0
  76. package/dist/tests/coValueCore.newContentSince.test.js.map +1 -0
  77. package/dist/tests/coreWasm.test.js +2 -2
  78. package/dist/tests/coreWasm.test.js.map +1 -1
  79. package/dist/tests/group.childKeyRotation.test.d.ts +2 -0
  80. package/dist/tests/group.childKeyRotation.test.d.ts.map +1 -0
  81. package/dist/tests/group.childKeyRotation.test.js +261 -0
  82. package/dist/tests/group.childKeyRotation.test.js.map +1 -0
  83. package/dist/tests/group.removeMember.test.js +1 -114
  84. package/dist/tests/group.removeMember.test.js.map +1 -1
  85. package/dist/tests/knownState.test.js +11 -11
  86. package/dist/tests/knownState.test.js.map +1 -1
  87. package/dist/tests/sync.auth.test.js +6 -6
  88. package/dist/tests/sync.load.test.js +68 -5
  89. package/dist/tests/sync.load.test.js.map +1 -1
  90. package/dist/tests/sync.mesh.test.js +11 -17
  91. package/dist/tests/sync.mesh.test.js.map +1 -1
  92. package/dist/tests/sync.peerReconciliation.test.js +1 -1
  93. package/dist/tests/sync.storage.test.js +7 -7
  94. package/dist/tests/sync.storage.test.js.map +1 -1
  95. package/dist/tests/sync.storageAsync.test.js +4 -4
  96. package/dist/tests/sync.storageAsync.test.js.map +1 -1
  97. package/dist/tests/sync.upload.test.js +96 -40
  98. package/dist/tests/sync.upload.test.js.map +1 -1
  99. package/dist/tests/testUtils.d.ts +2 -0
  100. package/dist/tests/testUtils.d.ts.map +1 -1
  101. package/dist/tests/testUtils.js +22 -1
  102. package/dist/tests/testUtils.js.map +1 -1
  103. package/package.json +3 -3
  104. package/src/SyncStateManager.ts +2 -5
  105. package/src/coValueCore/SessionMap.ts +26 -1
  106. package/src/coValueCore/coValueCore.ts +77 -55
  107. package/src/coValueCore/verifiedState.ts +123 -108
  108. package/src/coValues/group.ts +27 -4
  109. package/src/crypto/PureJSCrypto.ts +5 -21
  110. package/src/knownState.ts +1 -1
  111. package/src/localNode.ts +1 -2
  112. package/src/queue/LocalTransactionsSyncQueue.ts +25 -0
  113. package/src/storage/knownState.ts +2 -2
  114. package/src/storage/sqlite/index.ts +16 -3
  115. package/src/storage/sqlite/sqliteMigrations.ts +7 -4
  116. package/src/storage/sqlite/types.ts +2 -0
  117. package/src/storage/sqliteAsync/index.ts +19 -6
  118. package/src/storage/sqliteAsync/types.ts +2 -0
  119. package/src/sync.ts +7 -2
  120. package/src/tests/PureJSCrypto.test.ts +1 -2
  121. package/src/tests/StorageApiAsync.test.ts +11 -11
  122. package/src/tests/StorageApiSync.test.ts +3 -3
  123. package/src/tests/WasmCrypto.test.ts +1 -2
  124. package/src/tests/coPlainText.test.ts +1 -1
  125. package/src/tests/coStream.test.ts +12 -12
  126. package/src/tests/coValueCore.isCompletelyDownloaded.test.ts +589 -0
  127. package/src/tests/coValueCore.isStreaming.test.ts +271 -0
  128. package/src/tests/coValueCore.newContentSince.test.ts +966 -0
  129. package/src/tests/coreWasm.test.ts +2 -2
  130. package/src/tests/group.childKeyRotation.test.ts +431 -0
  131. package/src/tests/group.removeMember.test.ts +1 -184
  132. package/src/tests/knownState.test.ts +11 -11
  133. package/src/tests/sync.auth.test.ts +6 -6
  134. package/src/tests/sync.load.test.ts +80 -5
  135. package/src/tests/sync.mesh.test.ts +11 -17
  136. package/src/tests/sync.peerReconciliation.test.ts +1 -1
  137. package/src/tests/sync.storage.test.ts +7 -7
  138. package/src/tests/sync.storageAsync.test.ts +4 -4
  139. package/src/tests/sync.upload.test.ts +106 -40
  140. package/src/tests/testUtils.ts +24 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coValueCore.newContentSince.test.js","sourceRoot":"","sources":["../../src/tests/coValueCore.newContentSince.test.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ describe("SessionLog WASM", () => {
23
23
  it("test_add_from_example_json", () => {
24
24
  const { agent, session, node } = createTestNode();
25
25
  const group = node.createGroup();
26
- const sessionContent = group.core.verified.newContentSince(undefined)?.[0]?.new[session];
26
+ const sessionContent = group.core.newContentSince(undefined)?.[0]?.new[session];
27
27
  assert(sessionContent);
28
28
  let log = wasmCrypto.createSessionLog(group.id, session, agent.currentSignerID());
29
29
  log.tryAdd(sessionContent.newTransactions, sessionContent.lastSignature, false);
@@ -31,7 +31,7 @@ describe("SessionLog WASM", () => {
31
31
  it("test_add_new_transaction", () => {
32
32
  const { agent, session, node } = createTestNode();
33
33
  const group = node.createGroup();
34
- const sessionContent = group.core.verified.newContentSince(undefined)?.[0]?.new[session];
34
+ const sessionContent = group.core.newContentSince(undefined)?.[0]?.new[session];
35
35
  assert(sessionContent);
36
36
  let log = wasmCrypto.createSessionLog(group.id, session, agent.currentSignerID());
37
37
  const changesJson = [
@@ -1 +1 @@
1
- {"version":3,"file":"coreWasm.test.js","sourceRoot":"","sources":["../../src/tests/coreWasm.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coreWasm.test.js","sourceRoot":"","sources":["../../src/tests/coreWasm.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=group.childKeyRotation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.childKeyRotation.test.d.ts","sourceRoot":"","sources":["../../src/tests/group.childKeyRotation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,261 @@
1
+ import { assert, beforeEach, describe, expect, test } from "vitest";
2
+ import { setCoValueLoadingRetryDelay } from "../config.js";
3
+ import { SyncMessagesLog, TEST_NODE_CONFIG, loadCoValueOrFail, setupTestAccount, setupTestNode, waitFor, } from "./testUtils.js";
4
+ // We want to simulate a real world communication that happens asynchronously
5
+ TEST_NODE_CONFIG.withAsyncPeers = true;
6
+ setCoValueLoadingRetryDelay(10);
7
+ let jazzCloud;
8
+ beforeEach(async () => {
9
+ SyncMessagesLog.clear();
10
+ jazzCloud = setupTestNode({ isSyncServer: true });
11
+ });
12
+ describe("Group.childKeyRotation", () => {
13
+ let admin;
14
+ let bob;
15
+ let alice;
16
+ let charlie;
17
+ let aliceOnAdminNode;
18
+ let bobOnAdminNode;
19
+ let charlieOnAdminNode;
20
+ beforeEach(async () => {
21
+ admin = await setupTestAccount({
22
+ connected: true,
23
+ });
24
+ alice = await setupTestAccount({
25
+ connected: true,
26
+ });
27
+ bob = await setupTestAccount({
28
+ connected: true,
29
+ });
30
+ charlie = await setupTestAccount({
31
+ connected: true,
32
+ });
33
+ aliceOnAdminNode = await loadCoValueOrFail(admin.node, alice.accountID);
34
+ bobOnAdminNode = await loadCoValueOrFail(admin.node, bob.accountID);
35
+ charlieOnAdminNode = await loadCoValueOrFail(admin.node, charlie.accountID);
36
+ });
37
+ test("removing a member should rotate the readKey on available child groups", async () => {
38
+ const group = admin.node.createGroup();
39
+ const childGroup = admin.node.createGroup();
40
+ group.addMember(aliceOnAdminNode, "reader");
41
+ childGroup.extend(group);
42
+ group.removeMember(aliceOnAdminNode);
43
+ // ReadKey rotated, now alice can't read the map
44
+ const map = childGroup.createMap();
45
+ map.set("test", "Not readable by alice");
46
+ await map.core.waitForSync();
47
+ const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
48
+ expect(mapOnAliceNode.get("test")).toBeUndefined();
49
+ });
50
+ test("removing a member should rotate the readKey on unloaded child groups", async () => {
51
+ const group = admin.node.createGroup();
52
+ let childGroup = bob.node.createGroup();
53
+ group.addMember(bobOnAdminNode, "reader");
54
+ group.addMember(aliceOnAdminNode, "reader");
55
+ const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
56
+ childGroup.extend(groupOnBobNode);
57
+ await childGroup.core.waitForSync();
58
+ group.removeMember(aliceOnAdminNode);
59
+ // Spinning a new session for bob, to be sure to trigger the group migration
60
+ // that handles the key rotation
61
+ const newBobSession = await bob.spawnNewSession();
62
+ const childGroupOnNewBobNode = await loadCoValueOrFail(newBobSession, childGroup.id);
63
+ // The key should be rotated at this point, so alice can't read the map
64
+ const map = childGroupOnNewBobNode.createMap();
65
+ map.set("test", "Not readable by alice");
66
+ await map.core.waitForSync();
67
+ const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
68
+ expect(mapOnAliceNode.get("test")).toBeUndefined();
69
+ });
70
+ test("removing a member on a large group should rotate the readKey on unloaded child group", async () => {
71
+ const group = admin.node.createGroup();
72
+ const childGroup = bob.node.createGroup();
73
+ group.addMember(bobOnAdminNode, "reader");
74
+ group.addMember(aliceOnAdminNode, "reader");
75
+ const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
76
+ childGroup.extend(groupOnBobNode);
77
+ await childGroup.core.waitForSync();
78
+ // Disconnect the admin node to sync the content manually and simulate the delay of the last chunk
79
+ admin.disconnect();
80
+ // Make the group to become large enough to require multiple messages to be synced
81
+ for (let i = 0; i < 100; i++) {
82
+ // @ts-expect-error - test property is not part of the group shape
83
+ group.set("test", "1".repeat(1024));
84
+ }
85
+ expect(group.core.verified.newContentSince(undefined)?.length).toBe(2);
86
+ group.removeMember(aliceOnAdminNode);
87
+ const content = group.core.verified.newContentSince(undefined);
88
+ assert(content);
89
+ const lastChunk = content.pop();
90
+ assert(lastChunk);
91
+ // Spinning a new session for bob, to be sure to trigger the group migration
92
+ const newBobSession = await bob.spawnNewSession();
93
+ for (const chunk of content) {
94
+ newBobSession.syncManager.handleNewContent(chunk, "import");
95
+ }
96
+ const childGroupOnNewBobNode = await loadCoValueOrFail(newBobSession, childGroup.id);
97
+ newBobSession.syncManager.handleNewContent(lastChunk, "import");
98
+ // The migration waits for the group to be completely downloaded
99
+ await childGroupOnNewBobNode.core.waitForAsync((core) => core.isCompletelyDownloaded());
100
+ // The key should be rotated at this point, so alice can't read the map
101
+ const map = childGroupOnNewBobNode.createMap();
102
+ map.set("test", "Not readable by alice");
103
+ await map.core.waitForSync();
104
+ const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
105
+ expect(mapOnAliceNode.get("test")).toBeUndefined();
106
+ });
107
+ test("removing a member on a large parent group should rotate the readKey on unloaded grandChild group", async () => {
108
+ const parentGroup = admin.node.createGroup();
109
+ const group = bob.node.createGroup();
110
+ const childGroup = bob.node.createGroup();
111
+ parentGroup.addMember(bobOnAdminNode, "reader");
112
+ parentGroup.addMember(aliceOnAdminNode, "reader");
113
+ const parentGroupOnBobNode = await loadCoValueOrFail(bob.node, parentGroup.id);
114
+ group.extend(parentGroupOnBobNode);
115
+ childGroup.extend(group);
116
+ await childGroup.core.waitForSync();
117
+ // Disconnect the admin node to sync the content manually and simulate the delay of the last chunk
118
+ admin.disconnect();
119
+ // Make the parent group to become large enough to require multiple messages to be synced
120
+ for (let i = 0; i < 200; i++) {
121
+ // @ts-expect-error - test property is not part of the group shape
122
+ parentGroup.set("test", "1".repeat(1024));
123
+ }
124
+ expect(parentGroup.core.verified.newContentSince(undefined)?.length).toBe(3);
125
+ parentGroup.removeMember(aliceOnAdminNode);
126
+ const content = parentGroup.core.verified.newContentSince(undefined);
127
+ assert(content);
128
+ const lastChunk = content.pop();
129
+ assert(lastChunk);
130
+ // Spinning a new session for bob, to be sure to trigger the group migration
131
+ const newBobSession = await bob.spawnNewSession();
132
+ for (const chunk of content) {
133
+ newBobSession.syncManager.handleNewContent(chunk, "import");
134
+ }
135
+ const childGroupOnNewBobNode = await loadCoValueOrFail(newBobSession, childGroup.id);
136
+ newBobSession.syncManager.handleNewContent(lastChunk, "import");
137
+ // The migration waits for the group to be completely downloaded, this includes full streaming of the parent group
138
+ await childGroupOnNewBobNode.core.waitForAsync((core) => core.isCompletelyDownloaded());
139
+ // The key should be rotated at this point, so alice can't read the map
140
+ const map = childGroupOnNewBobNode.createMap();
141
+ map.set("test", "Not readable by alice");
142
+ await map.core.waitForSync();
143
+ const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
144
+ expect(mapOnAliceNode.get("test")).toBeUndefined();
145
+ });
146
+ test("non-admin accounts can't trigger the unloaded child group key rotation", async () => {
147
+ const group = admin.node.createGroup();
148
+ const childGroup = bob.node.createGroup();
149
+ group.addMember(bobOnAdminNode, "writer");
150
+ group.addMember(aliceOnAdminNode, "writer");
151
+ group.addMember(charlieOnAdminNode, "writer");
152
+ await group.core.waitForSync();
153
+ const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
154
+ childGroup.extend(groupOnBobNode);
155
+ await childGroup.core.waitForSync();
156
+ await groupOnBobNode.core.waitForSync();
157
+ group.removeMember(charlieOnAdminNode);
158
+ await group.core.waitForSync();
159
+ // Alice only have writer access to the child group, so she can't rotate the readKey
160
+ const childGroupOnAliceNode = await loadCoValueOrFail(alice.node, childGroup.id);
161
+ const map = childGroupOnAliceNode.createMap();
162
+ map.set("test", "Readable by charlie");
163
+ await map.core.waitForSync();
164
+ // This means that Charlie can read what Alice wrote
165
+ const mapOnCharlieNode = await loadCoValueOrFail(charlie.node, map.id);
166
+ expect(mapOnCharlieNode.get("test")).toBe("Readable by charlie");
167
+ // Instead Bob is an admin, so when loading the child group he can rotate the readKey
168
+ const newBobSession = await bob.spawnNewSession();
169
+ const mapOnNewBobNode = await loadCoValueOrFail(newBobSession, map.id);
170
+ mapOnNewBobNode.set("test", "Not readable by charlie");
171
+ await mapOnNewBobNode.core.waitForSync();
172
+ const updatedMapOnCharlieNode = await loadCoValueOrFail(charlie.node, map.id);
173
+ // Ensure that the map is fully synced
174
+ await waitFor(async () => {
175
+ expect(updatedMapOnCharlieNode.core.knownState()).toEqual(mapOnNewBobNode.core.knownState());
176
+ });
177
+ // Charlie should not be able to read what Bob wrote
178
+ expect(updatedMapOnCharlieNode.get("test")).toBe("Readable by charlie");
179
+ });
180
+ test("direct manager account can trigger the unloaded child group key rotation", async () => {
181
+ const group = admin.node.createGroup();
182
+ const childGroup = bob.node.createGroup();
183
+ group.addMember(bobOnAdminNode, "writer");
184
+ group.addMember(aliceOnAdminNode, "reader");
185
+ await group.core.waitForSync();
186
+ const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
187
+ childGroup.extend(groupOnBobNode);
188
+ const charlieOnBobNode = await loadCoValueOrFail(bob.node, charlie.accountID);
189
+ childGroup.addMember(charlieOnBobNode, "manager");
190
+ await childGroup.core.waitForSync();
191
+ await groupOnBobNode.core.waitForSync();
192
+ group.removeMember(aliceOnAdminNode);
193
+ await group.core.waitForSync();
194
+ const childGroupOnCharlieNode = await loadCoValueOrFail(charlie.node, childGroup.id);
195
+ const map = childGroupOnCharlieNode.createMap();
196
+ map.set("test", "Not readable by alice");
197
+ await map.core.waitForSync();
198
+ const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
199
+ // Ensure that the map is fully synced
200
+ await waitFor(async () => {
201
+ expect(mapOnAliceNode.core.knownState()).toEqual(map.core.knownState());
202
+ });
203
+ // Charlie should not be able to read what Bob wrote because key was rotated
204
+ expect(mapOnAliceNode.get("test")).toBeUndefined();
205
+ });
206
+ test("inherited admin account triggers the unloaded child group key rotation", async () => {
207
+ const group = admin.node.createGroup();
208
+ const childGroup = bob.node.createGroup();
209
+ // Alice is admin on parent group (will inherit to child), but not directly on child
210
+ group.addMember(aliceOnAdminNode, "admin");
211
+ group.addMember(bobOnAdminNode, "writer");
212
+ group.addMember(charlieOnAdminNode, "reader");
213
+ await group.core.waitForSync();
214
+ const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
215
+ childGroup.extend(groupOnBobNode);
216
+ await childGroup.core.waitForSync();
217
+ await groupOnBobNode.core.waitForSync();
218
+ group.removeMember(charlieOnAdminNode);
219
+ await group.core.waitForSync();
220
+ // Alice has inherited admin access but is not a direct admin on the child group
221
+ // So she can't trigger key rotation
222
+ const childGroupOnNewAliceNode = await loadCoValueOrFail(alice.node, childGroup.id);
223
+ const map = childGroupOnNewAliceNode.createMap();
224
+ map.set("test", "Readable by charlie");
225
+ await map.core.waitForSync();
226
+ // Charlie should be able to read what Alice wrote because key wasn't rotated
227
+ const mapOnCharlieNode = await loadCoValueOrFail(charlie.node, map.id);
228
+ expect(mapOnCharlieNode.get("test")).toBe(undefined);
229
+ });
230
+ // TODO: In this case the child can't detect the parent group rotation, because it doesn't have access to the parent group readKey
231
+ // We need to replace the writeOnlyKey with an asymmetric key sealing mechanism to cover this case
232
+ test.skip("removing a member should rotate the writeOnlyKey on child group", async () => {
233
+ const admin = await setupTestAccount({
234
+ connected: true,
235
+ });
236
+ const bob = await setupTestAccount({
237
+ connected: true,
238
+ });
239
+ const alice = await setupTestAccount({
240
+ connected: true,
241
+ });
242
+ const aliceOnAdminNode = await loadCoValueOrFail(admin.node, alice.accountID);
243
+ const group = admin.node.createGroup();
244
+ const childGroup = bob.node.createGroup();
245
+ group.addMember(aliceOnAdminNode, "reader");
246
+ await group.core.waitForSync();
247
+ const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
248
+ childGroup.extend(groupOnBobNode);
249
+ await childGroup.core.waitForSync();
250
+ group.removeMember(aliceOnAdminNode);
251
+ await group.core.waitForSync();
252
+ const newBobSession = await bob.spawnNewSession();
253
+ const childGroupOnNewBobNode = await loadCoValueOrFail(newBobSession, childGroup.id);
254
+ const map = childGroupOnNewBobNode.createMap();
255
+ map.set("test", "Not readable by alice");
256
+ await map.core.waitForSync();
257
+ const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
258
+ expect(mapOnAliceNode.get("test")).toBeUndefined();
259
+ });
260
+ });
261
+ //# sourceMappingURL=group.childKeyRotation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.childKeyRotation.test.js","sourceRoot":"","sources":["../../src/tests/group.childKeyRotation.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { beforeEach, describe, expect, test } from "vitest";
2
2
  import { setCoValueLoadingRetryDelay } from "../config.js";
3
- import { SyncMessagesLog, blockMessageTypeOnOutgoingPeer, loadCoValueOrFail, setupTestAccount, setupTestNode, waitFor, } from "./testUtils.js";
4
- import { expectGroup } from "../typeUtils/expectGroup.js";
3
+ import { SyncMessagesLog, loadCoValueOrFail, setupTestAccount, setupTestNode, waitFor, } from "./testUtils.js";
5
4
  setCoValueLoadingRetryDelay(10);
6
5
  let jazzCloud;
7
6
  beforeEach(async () => {
@@ -198,117 +197,5 @@ describe("Group.removeMember", () => {
198
197
  await childGroupOnChildAdminNode.removeMember(readerOnChildAdminNode);
199
198
  expect(childGroupOnChildAdminNode.roleOf(reader.accountID)).toEqual(undefined);
200
199
  });
201
- test("removing a member should rotate the readKey on available child groups", async () => {
202
- const admin = await setupTestAccount({
203
- connected: true,
204
- });
205
- const alice = await setupTestAccount({
206
- connected: true,
207
- });
208
- const aliceOnAdminNode = await loadCoValueOrFail(admin.node, alice.accountID);
209
- const group = admin.node.createGroup();
210
- const childGroup = admin.node.createGroup();
211
- group.addMember(aliceOnAdminNode, "reader");
212
- childGroup.extend(group);
213
- group.removeMember(aliceOnAdminNode);
214
- const map = childGroup.createMap();
215
- map.set("test", "Not readable by alice");
216
- await map.core.waitForSync();
217
- const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
218
- expect(mapOnAliceNode.get("test")).toBeUndefined();
219
- });
220
- test.skip("removing a member should rotate the readKey on unloaded child groups", async () => {
221
- const admin = await setupTestAccount({
222
- connected: true,
223
- });
224
- const bob = await setupTestAccount({
225
- connected: true,
226
- });
227
- const alice = await setupTestAccount({
228
- connected: true,
229
- });
230
- const bobOnAdminNode = await loadCoValueOrFail(admin.node, bob.accountID);
231
- const aliceOnAdminNode = await loadCoValueOrFail(admin.node, alice.accountID);
232
- const group = admin.node.createGroup();
233
- let childGroup = bob.node.createGroup();
234
- group.addMember(bobOnAdminNode, "reader");
235
- group.addMember(aliceOnAdminNode, "reader");
236
- const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
237
- childGroup.extend(groupOnBobNode);
238
- await childGroup.core.waitForSync();
239
- group.removeMember(aliceOnAdminNode);
240
- // Rotating the child group keys is async when the child group is not loaded
241
- await admin.node.syncManager.waitForAllCoValuesSync();
242
- // Reload the group the trigger the loading checks
243
- childGroup.core.resetParsedTransactions();
244
- childGroup = expectGroup(childGroup.core.getCurrentContent());
245
- const map = childGroup.createMap();
246
- map.set("test", "Not readable by alice");
247
- await map.core.waitForSync();
248
- const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
249
- expect(mapOnAliceNode.get("test")).toBeUndefined();
250
- });
251
- test("removing a member should work even if there are partially available child groups", async () => {
252
- const admin = await setupTestAccount({
253
- connected: true,
254
- });
255
- const bob = await setupTestAccount();
256
- const { peer } = bob.connectToSyncServer();
257
- const alice = await setupTestAccount({
258
- connected: true,
259
- });
260
- const bobOnAdminNode = await loadCoValueOrFail(admin.node, bob.accountID);
261
- const aliceOnAdminNode = await loadCoValueOrFail(admin.node, alice.accountID);
262
- const group = admin.node.createGroup();
263
- const childGroup = bob.node.createGroup();
264
- group.addMember(bobOnAdminNode, "reader");
265
- group.addMember(aliceOnAdminNode, "reader");
266
- await group.core.waitForSync();
267
- blockMessageTypeOnOutgoingPeer(peer, "content", {
268
- id: childGroup.id,
269
- });
270
- const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
271
- childGroup.extend(groupOnBobNode);
272
- await groupOnBobNode.core.waitForSync();
273
- group.removeMember(aliceOnAdminNode);
274
- await admin.node.syncManager.waitForAllCoValuesSync();
275
- const map = group.createMap();
276
- map.set("test", "Not readable by alice");
277
- await map.core.waitForSync();
278
- const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
279
- expect(mapOnAliceNode.get("test")).toBeUndefined();
280
- });
281
- test("removing a member should work even if there are unavailable child groups", async () => {
282
- const admin = await setupTestAccount({
283
- connected: true,
284
- });
285
- const { peerOnServer } = admin.connectToSyncServer();
286
- const bob = await setupTestAccount({
287
- connected: true,
288
- });
289
- const alice = await setupTestAccount({
290
- connected: true,
291
- });
292
- const bobOnAdminNode = await loadCoValueOrFail(admin.node, bob.accountID);
293
- const aliceOnAdminNode = await loadCoValueOrFail(admin.node, alice.accountID);
294
- const group = admin.node.createGroup();
295
- const childGroup = bob.node.createGroup();
296
- blockMessageTypeOnOutgoingPeer(peerOnServer, "content", {
297
- id: childGroup.id,
298
- });
299
- group.addMember(bobOnAdminNode, "reader");
300
- group.addMember(aliceOnAdminNode, "reader");
301
- await group.core.waitForSync();
302
- const groupOnBobNode = await loadCoValueOrFail(bob.node, group.id);
303
- childGroup.extend(groupOnBobNode);
304
- await groupOnBobNode.core.waitForSync();
305
- group.removeMember(aliceOnAdminNode);
306
- await group.core.waitForSync();
307
- const map = group.createMap();
308
- map.set("test", "Not readable by alice");
309
- await map.core.waitForSync();
310
- const mapOnAliceNode = await loadCoValueOrFail(alice.node, map.id);
311
- expect(mapOnAliceNode.get("test")).toBeUndefined();
312
- });
313
200
  });
314
201
  //# sourceMappingURL=group.removeMember.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"group.removeMember.test.js","sourceRoot":"","sources":["../../src/tests/group.removeMember.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group.removeMember.test.js","sourceRoot":"","sources":["../../src/tests/group.removeMember.test.ts"],"names":[],"mappings":"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"}