@enbox/dwn-sdk-js 0.3.7 → 0.3.9

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 (236) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +2591 -1435
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/constants.js +20 -0
  6. package/dist/esm/src/core/constants.js.map +1 -1
  7. package/dist/esm/src/core/dwn-error.js +24 -1
  8. package/dist/esm/src/core/dwn-error.js.map +1 -1
  9. package/dist/esm/src/core/grant-authorization.js +4 -4
  10. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  11. package/dist/esm/src/core/message.js +89 -4
  12. package/dist/esm/src/core/message.js.map +1 -1
  13. package/dist/esm/src/core/messages-grant-authorization.js +147 -55
  14. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/protocol-authorization.js +76 -0
  16. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  17. package/dist/esm/src/core/records-grant-authorization.js +40 -15
  18. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  19. package/dist/esm/src/handlers/messages-read.js +5 -5
  20. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  21. package/dist/esm/src/handlers/messages-subscribe.js +109 -7
  22. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  23. package/dist/esm/src/handlers/messages-sync.js +341 -96
  24. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  25. package/dist/esm/src/handlers/protocols-configure.js +81 -2
  26. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  27. package/dist/esm/src/handlers/records-count.js +30 -0
  28. package/dist/esm/src/handlers/records-count.js.map +1 -1
  29. package/dist/esm/src/handlers/records-delete.js +3 -2
  30. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  31. package/dist/esm/src/handlers/records-query.js +30 -0
  32. package/dist/esm/src/handlers/records-query.js.map +1 -1
  33. package/dist/esm/src/handlers/records-read.js +3 -2
  34. package/dist/esm/src/handlers/records-read.js.map +1 -1
  35. package/dist/esm/src/handlers/records-subscribe.js +31 -0
  36. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  37. package/dist/esm/src/handlers/records-write.js +21 -14
  38. package/dist/esm/src/handlers/records-write.js.map +1 -1
  39. package/dist/esm/src/index.js +2 -0
  40. package/dist/esm/src/index.js.map +1 -1
  41. package/dist/esm/src/interfaces/messages-read.js +6 -3
  42. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  43. package/dist/esm/src/interfaces/messages-subscribe.js +6 -3
  44. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  45. package/dist/esm/src/interfaces/messages-sync.js +17 -3
  46. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  47. package/dist/esm/src/interfaces/protocols-configure.js +5 -2
  48. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  49. package/dist/esm/src/interfaces/protocols-query.js +8 -4
  50. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  51. package/dist/esm/src/interfaces/records-count.js +5 -0
  52. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  53. package/dist/esm/src/interfaces/records-delete.js +6 -2
  54. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  55. package/dist/esm/src/interfaces/records-query.js +5 -0
  56. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  57. package/dist/esm/src/interfaces/records-read.js +6 -3
  58. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  59. package/dist/esm/src/interfaces/records-subscribe.js +5 -0
  60. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  61. package/dist/esm/src/interfaces/records-write.js +6 -3
  62. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  63. package/dist/esm/src/protocols/permissions.js +28 -7
  64. package/dist/esm/src/protocols/permissions.js.map +1 -1
  65. package/dist/esm/src/sync/records-projection.js +228 -0
  66. package/dist/esm/src/sync/records-projection.js.map +1 -0
  67. package/dist/esm/src/types/message-types.js.map +1 -1
  68. package/dist/esm/src/types/permission-types.js.map +1 -1
  69. package/dist/esm/src/utils/permission-scope.js +37 -0
  70. package/dist/esm/src/utils/permission-scope.js.map +1 -0
  71. package/dist/esm/tests/core/grant-authorization.spec.js +26 -3
  72. package/dist/esm/tests/core/grant-authorization.spec.js.map +1 -1
  73. package/dist/esm/tests/core/records-grant-authorization.spec.js +117 -0
  74. package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -0
  75. package/dist/esm/tests/features/permissions.spec.js +126 -0
  76. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  77. package/dist/esm/tests/features/records-record-limit.spec.js +14 -0
  78. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
  79. package/dist/esm/tests/handlers/messages-read.spec.js +345 -12
  80. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  81. package/dist/esm/tests/handlers/messages-subscribe.spec.js +326 -9
  82. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  83. package/dist/esm/tests/handlers/messages-sync.spec.js +1053 -7
  84. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  85. package/dist/esm/tests/handlers/protocols-configure.spec.js +361 -0
  86. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  87. package/dist/esm/tests/handlers/records-count.spec.js +75 -2
  88. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  89. package/dist/esm/tests/handlers/records-query.spec.js +73 -0
  90. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  91. package/dist/esm/tests/handlers/records-subscribe.spec.js +75 -1
  92. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  93. package/dist/esm/tests/handlers/records-write.spec.js +41 -0
  94. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  95. package/dist/esm/tests/interfaces/messages-get.spec.js +107 -5
  96. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  97. package/dist/esm/tests/interfaces/protocols-configure.spec.js +13 -0
  98. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  99. package/dist/esm/tests/interfaces/records-delete.spec.js +12 -0
  100. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  101. package/dist/esm/tests/interfaces/records-query.spec.js +10 -0
  102. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  103. package/dist/esm/tests/interfaces/records-subscribe.spec.js +10 -0
  104. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  105. package/dist/esm/tests/interfaces/records-write.spec.js +33 -0
  106. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  107. package/dist/esm/tests/sync/records-projection.spec.js +245 -0
  108. package/dist/esm/tests/sync/records-projection.spec.js.map +1 -0
  109. package/dist/esm/tests/test-suite.js +2 -0
  110. package/dist/esm/tests/test-suite.js.map +1 -1
  111. package/dist/esm/tests/utils/permission-scope.spec.js +66 -0
  112. package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -0
  113. package/dist/esm/tests/utils/test-data-generator.js +5 -2
  114. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  115. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  116. package/dist/types/src/core/constants.d.ts +13 -0
  117. package/dist/types/src/core/constants.d.ts.map +1 -1
  118. package/dist/types/src/core/dwn-error.d.ts +24 -1
  119. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  120. package/dist/types/src/core/grant-authorization.d.ts +1 -2
  121. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  122. package/dist/types/src/core/message.d.ts +41 -1
  123. package/dist/types/src/core/message.d.ts.map +1 -1
  124. package/dist/types/src/core/messages-grant-authorization.d.ts +36 -4
  125. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  126. package/dist/types/src/core/protocol-authorization.d.ts +12 -0
  127. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  128. package/dist/types/src/core/records-grant-authorization.d.ts +6 -0
  129. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  130. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  131. package/dist/types/src/handlers/messages-subscribe.d.ts +2 -1
  132. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  133. package/dist/types/src/handlers/messages-sync.d.ts +31 -0
  134. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  135. package/dist/types/src/handlers/protocols-configure.d.ts +3 -0
  136. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  137. package/dist/types/src/handlers/records-count.d.ts +4 -0
  138. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  139. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  140. package/dist/types/src/handlers/records-query.d.ts +4 -0
  141. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  142. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  143. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  144. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  145. package/dist/types/src/index.d.ts +6 -2
  146. package/dist/types/src/index.d.ts.map +1 -1
  147. package/dist/types/src/interfaces/messages-read.d.ts +1 -1
  148. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
  149. package/dist/types/src/interfaces/messages-subscribe.d.ts +1 -1
  150. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  151. package/dist/types/src/interfaces/messages-sync.d.ts +4 -1
  152. package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -1
  153. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  154. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
  155. package/dist/types/src/interfaces/records-count.d.ts +1 -0
  156. package/dist/types/src/interfaces/records-count.d.ts.map +1 -1
  157. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  158. package/dist/types/src/interfaces/records-query.d.ts +1 -0
  159. package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
  160. package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
  161. package/dist/types/src/interfaces/records-subscribe.d.ts +1 -0
  162. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  163. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  164. package/dist/types/src/protocols/permissions.d.ts +2 -0
  165. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  166. package/dist/types/src/sync/records-projection.d.ts +98 -0
  167. package/dist/types/src/sync/records-projection.d.ts.map +1 -0
  168. package/dist/types/src/types/message-types.d.ts +1 -0
  169. package/dist/types/src/types/message-types.d.ts.map +1 -1
  170. package/dist/types/src/types/messages-types.d.ts +21 -3
  171. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  172. package/dist/types/src/types/permission-types.d.ts +4 -0
  173. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  174. package/dist/types/src/types/records-types.d.ts +4 -0
  175. package/dist/types/src/types/records-types.d.ts.map +1 -1
  176. package/dist/types/src/types/subscriptions.d.ts +18 -3
  177. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  178. package/dist/types/src/utils/permission-scope.d.ts +29 -0
  179. package/dist/types/src/utils/permission-scope.d.ts.map +1 -0
  180. package/dist/types/tests/core/records-grant-authorization.spec.d.ts +2 -0
  181. package/dist/types/tests/core/records-grant-authorization.spec.d.ts.map +1 -0
  182. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  183. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -1
  184. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  185. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  186. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  187. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  188. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  189. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  190. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  191. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  192. package/dist/types/tests/sync/records-projection.spec.d.ts +2 -0
  193. package/dist/types/tests/sync/records-projection.spec.d.ts.map +1 -0
  194. package/dist/types/tests/test-suite.d.ts.map +1 -1
  195. package/dist/types/tests/utils/permission-scope.spec.d.ts +2 -0
  196. package/dist/types/tests/utils/permission-scope.spec.d.ts.map +1 -0
  197. package/dist/types/tests/utils/test-data-generator.d.ts +5 -2
  198. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  199. package/package.json +1 -1
  200. package/src/core/constants.ts +24 -0
  201. package/src/core/dwn-error.ts +24 -1
  202. package/src/core/grant-authorization.ts +7 -5
  203. package/src/core/message.ts +153 -6
  204. package/src/core/messages-grant-authorization.ts +282 -70
  205. package/src/core/protocol-authorization.ts +130 -0
  206. package/src/core/records-grant-authorization.ts +64 -21
  207. package/src/handlers/messages-read.ts +7 -5
  208. package/src/handlers/messages-subscribe.ts +149 -9
  209. package/src/handlers/messages-sync.ts +593 -102
  210. package/src/handlers/protocols-configure.ts +103 -2
  211. package/src/handlers/records-count.ts +33 -0
  212. package/src/handlers/records-delete.ts +3 -2
  213. package/src/handlers/records-query.ts +33 -0
  214. package/src/handlers/records-read.ts +3 -2
  215. package/src/handlers/records-subscribe.ts +34 -0
  216. package/src/handlers/records-write.ts +21 -15
  217. package/src/index.ts +7 -3
  218. package/src/interfaces/messages-read.ts +8 -5
  219. package/src/interfaces/messages-subscribe.ts +12 -9
  220. package/src/interfaces/messages-sync.ts +33 -12
  221. package/src/interfaces/protocols-configure.ts +8 -4
  222. package/src/interfaces/protocols-query.ts +13 -9
  223. package/src/interfaces/records-count.ts +7 -0
  224. package/src/interfaces/records-delete.ts +9 -5
  225. package/src/interfaces/records-query.ts +7 -0
  226. package/src/interfaces/records-read.ts +6 -3
  227. package/src/interfaces/records-subscribe.ts +7 -0
  228. package/src/interfaces/records-write.ts +25 -17
  229. package/src/protocols/permissions.ts +47 -9
  230. package/src/sync/records-projection.ts +328 -0
  231. package/src/types/message-types.ts +1 -0
  232. package/src/types/messages-types.ts +23 -3
  233. package/src/types/permission-types.ts +5 -1
  234. package/src/types/records-types.ts +5 -1
  235. package/src/types/subscriptions.ts +19 -3
  236. package/src/utils/permission-scope.ts +55 -0
@@ -1 +1 @@
1
- {"version":3,"file":"messages-read.spec.js","sourceRoot":"","sources":["../../../../tests/handlers/messages-read.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages-read.spec.js","sourceRoot":"","sources":["../../../../tests/handlers/messages-read.spec.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,15 @@ import { Dwn } from '../../src/dwn.js';
5
5
  import { DwnErrorCode } from '../../src/core/dwn-error.js';
6
6
  import { Jws } from '../../src/utils/jws.js';
7
7
  import { Message } from '../../src/core/message.js';
8
+ import { MessagesGrantAuthorization } from '../../src/core/messages-grant-authorization.js';
8
9
  import { MessagesSubscribe } from '../../src/interfaces/messages-subscribe.js';
9
10
  import { MessagesSubscribeHandler } from '../../src/handlers/messages-subscribe.js';
10
11
  import { Poller } from '../utils/poller.js';
11
12
  import { TestDataGenerator } from '../utils/test-data-generator.js';
12
13
  import { TestEventLog } from '../test-event-stream.js';
13
14
  import { TestStores } from '../test-stores.js';
15
+ import { DataStream, DwnInterfaceName, DwnMethodName, PermissionGrant, PermissionsProtocol, Time } from '../../src/index.js';
14
16
  import { DidKey, UniversalResolver } from '@enbox/dids';
15
- import { DwnInterfaceName, DwnMethodName } from '../../src/index.js';
16
17
  export function testMessagesSubscribeHandler() {
17
18
  describe('MessagesSubscribe.handle()', () => {
18
19
  describe('EventLog disabled', () => {
@@ -271,7 +272,7 @@ export function testMessagesSubscribeHandler() {
271
272
  // subscribe to messages
272
273
  const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
273
274
  author: bob,
274
- permissionGrantId: grantMessage.recordId,
275
+ permissionGrantIds: [grantMessage.recordId],
275
276
  });
276
277
  const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
277
278
  expect(subscribeReply.status.code).toBe(200);
@@ -345,7 +346,7 @@ export function testMessagesSubscribeHandler() {
345
346
  // bob subscribes to messages using the Messages.Read grant
346
347
  const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
347
348
  author: bob,
348
- permissionGrantId: grantMessage.recordId,
349
+ permissionGrantIds: [grantMessage.recordId],
349
350
  });
350
351
  const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
351
352
  expect(subscribeReply.status.code).toBe(200);
@@ -387,7 +388,7 @@ export function testMessagesSubscribeHandler() {
387
388
  // bob attempts to use the `RecordsWrite` grant on an `MessagesSubscribe` message
388
389
  const { message: bobSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
389
390
  author: bob,
390
- permissionGrantId: grantMessage.recordId
391
+ permissionGrantIds: [grantMessage.recordId]
391
392
  });
392
393
  const bobReply = await dwn.processMessage(alice.did, bobSubscribe);
393
394
  expect(bobReply.status.code).toBe(401);
@@ -438,7 +439,7 @@ export function testMessagesSubscribeHandler() {
438
439
  const { message: bobSubscribe1 } = await TestDataGenerator.generateMessagesSubscribe({
439
440
  author: bob,
440
441
  filters: [{ protocol: protocol1.protocol }],
441
- permissionGrantId: grant1Message.recordId
442
+ permissionGrantIds: [grant1Message.recordId]
442
443
  });
443
444
  const bobReply1 = await dwn.processMessage(alice.did, bobSubscribe1, { subscriptionHandler: proto1Handler });
444
445
  expect(bobReply1.status.code).toBe(200);
@@ -488,6 +489,267 @@ export function testMessagesSubscribeHandler() {
488
489
  expect(proto1MessageCids.sort()).toEqual(expectedProto1Cids.sort());
489
490
  });
490
491
  });
492
+ it('allows subscribe filters covered by a plural protocol grant set', async () => {
493
+ const alice = await TestDataGenerator.generateDidKeyPersona();
494
+ const bob = await TestDataGenerator.generateDidKeyPersona();
495
+ const protocol1 = { ...freeForAll, published: true, protocol: 'http://plural-grant-subscribe-1' };
496
+ const protocol2 = { ...freeForAll, published: true, protocol: 'http://plural-grant-subscribe-2' };
497
+ for (const protocolDefinition of [protocol1, protocol2]) {
498
+ const { message: protocolConfigure } = await TestDataGenerator.generateProtocolsConfigure({
499
+ author: alice,
500
+ protocolDefinition,
501
+ });
502
+ const protocolReply = await dwn.processMessage(alice.did, protocolConfigure);
503
+ expect(protocolReply.status.code).toBe(202);
504
+ }
505
+ const permissionGrantIds = [];
506
+ for (const protocolDefinition of [protocol1, protocol2]) {
507
+ const { message: grantMessage, dataStream: grantDataStream } = await TestDataGenerator.generateGrantCreate({
508
+ author: alice,
509
+ grantedTo: bob,
510
+ scope: {
511
+ interface: DwnInterfaceName.Messages,
512
+ method: DwnMethodName.Read,
513
+ protocol: protocolDefinition.protocol,
514
+ }
515
+ });
516
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream: grantDataStream });
517
+ expect(grantReply.status.code).toBe(202);
518
+ permissionGrantIds.push(grantMessage.recordId);
519
+ }
520
+ const receivedMessageCids = [];
521
+ const handler = async (msg) => {
522
+ if (msg.type !== 'event') {
523
+ return;
524
+ }
525
+ receivedMessageCids.push(await Message.getCid(msg.event.message));
526
+ };
527
+ const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
528
+ author: bob,
529
+ filters: [{ protocol: protocol1.protocol }, { protocol: protocol2.protocol }],
530
+ permissionGrantIds: permissionGrantIds.reverse(),
531
+ });
532
+ const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
533
+ expect(subscribeReply.status.code).toBe(200);
534
+ const { message: protocol1Record, dataStream: protocol1DataStream } = await TestDataGenerator.generateRecordsWrite({
535
+ author: alice,
536
+ protocol: protocol1.protocol,
537
+ protocolPath: 'post',
538
+ schema: protocol1.types.post.schema,
539
+ });
540
+ await dwn.processMessage(alice.did, protocol1Record, { dataStream: protocol1DataStream });
541
+ const { message: protocol2Record, dataStream: protocol2DataStream } = await TestDataGenerator.generateRecordsWrite({
542
+ author: alice,
543
+ protocol: protocol2.protocol,
544
+ protocolPath: 'post',
545
+ schema: protocol2.types.post.schema,
546
+ });
547
+ await dwn.processMessage(alice.did, protocol2Record, { dataStream: protocol2DataStream });
548
+ await Poller.pollUntilSuccessOrTimeout(async () => {
549
+ expect(receivedMessageCids.sort()).toEqual([
550
+ await Message.getCid(protocol1Record),
551
+ await Message.getCid(protocol2Record),
552
+ ].sort());
553
+ });
554
+ expect(subscribeMessage.descriptor.permissionGrantIds).toEqual([...permissionGrantIds].sort());
555
+ });
556
+ it('rejects subscribe when any grant in a plural grant set is not granted to the author', async () => {
557
+ const alice = await TestDataGenerator.generateDidKeyPersona();
558
+ const bob = await TestDataGenerator.generateDidKeyPersona();
559
+ const carol = await TestDataGenerator.generateDidKeyPersona();
560
+ const protocolDefinition = { ...freeForAll, published: true, protocol: 'http://plural-grant-subscribe-wrong-grantee' };
561
+ const { message: protocolConfigure } = await TestDataGenerator.generateProtocolsConfigure({
562
+ author: alice,
563
+ protocolDefinition,
564
+ });
565
+ const protocolReply = await dwn.processMessage(alice.did, protocolConfigure);
566
+ expect(protocolReply.status.code).toBe(202);
567
+ const grantIds = [];
568
+ for (const grantedTo of [bob, carol]) {
569
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
570
+ author: alice,
571
+ grantedTo,
572
+ scope: {
573
+ interface: DwnInterfaceName.Messages,
574
+ method: DwnMethodName.Read,
575
+ protocol: protocolDefinition.protocol,
576
+ }
577
+ });
578
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
579
+ expect(grantReply.status.code).toBe(202);
580
+ grantIds.push(grantMessage.recordId);
581
+ }
582
+ const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
583
+ author: bob,
584
+ filters: [{ protocol: protocolDefinition.protocol }],
585
+ permissionGrantIds: grantIds,
586
+ });
587
+ const reply = await dwn.processMessage(alice.did, subscribeMessage);
588
+ expect(reply.status.code).toBe(401);
589
+ expect(reply.status.detail).toContain(DwnErrorCode.GrantAuthorizationNotGrantedToAuthor);
590
+ expect(reply.subscription).toBeUndefined();
591
+ });
592
+ const createDelegatedProtocolSubscribe = async (protocol, options) => {
593
+ const alice = await TestDataGenerator.generateDidKeyPersona();
594
+ const bob = await TestDataGenerator.generateDidKeyPersona();
595
+ const protocolDefinition = { ...freeForAll, published: true, protocol };
596
+ const { message: protocolConfigure } = await TestDataGenerator.generateProtocolsConfigure({
597
+ author: alice,
598
+ protocolDefinition,
599
+ });
600
+ expect((await dwn.processMessage(alice.did, protocolConfigure)).status.code).toBe(202);
601
+ const grant = await TestDataGenerator.generateGrantCreate({
602
+ author: alice,
603
+ grantedTo: bob,
604
+ dateExpires: options?.dateExpires,
605
+ scope: {
606
+ interface: DwnInterfaceName.Messages,
607
+ method: DwnMethodName.Read,
608
+ protocol: protocolDefinition.protocol,
609
+ },
610
+ });
611
+ expect((await dwn.processMessage(alice.did, grant.message, { dataStream: grant.dataStream })).status.code).toBe(202);
612
+ const received = [];
613
+ const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
614
+ author: bob,
615
+ filters: [{ protocol: protocolDefinition.protocol }],
616
+ permissionGrantIds: [grant.message.recordId],
617
+ });
618
+ const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, {
619
+ subscriptionHandler: (msg) => { received.push(msg); },
620
+ });
621
+ expect(subscribeReply.status.code).toBe(200);
622
+ return { alice, protocolDefinition, grant, received };
623
+ };
624
+ const writeProtocolPost = async (author, protocolDefinition) => {
625
+ const record = await TestDataGenerator.generateRecordsWrite({
626
+ author,
627
+ protocol: protocolDefinition.protocol,
628
+ protocolPath: 'post',
629
+ schema: protocolDefinition.types.post.schema,
630
+ });
631
+ expect((await dwn.processMessage(author.did, record.message, { dataStream: record.dataStream })).status.code).toBe(202);
632
+ return record;
633
+ };
634
+ it('stops delegated delivery when an invoked grant is revoked after subscribe opens', async () => {
635
+ const { alice, protocolDefinition, grant, received } = await createDelegatedProtocolSubscribe('http://delegated-subscribe-revoked-delivery');
636
+ await writeProtocolPost(alice, protocolDefinition);
637
+ await Poller.pollUntilSuccessOrTimeout(async () => {
638
+ expect(received.filter(msg => msg.type === 'event').length).toBe(1);
639
+ });
640
+ await Time.minimalSleep();
641
+ const revocation = await PermissionsProtocol.createRevocation({
642
+ signer: Jws.createSigner(alice),
643
+ grant: PermissionGrant.parse(grant.dataEncodedMessage),
644
+ });
645
+ expect((await dwn.processMessage(alice.did, revocation.recordsWrite.message, { dataStream: DataStream.fromBytes(revocation.permissionRevocationBytes) })).status.code).toBe(202);
646
+ await Poller.pollUntilSuccessOrTimeout(async () => {
647
+ const errorMessage = received.find(msg => msg.type === 'error');
648
+ expect(errorMessage?.error.code).toBe(DwnErrorCode.MessagesSubscribeDeliveryAuthorizationFailed);
649
+ expect(received.filter(msg => msg.type === 'event').length).toBe(1);
650
+ });
651
+ });
652
+ it('stops delegated delivery when an invoked grant expires after subscribe opens', async () => {
653
+ const dateExpires = Time.createOffsetTimestamp({ seconds: 60 });
654
+ const { alice, protocolDefinition, received } = await createDelegatedProtocolSubscribe('http://delegated-subscribe-expired-delivery', { dateExpires });
655
+ await writeProtocolPost(alice, protocolDefinition);
656
+ await Poller.pollUntilSuccessOrTimeout(async () => {
657
+ expect(received.filter(msg => msg.type === 'event').length).toBe(1);
658
+ });
659
+ const secondRecord = await TestDataGenerator.generateRecordsWrite({
660
+ author: alice,
661
+ protocol: protocolDefinition.protocol,
662
+ protocolPath: 'post',
663
+ schema: protocolDefinition.types.post.schema,
664
+ });
665
+ sinon.stub(Time, 'getCurrentTimestamp').returns(Time.createOffsetTimestamp({ seconds: 1 }, dateExpires));
666
+ expect((await dwn.processMessage(alice.did, secondRecord.message, { dataStream: secondRecord.dataStream })).status.code).toBe(202);
667
+ await Poller.pollUntilSuccessOrTimeout(async () => {
668
+ const errorMessage = received.find(msg => msg.type === 'error');
669
+ expect(errorMessage?.error.code).toBe(DwnErrorCode.MessagesSubscribeDeliveryAuthorizationFailed);
670
+ expect(received.filter(msg => msg.type === 'event').length).toBe(1);
671
+ });
672
+ });
673
+ it('delivers delegated events in cursor order when delivery authorization resolves out of order', async () => {
674
+ const { alice, protocolDefinition, received } = await createDelegatedProtocolSubscribe('http://delegated-subscribe-ordered-delivery');
675
+ let firstAuthorizationStarted;
676
+ let releaseFirstAuthorization;
677
+ const firstAuthorizationStartedPromise = new Promise((resolve) => {
678
+ firstAuthorizationStarted = resolve;
679
+ });
680
+ const releaseFirstAuthorizationPromise = new Promise((resolve) => {
681
+ releaseFirstAuthorization = resolve;
682
+ });
683
+ const deliveryAuthorizationStub = sinon.stub(MessagesGrantAuthorization, 'authorizeSubscribeDelivery');
684
+ deliveryAuthorizationStub.onFirstCall().callsFake(async () => {
685
+ firstAuthorizationStarted();
686
+ await releaseFirstAuthorizationPromise;
687
+ });
688
+ deliveryAuthorizationStub.onSecondCall().resolves();
689
+ await writeProtocolPost(alice, protocolDefinition);
690
+ await firstAuthorizationStartedPromise;
691
+ await writeProtocolPost(alice, protocolDefinition);
692
+ await Time.minimalSleep();
693
+ expect(received.filter(msg => msg.type === 'event').length).toBe(0);
694
+ releaseFirstAuthorization();
695
+ await Poller.pollUntilSuccessOrTimeout(async () => {
696
+ expect(received.filter(msg => msg.type === 'event').length).toBe(2);
697
+ });
698
+ const eventPositions = received
699
+ .filter((msg) => msg.type === 'event')
700
+ .map(msg => BigInt(msg.cursor.position));
701
+ expect(eventPositions[0] < eventPositions[1]).toBe(true);
702
+ });
703
+ it('emits one terminal error when multiple delegated deliveries fail concurrently', async () => {
704
+ const { alice, protocolDefinition, received } = await createDelegatedProtocolSubscribe('http://delegated-subscribe-single-terminal-error');
705
+ let releaseAuthorizationFailures;
706
+ const releaseAuthorizationFailuresPromise = new Promise((resolve) => {
707
+ releaseAuthorizationFailures = resolve;
708
+ });
709
+ sinon.stub(MessagesGrantAuthorization, 'authorizeSubscribeDelivery').callsFake(async () => {
710
+ await releaseAuthorizationFailuresPromise;
711
+ throw new Error('delivery authorization failed');
712
+ });
713
+ await writeProtocolPost(alice, protocolDefinition);
714
+ await writeProtocolPost(alice, protocolDefinition);
715
+ releaseAuthorizationFailures();
716
+ await Poller.pollUntilSuccessOrTimeout(async () => {
717
+ expect(received.filter(msg => msg.type === 'error').length).toBe(1);
718
+ });
719
+ await Time.minimalSleep();
720
+ expect(received.filter(msg => msg.type === 'error').length).toBe(1);
721
+ expect(received.filter(msg => msg.type === 'event').length).toBe(0);
722
+ });
723
+ it('does not run delivery grant checks for owner subscriptions', async () => {
724
+ const alice = await TestDataGenerator.generateDidKeyPersona();
725
+ const protocolDefinition = { ...freeForAll, published: true, protocol: 'http://owner-subscribe-pass-through-delivery' };
726
+ const { message: protocolConfigure } = await TestDataGenerator.generateProtocolsConfigure({
727
+ author: alice,
728
+ protocolDefinition,
729
+ });
730
+ expect((await dwn.processMessage(alice.did, protocolConfigure)).status.code).toBe(202);
731
+ const received = [];
732
+ const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
733
+ author: alice,
734
+ filters: [{ protocol: protocolDefinition.protocol }],
735
+ });
736
+ const deliveryAuthorizationStub = sinon.stub(MessagesGrantAuthorization, 'authorizeSubscribeDelivery').rejects(new Error('owner path should not check grants'));
737
+ const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, {
738
+ subscriptionHandler: (msg) => { received.push(msg); },
739
+ });
740
+ expect(subscribeReply.status.code).toBe(200);
741
+ const record = await TestDataGenerator.generateRecordsWrite({
742
+ author: alice,
743
+ protocol: protocolDefinition.protocol,
744
+ protocolPath: 'post',
745
+ schema: protocolDefinition.types.post.schema,
746
+ });
747
+ expect((await dwn.processMessage(alice.did, record.message, { dataStream: record.dataStream })).status.code).toBe(202);
748
+ await Poller.pollUntilSuccessOrTimeout(async () => {
749
+ expect(received.filter(msg => msg.type === 'event').length).toBe(1);
750
+ });
751
+ expect(deliveryAuthorizationStub.callCount).toBe(0);
752
+ });
491
753
  it('allows subscribe of protocolPathPrefix filtered messages including protocol metadata', async () => {
492
754
  // scenario: Alice installs a protocol with two paths (post, post/attachment).
493
755
  // She subscribes with a protocolPathPrefix filter for 'post'.
@@ -807,27 +1069,82 @@ export function testMessagesSubscribeHandler() {
807
1069
  });
808
1070
  const grant1Reply = await dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
809
1071
  expect(grant1Reply.status.code).toBe(202);
1072
+ // bob cannot use a protocol-scoped grant for an unfiltered all-message subscription
1073
+ const { message: unfilteredSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
1074
+ author: bob,
1075
+ filters: [],
1076
+ permissionGrantIds: [grant1Message.recordId]
1077
+ });
1078
+ const unfilteredReply = await dwn.processMessage(alice.did, unfilteredSubscribe);
1079
+ expect(unfilteredReply.status.code).toBe(401);
1080
+ expect(unfilteredReply.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationUnfilteredSubscribeProtocolScope);
1081
+ expect(unfilteredReply.subscription).toBeUndefined();
810
1082
  // bob uses the grant for protocol 1 to subscribe for protocol 2 messages
811
1083
  const { message: bobSubscribe1 } = await TestDataGenerator.generateMessagesSubscribe({
812
1084
  author: bob,
813
1085
  filters: [{ protocol: protocol2.protocol }],
814
- permissionGrantId: grant1Message.recordId
1086
+ permissionGrantIds: [grant1Message.recordId]
815
1087
  });
816
1088
  const bobReply1 = await dwn.processMessage(alice.did, bobSubscribe1);
817
1089
  expect(bobReply1.status.code).toBe(401);
818
- expect(bobReply1.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol);
1090
+ expect(bobReply1.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationSubscribeProtocolMismatch);
819
1091
  expect(bobReply1.subscription).toBeUndefined();
820
1092
  // bob attempts to use the grant for protocol 1 to subscribe to messages in protocol 1 OR protocol 2 given two filters
821
1093
  // this should fail because the grant is scoped to protocol 1 only
822
1094
  const { message: bobSubscribe2 } = await TestDataGenerator.generateMessagesSubscribe({
823
1095
  author: bob,
824
1096
  filters: [{ protocol: protocol1.protocol }, { protocol: protocol2.protocol }],
825
- permissionGrantId: grant1Message.recordId
1097
+ permissionGrantIds: [grant1Message.recordId]
826
1098
  });
827
1099
  const bobReply2 = await dwn.processMessage(alice.did, bobSubscribe2);
828
1100
  expect(bobReply2.status.code).toBe(401);
829
- expect(bobReply2.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol);
1101
+ expect(bobReply2.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationSubscribeProtocolMismatch);
830
1102
  expect(bobReply2.subscription).toBeUndefined();
1103
+ // A protocolPath-scoped grant cannot authorize a protocolPathPrefix
1104
+ // filter because the prefix includes child paths and is broader than
1105
+ // an exact protocolPath grant.
1106
+ const { message: pathGrantMessage, dataStream: pathGrantDataStream } = await TestDataGenerator.generateGrantCreate({
1107
+ author: alice,
1108
+ grantedTo: bob,
1109
+ scope: {
1110
+ interface: DwnInterfaceName.Messages,
1111
+ method: DwnMethodName.Read,
1112
+ protocol: protocol1.protocol,
1113
+ protocolPath: 'post'
1114
+ }
1115
+ });
1116
+ const pathGrantReply = await dwn.processMessage(alice.did, pathGrantMessage, { dataStream: pathGrantDataStream });
1117
+ expect(pathGrantReply.status.code).toBe(202);
1118
+ const { message: pathScopedSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
1119
+ author: bob,
1120
+ filters: [{ protocol: protocol1.protocol, protocolPathPrefix: 'post' }],
1121
+ permissionGrantIds: [pathGrantMessage.recordId]
1122
+ });
1123
+ const pathScopedReply = await dwn.processMessage(alice.did, pathScopedSubscribe);
1124
+ expect(pathScopedReply.status.code).toBe(401);
1125
+ expect(pathScopedReply.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationSubscribeProtocolMismatch);
1126
+ expect(pathScopedReply.subscription).toBeUndefined();
1127
+ const { message: contextGrantMessage, dataStream: contextGrantDataStream } = await TestDataGenerator.generateGrantCreate({
1128
+ author: alice,
1129
+ grantedTo: bob,
1130
+ scope: {
1131
+ interface: DwnInterfaceName.Messages,
1132
+ method: DwnMethodName.Read,
1133
+ protocol: protocol1.protocol,
1134
+ contextId: 'root'
1135
+ }
1136
+ });
1137
+ const contextGrantReply = await dwn.processMessage(alice.did, contextGrantMessage, { dataStream: contextGrantDataStream });
1138
+ expect(contextGrantReply.status.code).toBe(202);
1139
+ const { message: contextScopedSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
1140
+ author: bob,
1141
+ filters: [{ protocol: protocol1.protocol, contextIdPrefix: 'root' }],
1142
+ permissionGrantIds: [contextGrantMessage.recordId]
1143
+ });
1144
+ const contextScopedReply = await dwn.processMessage(alice.did, contextScopedSubscribe);
1145
+ expect(contextScopedReply.status.code).toBe(401);
1146
+ expect(contextScopedReply.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationSubscribeProtocolMismatch);
1147
+ expect(contextScopedReply.subscription).toBeUndefined();
831
1148
  });
832
1149
  });
833
1150
  });