@enbox/dwn-sdk-js 0.0.2 → 0.0.3

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 (601) hide show
  1. package/README.md +52 -301
  2. package/dist/bundles/dwn.js +19 -21
  3. package/dist/esm/generated/precompiled-validators.js +2764 -1773
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/dwn-error.js +27 -3
  6. package/dist/esm/src/core/dwn-error.js.map +1 -1
  7. package/dist/esm/src/core/message.js.map +1 -1
  8. package/dist/esm/src/core/messages-grant-authorization.js +17 -6
  9. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  10. package/dist/esm/src/core/protocol-authorization.js +245 -69
  11. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  12. package/dist/esm/src/core/resumable-task-manager.js +4 -4
  13. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  14. package/dist/esm/src/dwn.js +10 -8
  15. package/dist/esm/src/dwn.js.map +1 -1
  16. package/dist/esm/src/enums/dwn-interface-method.js +4 -2
  17. package/dist/esm/src/enums/dwn-interface-method.js.map +1 -1
  18. package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -0
  19. package/dist/esm/src/handlers/messages-subscribe.js +1 -1
  20. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  21. package/dist/esm/src/handlers/messages-sync.js +116 -0
  22. package/dist/esm/src/handlers/messages-sync.js.map +1 -0
  23. package/dist/esm/src/handlers/protocols-configure.js +149 -16
  24. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  25. package/dist/esm/src/handlers/protocols-query.js +2 -2
  26. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  27. package/dist/esm/src/handlers/records-count.js +143 -0
  28. package/dist/esm/src/handlers/records-count.js.map +1 -0
  29. package/dist/esm/src/handlers/records-query.js +4 -0
  30. package/dist/esm/src/handlers/records-query.js.map +1 -1
  31. package/dist/esm/src/handlers/records-read.js +4 -6
  32. package/dist/esm/src/handlers/records-read.js.map +1 -1
  33. package/dist/esm/src/handlers/records-write.js +17 -18
  34. package/dist/esm/src/handlers/records-write.js.map +1 -1
  35. package/dist/esm/src/index.js +9 -5
  36. package/dist/esm/src/index.js.map +1 -1
  37. package/dist/esm/src/interfaces/messages-read.js +2 -7
  38. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  39. package/dist/esm/src/interfaces/messages-subscribe.js +1 -0
  40. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  41. package/dist/esm/src/interfaces/{messages-query.js → messages-sync.js} +11 -12
  42. package/dist/esm/src/interfaces/messages-sync.js.map +1 -0
  43. package/dist/esm/src/interfaces/protocols-configure.js +153 -30
  44. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  45. package/dist/esm/src/interfaces/protocols-query.js +1 -0
  46. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  47. package/dist/esm/src/interfaces/records-count.js +91 -0
  48. package/dist/esm/src/interfaces/records-count.js.map +1 -0
  49. package/dist/esm/src/interfaces/records-read.js +15 -1
  50. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  51. package/dist/esm/src/interfaces/records-write.js +64 -15
  52. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  53. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  54. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -1
  55. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  56. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  57. package/dist/esm/src/protocols/permission-grant.js +30 -0
  58. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  59. package/dist/esm/src/protocols/permission-request.js +24 -0
  60. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  61. package/dist/esm/src/protocols/permissions.js +1 -1
  62. package/dist/esm/src/protocols/permissions.js.map +1 -1
  63. package/dist/esm/src/schema-validator.js +0 -1
  64. package/dist/esm/src/schema-validator.js.map +1 -1
  65. package/dist/esm/src/smt/smt-store-level.js +125 -0
  66. package/dist/esm/src/smt/smt-store-level.js.map +1 -0
  67. package/dist/esm/src/smt/smt-store-memory.js +67 -0
  68. package/dist/esm/src/smt/smt-store-memory.js.map +1 -0
  69. package/dist/esm/src/smt/smt-utils.js +146 -0
  70. package/dist/esm/src/smt/smt-utils.js.map +1 -0
  71. package/dist/esm/src/smt/sparse-merkle-tree.js +622 -0
  72. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -0
  73. package/dist/esm/src/state-index/state-index-level.js +228 -0
  74. package/dist/esm/src/state-index/state-index-level.js.map +1 -0
  75. package/dist/esm/src/store/data-store-level.js +6 -6
  76. package/dist/esm/src/store/data-store-level.js.map +1 -1
  77. package/dist/esm/src/store/index-level.js +375 -17
  78. package/dist/esm/src/store/index-level.js.map +1 -1
  79. package/dist/esm/src/store/message-store-level.js +56 -0
  80. package/dist/esm/src/store/message-store-level.js.map +1 -1
  81. package/dist/esm/src/store/storage-controller.js +19 -16
  82. package/dist/esm/src/store/storage-controller.js.map +1 -1
  83. package/dist/esm/src/types/encryption-types.js +2 -0
  84. package/dist/esm/src/types/encryption-types.js.map +1 -0
  85. package/dist/esm/src/types/message-types.js.map +1 -1
  86. package/dist/esm/src/types/protocols-types.js +0 -2
  87. package/dist/esm/src/types/protocols-types.js.map +1 -1
  88. package/dist/esm/src/types/records-types.js +2 -0
  89. package/dist/esm/src/types/records-types.js.map +1 -1
  90. package/dist/esm/src/types/smt-types.js +5 -0
  91. package/dist/esm/src/types/smt-types.js.map +1 -0
  92. package/dist/esm/src/types/state-index.js +2 -0
  93. package/dist/esm/src/types/state-index.js.map +1 -0
  94. package/dist/esm/src/utils/cid.js +2 -1
  95. package/dist/esm/src/utils/cid.js.map +1 -1
  96. package/dist/esm/src/utils/data-stream.js +84 -29
  97. package/dist/esm/src/utils/data-stream.js.map +1 -1
  98. package/dist/esm/src/utils/encryption.js +22 -31
  99. package/dist/esm/src/utils/encryption.js.map +1 -1
  100. package/dist/esm/src/utils/hd-key.js +3 -3
  101. package/dist/esm/src/utils/hd-key.js.map +1 -1
  102. package/dist/esm/src/utils/jws.js +4 -4
  103. package/dist/esm/src/utils/jws.js.map +1 -1
  104. package/dist/esm/src/utils/private-key-signer.js +4 -3
  105. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  106. package/dist/esm/src/utils/protocols.js +82 -9
  107. package/dist/esm/src/utils/protocols.js.map +1 -1
  108. package/dist/esm/src/utils/records.js +82 -26
  109. package/dist/esm/src/utils/records.js.map +1 -1
  110. package/dist/esm/src/utils/secp256k1.js +4 -3
  111. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  112. package/dist/esm/src/utils/secp256r1.js +3 -2
  113. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  114. package/dist/esm/src/utils/time.js +1 -1
  115. package/dist/esm/src/utils/url.js +1 -1
  116. package/dist/esm/src/utils/url.js.map +1 -1
  117. package/dist/esm/tests/core/auth.spec.js +2 -2
  118. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  119. package/dist/esm/tests/core/message-reply.spec.js +3 -3
  120. package/dist/esm/tests/core/message-reply.spec.js.map +1 -1
  121. package/dist/esm/tests/core/message.spec.js +13 -13
  122. package/dist/esm/tests/core/message.spec.js.map +1 -1
  123. package/dist/esm/tests/core/protocol-authorization.spec.js +3 -3
  124. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  125. package/dist/esm/tests/dwn.spec.js +27 -37
  126. package/dist/esm/tests/dwn.spec.js.map +1 -1
  127. package/dist/esm/tests/{event-log → event-stream}/event-emitter-stream.spec.js +14 -15
  128. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -0
  129. package/dist/esm/tests/{event-log → event-stream}/event-stream.spec.js +13 -15
  130. package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -0
  131. package/dist/esm/tests/features/author-delegated-grant.spec.js +281 -135
  132. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  133. package/dist/esm/tests/features/owner-delegated-grant.spec.js +57 -59
  134. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  135. package/dist/esm/tests/features/owner-signature.spec.js +32 -34
  136. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  137. package/dist/esm/tests/features/permissions.spec.js +73 -95
  138. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  139. package/dist/esm/tests/features/protocol-composition.spec.js +1645 -0
  140. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -0
  141. package/dist/esm/tests/features/protocol-create-action.spec.js +25 -27
  142. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  143. package/dist/esm/tests/features/protocol-delete-action.spec.js +42 -44
  144. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  145. package/dist/esm/tests/features/protocol-update-action.spec.js +53 -55
  146. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  147. package/dist/esm/tests/features/records-prune.spec.js +126 -100
  148. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  149. package/dist/esm/tests/features/records-tags.spec.js +272 -272
  150. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  151. package/dist/esm/tests/features/resumable-tasks.spec.js +35 -37
  152. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  153. package/dist/esm/tests/handlers/messages-read.spec.js +112 -112
  154. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  155. package/dist/esm/tests/handlers/messages-subscribe.spec.js +78 -76
  156. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  157. package/dist/esm/tests/handlers/messages-sync.spec.js +528 -0
  158. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -0
  159. package/dist/esm/tests/handlers/protocols-configure.spec.js +545 -152
  160. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  161. package/dist/esm/tests/handlers/protocols-query.spec.js +70 -72
  162. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  163. package/dist/esm/tests/handlers/records-count.spec.js +313 -0
  164. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -0
  165. package/dist/esm/tests/handlers/records-delete.spec.js +106 -109
  166. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  167. package/dist/esm/tests/handlers/records-query.spec.js +863 -463
  168. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  169. package/dist/esm/tests/handlers/records-read.spec.js +439 -209
  170. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  171. package/dist/esm/tests/handlers/records-subscribe.spec.js +292 -97
  172. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  173. package/dist/esm/tests/handlers/records-write.spec.js +481 -483
  174. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  175. package/dist/esm/tests/interfaces/messages-get.spec.js +31 -11
  176. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  177. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +5 -5
  178. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  179. package/dist/esm/tests/interfaces/protocols-configure.spec.js +64 -134
  180. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  181. package/dist/esm/tests/interfaces/protocols-query.spec.js +4 -6
  182. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  183. package/dist/esm/tests/interfaces/records-delete.spec.js +3 -5
  184. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  185. package/dist/esm/tests/interfaces/records-query.spec.js +9 -11
  186. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  187. package/dist/esm/tests/interfaces/records-read.spec.js +76 -7
  188. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  189. package/dist/esm/tests/interfaces/records-subscribe.spec.js +7 -9
  190. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  191. package/dist/esm/tests/interfaces/records-write.spec.js +244 -48
  192. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  193. package/dist/esm/tests/jose/jws/general.spec.js +15 -18
  194. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  195. package/dist/esm/tests/protocols/permission-grant.spec.js +114 -0
  196. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -0
  197. package/dist/esm/tests/protocols/permission-request.spec.js +43 -7
  198. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  199. package/dist/esm/tests/protocols/permissions.spec.js +9 -11
  200. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  201. package/dist/esm/tests/scenarios/aggregator.spec.js +90 -92
  202. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  203. package/dist/esm/tests/scenarios/deleted-record.spec.js +17 -19
  204. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  205. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +27 -29
  206. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  207. package/dist/esm/tests/scenarios/nested-roles.spec.js +37 -39
  208. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  209. package/dist/esm/tests/scenarios/subscriptions.spec.js +163 -163
  210. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  211. package/dist/esm/tests/smt/smt-store-level.spec.js +143 -0
  212. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -0
  213. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +741 -0
  214. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -0
  215. package/dist/esm/tests/state-index/state-index-level.spec.js +254 -0
  216. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -0
  217. package/dist/esm/tests/store/blockstore-level.spec.js +136 -0
  218. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -0
  219. package/dist/esm/tests/store/blockstore-mock.spec.js +29 -28
  220. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  221. package/dist/esm/tests/store/data-store-level.spec.js +23 -25
  222. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  223. package/dist/esm/tests/store/index-level.spec.js +544 -194
  224. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  225. package/dist/esm/tests/store/message-store-level.spec.js +4 -4
  226. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  227. package/dist/esm/tests/store/message-store.spec.js +147 -73
  228. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  229. package/dist/esm/tests/store-dependent-tests.spec.js +1 -0
  230. package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -1
  231. package/dist/esm/tests/test-stores.js +5 -5
  232. package/dist/esm/tests/test-stores.js.map +1 -1
  233. package/dist/esm/tests/test-suite.js +9 -8
  234. package/dist/esm/tests/test-suite.js.map +1 -1
  235. package/dist/esm/tests/utils/cid.spec.js +8 -11
  236. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  237. package/dist/esm/tests/utils/data-stream.spec.js +167 -13
  238. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  239. package/dist/esm/tests/utils/encryption-callbacks.spec.js +233 -0
  240. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -0
  241. package/dist/esm/tests/utils/encryption.spec.js +34 -85
  242. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  243. package/dist/esm/tests/utils/filters.spec.js +67 -69
  244. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  245. package/dist/esm/tests/utils/hd-key.spec.js +3 -3
  246. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  247. package/dist/esm/tests/utils/jws.spec.js +54 -3
  248. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  249. package/dist/esm/tests/utils/memory-cache.spec.js +6 -9
  250. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  251. package/dist/esm/tests/utils/messages.spec.js +63 -29
  252. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  253. package/dist/esm/tests/utils/object.spec.js +3 -3
  254. package/dist/esm/tests/utils/object.spec.js.map +1 -1
  255. package/dist/esm/tests/utils/poller.js +1 -1
  256. package/dist/esm/tests/utils/poller.js.map +1 -1
  257. package/dist/esm/tests/utils/private-key-signer.spec.js +6 -6
  258. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  259. package/dist/esm/tests/utils/records.spec.js +37 -5
  260. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  261. package/dist/esm/tests/utils/secp256k1.spec.js +7 -7
  262. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  263. package/dist/esm/tests/utils/secp256r1.spec.js +7 -7
  264. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  265. package/dist/esm/tests/utils/test-data-generator.js +47 -28
  266. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  267. package/dist/esm/tests/utils/time.spec.js +7 -7
  268. package/dist/esm/tests/utils/time.spec.js.map +1 -1
  269. package/dist/esm/tests/utils/url.spec.js +25 -27
  270. package/dist/esm/tests/utils/url.spec.js.map +1 -1
  271. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +4 -4
  272. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  273. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +15 -3
  274. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  275. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -8
  276. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  277. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +8 -18
  278. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  279. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +3 -3
  280. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  281. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +9 -9
  282. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  283. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +106 -0
  284. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -0
  285. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +18 -18
  286. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  287. package/dist/esm/tests/vectors/protocol-definitions/email.json +1 -1
  288. package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +2 -4
  289. package/dist/esm/tests/vectors/protocol-definitions/slack.json +2 -6
  290. package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +2 -6
  291. package/dist/types/generated/precompiled-validators.d.ts +82 -64
  292. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  293. package/dist/types/src/core/dwn-error.d.ts +27 -3
  294. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  295. package/dist/types/src/core/message-reply.d.ts +1 -1
  296. package/dist/types/src/core/message.d.ts +3 -3
  297. package/dist/types/src/core/message.d.ts.map +1 -1
  298. package/dist/types/src/core/messages-grant-authorization.d.ts +4 -4
  299. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  300. package/dist/types/src/core/protocol-authorization.d.ts +43 -2
  301. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  302. package/dist/types/src/core/records-grant-authorization.d.ts +2 -2
  303. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  304. package/dist/types/src/core/resumable-task-manager.d.ts +1 -0
  305. package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -1
  306. package/dist/types/src/dwn.d.ts +8 -8
  307. package/dist/types/src/dwn.d.ts.map +1 -1
  308. package/dist/types/src/enums/dwn-interface-method.d.ts +5 -3
  309. package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -1
  310. package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +1 -0
  311. package/dist/types/src/handlers/messages-sync.d.ts +21 -0
  312. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -0
  313. package/dist/types/src/handlers/protocols-configure.d.ts +24 -4
  314. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  315. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
  316. package/dist/types/src/handlers/records-count.d.ts +43 -0
  317. package/dist/types/src/handlers/records-count.d.ts.map +1 -0
  318. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  319. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  320. package/dist/types/src/handlers/records-write.d.ts +5 -5
  321. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  322. package/dist/types/src/index.d.ts +72 -37
  323. package/dist/types/src/index.d.ts.map +1 -1
  324. package/dist/types/src/interfaces/messages-read.d.ts +2 -2
  325. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
  326. package/dist/types/src/interfaces/messages-subscribe.d.ts +2 -2
  327. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  328. package/dist/types/src/interfaces/messages-sync.d.ts +16 -0
  329. package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -0
  330. package/dist/types/src/interfaces/protocols-configure.d.ts +22 -2
  331. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  332. package/dist/types/src/interfaces/protocols-query.d.ts +2 -2
  333. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
  334. package/dist/types/src/interfaces/records-count.d.ts +27 -0
  335. package/dist/types/src/interfaces/records-count.d.ts.map +1 -0
  336. package/dist/types/src/interfaces/records-delete.d.ts +2 -2
  337. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  338. package/dist/types/src/interfaces/records-query.d.ts +2 -2
  339. package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
  340. package/dist/types/src/interfaces/records-read.d.ts +4 -2
  341. package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
  342. package/dist/types/src/interfaces/records-subscribe.d.ts +2 -2
  343. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  344. package/dist/types/src/interfaces/records-write.d.ts +37 -15
  345. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  346. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -1
  347. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +5 -1
  348. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -1
  349. package/dist/types/src/jose/jws/general/builder.d.ts +3 -3
  350. package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -1
  351. package/dist/types/src/protocols/permission-grant.d.ts +11 -0
  352. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  353. package/dist/types/src/protocols/permission-request.d.ts +11 -0
  354. package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
  355. package/dist/types/src/protocols/permissions.d.ts +4 -4
  356. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  357. package/dist/types/src/schema-validator.d.ts +1 -1
  358. package/dist/types/src/schema-validator.d.ts.map +1 -1
  359. package/dist/types/src/smt/smt-store-level.d.ts +32 -0
  360. package/dist/types/src/smt/smt-store-level.d.ts.map +1 -0
  361. package/dist/types/src/smt/smt-store-memory.d.ts +22 -0
  362. package/dist/types/src/smt/smt-store-memory.d.ts.map +1 -0
  363. package/dist/types/src/smt/smt-utils.d.ts +58 -0
  364. package/dist/types/src/smt/smt-utils.d.ts.map +1 -0
  365. package/dist/types/src/smt/sparse-merkle-tree.d.ts +124 -0
  366. package/dist/types/src/smt/sparse-merkle-tree.d.ts.map +1 -0
  367. package/dist/types/src/state-index/state-index-level.d.ts +83 -0
  368. package/dist/types/src/state-index/state-index-level.d.ts.map +1 -0
  369. package/dist/types/src/store/data-store-level.d.ts +1 -2
  370. package/dist/types/src/store/data-store-level.d.ts.map +1 -1
  371. package/dist/types/src/store/index-level.d.ts +98 -2
  372. package/dist/types/src/store/index-level.d.ts.map +1 -1
  373. package/dist/types/src/store/level-wrapper.d.ts.map +1 -1
  374. package/dist/types/src/store/message-store-level.d.ts +5 -0
  375. package/dist/types/src/store/message-store-level.d.ts.map +1 -1
  376. package/dist/types/src/store/storage-controller.d.ts +7 -7
  377. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  378. package/dist/types/src/types/data-store.d.ts +2 -3
  379. package/dist/types/src/types/data-store.d.ts.map +1 -1
  380. package/dist/types/src/types/encryption-types.d.ts +48 -0
  381. package/dist/types/src/types/encryption-types.d.ts.map +1 -0
  382. package/dist/types/src/types/jose-types.d.ts +9 -40
  383. package/dist/types/src/types/jose-types.d.ts.map +1 -1
  384. package/dist/types/src/types/message-store.d.ts +5 -0
  385. package/dist/types/src/types/message-store.d.ts.map +1 -1
  386. package/dist/types/src/types/message-types.d.ts +19 -0
  387. package/dist/types/src/types/message-types.d.ts.map +1 -1
  388. package/dist/types/src/types/messages-types.d.ts +16 -11
  389. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  390. package/dist/types/src/types/method-handler.d.ts +1 -2
  391. package/dist/types/src/types/method-handler.d.ts.map +1 -1
  392. package/dist/types/src/types/permission-types.d.ts +2 -2
  393. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  394. package/dist/types/src/types/protocols-types.d.ts +49 -5
  395. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  396. package/dist/types/src/types/records-types.d.ts +23 -7
  397. package/dist/types/src/types/records-types.d.ts.map +1 -1
  398. package/dist/types/src/types/signer.d.ts +1 -1
  399. package/dist/types/src/types/signer.d.ts.map +1 -1
  400. package/dist/types/src/types/smt-types.d.ts +81 -0
  401. package/dist/types/src/types/smt-types.d.ts.map +1 -0
  402. package/dist/types/src/types/state-index.d.ts +90 -0
  403. package/dist/types/src/types/state-index.d.ts.map +1 -0
  404. package/dist/types/src/utils/cid.d.ts +1 -2
  405. package/dist/types/src/utils/cid.d.ts.map +1 -1
  406. package/dist/types/src/utils/data-stream.d.ts +14 -7
  407. package/dist/types/src/utils/data-stream.d.ts.map +1 -1
  408. package/dist/types/src/utils/encryption.d.ts +2 -3
  409. package/dist/types/src/utils/encryption.d.ts.map +1 -1
  410. package/dist/types/src/utils/hd-key.d.ts +4 -4
  411. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  412. package/dist/types/src/utils/jws.d.ts +7 -7
  413. package/dist/types/src/utils/jws.d.ts.map +1 -1
  414. package/dist/types/src/utils/private-key-signer.d.ts +4 -4
  415. package/dist/types/src/utils/private-key-signer.d.ts.map +1 -1
  416. package/dist/types/src/utils/protocols.d.ts +46 -3
  417. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  418. package/dist/types/src/utils/records.d.ts +33 -6
  419. package/dist/types/src/utils/records.d.ts.map +1 -1
  420. package/dist/types/src/utils/secp256k1.d.ts +11 -11
  421. package/dist/types/src/utils/secp256k1.d.ts.map +1 -1
  422. package/dist/types/src/utils/secp256r1.d.ts +8 -8
  423. package/dist/types/src/utils/secp256r1.d.ts.map +1 -1
  424. package/dist/types/src/utils/time.d.ts +1 -1
  425. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  426. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +1 -0
  427. package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +1 -0
  428. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  429. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  430. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  431. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  432. package/dist/types/tests/features/protocol-composition.spec.d.ts +5 -0
  433. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -0
  434. package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -1
  435. package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -1
  436. package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -1
  437. package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -1
  438. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  439. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  440. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  441. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  442. package/dist/types/tests/handlers/messages-sync.spec.d.ts +2 -0
  443. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -0
  444. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  445. package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -1
  446. package/dist/types/tests/handlers/records-count.spec.d.ts +2 -0
  447. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -0
  448. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  449. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  450. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  451. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  452. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  453. package/dist/types/tests/protocols/permission-grant.spec.d.ts +2 -0
  454. package/dist/types/tests/protocols/permission-grant.spec.d.ts.map +1 -0
  455. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  456. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
  457. package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -1
  458. package/dist/types/tests/smt/smt-store-level.spec.d.ts +2 -0
  459. package/dist/types/tests/smt/smt-store-level.spec.d.ts.map +1 -0
  460. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts +2 -0
  461. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts.map +1 -0
  462. package/dist/types/tests/state-index/state-index-level.spec.d.ts +2 -0
  463. package/dist/types/tests/state-index/state-index-level.spec.d.ts.map +1 -0
  464. package/dist/types/tests/store/blockstore-level.spec.d.ts +2 -0
  465. package/dist/types/tests/store/blockstore-level.spec.d.ts.map +1 -0
  466. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
  467. package/dist/types/tests/test-stores.d.ts +4 -4
  468. package/dist/types/tests/test-stores.d.ts.map +1 -1
  469. package/dist/types/tests/test-suite.d.ts +2 -2
  470. package/dist/types/tests/test-suite.d.ts.map +1 -1
  471. package/dist/types/tests/utils/encryption-callbacks.spec.d.ts +2 -0
  472. package/dist/types/tests/utils/encryption-callbacks.spec.d.ts.map +1 -0
  473. package/dist/types/tests/utils/test-data-generator.d.ts +31 -28
  474. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  475. package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts +2 -0
  476. package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts.map +1 -0
  477. package/package.json +27 -46
  478. package/src/core/dwn-error.ts +27 -3
  479. package/src/core/message-reply.ts +1 -1
  480. package/src/core/message.ts +5 -5
  481. package/src/core/messages-grant-authorization.ts +22 -8
  482. package/src/core/protocol-authorization.ts +345 -68
  483. package/src/core/records-grant-authorization.ts +2 -2
  484. package/src/core/resumable-task-manager.ts +4 -5
  485. package/src/dwn.ts +25 -20
  486. package/src/enums/dwn-interface-method.ts +5 -3
  487. package/src/handlers/messages-subscribe.ts +1 -1
  488. package/src/handlers/messages-sync.ts +129 -0
  489. package/src/handlers/protocols-configure.ts +195 -17
  490. package/src/handlers/protocols-query.ts +7 -5
  491. package/src/handlers/records-count.ts +184 -0
  492. package/src/handlers/records-query.ts +4 -0
  493. package/src/handlers/records-read.ts +4 -8
  494. package/src/handlers/records-write.ts +20 -21
  495. package/src/index.ts +74 -37
  496. package/src/interfaces/messages-read.ts +6 -5
  497. package/src/interfaces/messages-subscribe.ts +7 -6
  498. package/src/interfaces/messages-sync.ts +59 -0
  499. package/src/interfaces/protocols-configure.ts +211 -33
  500. package/src/interfaces/protocols-query.ts +7 -6
  501. package/src/interfaces/records-count.ts +106 -0
  502. package/src/interfaces/records-delete.ts +2 -2
  503. package/src/interfaces/records-query.ts +2 -2
  504. package/src/interfaces/records-read.ts +26 -3
  505. package/src/interfaces/records-subscribe.ts +2 -2
  506. package/src/interfaces/records-write.ts +115 -46
  507. package/src/jose/algorithms/signing/ed25519.ts +13 -12
  508. package/src/jose/algorithms/signing/signature-algorithms.ts +6 -1
  509. package/src/jose/jws/general/builder.ts +3 -3
  510. package/src/jose/jws/general/verifier.ts +3 -3
  511. package/src/protocols/permission-grant.ts +51 -0
  512. package/src/protocols/permission-request.ts +37 -0
  513. package/src/protocols/permissions.ts +5 -5
  514. package/src/schema-validator.ts +11 -3
  515. package/src/smt/smt-store-level.ts +143 -0
  516. package/src/smt/smt-store-memory.ts +53 -0
  517. package/src/smt/smt-utils.ts +149 -0
  518. package/src/smt/sparse-merkle-tree.ts +698 -0
  519. package/src/state-index/state-index-level.ts +241 -0
  520. package/src/store/data-store-level.ts +8 -7
  521. package/src/store/index-level.ts +415 -19
  522. package/src/store/level-wrapper.ts +1 -1
  523. package/src/store/message-store-level.ts +62 -0
  524. package/src/store/storage-controller.ts +21 -19
  525. package/src/types/data-store.ts +2 -4
  526. package/src/types/encryption-types.ts +52 -0
  527. package/src/types/jose-types.ts +10 -42
  528. package/src/types/message-store.ts +11 -0
  529. package/src/types/message-types.ts +21 -0
  530. package/src/types/messages-types.ts +21 -15
  531. package/src/types/method-handler.ts +1 -2
  532. package/src/types/permission-types.ts +2 -2
  533. package/src/types/protocols-types.ts +55 -6
  534. package/src/types/records-types.ts +26 -7
  535. package/src/types/signer.ts +1 -1
  536. package/src/types/smt-types.ts +95 -0
  537. package/src/types/state-index.ts +100 -0
  538. package/src/utils/cid.ts +3 -4
  539. package/src/utils/data-stream.ts +75 -38
  540. package/src/utils/encryption.ts +24 -39
  541. package/src/utils/hd-key.ts +6 -6
  542. package/src/utils/jws.ts +9 -9
  543. package/src/utils/private-key-signer.ts +9 -8
  544. package/src/utils/protocols.ts +132 -6
  545. package/src/utils/records.ts +118 -29
  546. package/src/utils/secp256k1.ts +23 -21
  547. package/src/utils/secp256r1.ts +17 -15
  548. package/src/utils/time.ts +1 -1
  549. package/src/utils/url.ts +1 -1
  550. package/dist/cjs/index.js +0 -36749
  551. package/dist/cjs/package.json +0 -1
  552. package/dist/esm/src/event-log/event-emitter-stream.js.map +0 -1
  553. package/dist/esm/src/event-log/event-log-level.js +0 -63
  554. package/dist/esm/src/event-log/event-log-level.js.map +0 -1
  555. package/dist/esm/src/handlers/messages-query.js +0 -71
  556. package/dist/esm/src/handlers/messages-query.js.map +0 -1
  557. package/dist/esm/src/interfaces/messages-query.js.map +0 -1
  558. package/dist/esm/src/types/event-log.js +0 -2
  559. package/dist/esm/src/types/event-log.js.map +0 -1
  560. package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +0 -1
  561. package/dist/esm/tests/event-log/event-log-level.spec.js +0 -44
  562. package/dist/esm/tests/event-log/event-log-level.spec.js.map +0 -1
  563. package/dist/esm/tests/event-log/event-log.spec.js +0 -236
  564. package/dist/esm/tests/event-log/event-log.spec.js.map +0 -1
  565. package/dist/esm/tests/event-log/event-stream.spec.js.map +0 -1
  566. package/dist/esm/tests/handlers/messages-query.spec.js +0 -349
  567. package/dist/esm/tests/handlers/messages-query.spec.js.map +0 -1
  568. package/dist/esm/tests/interfaces/messagess-query.spec.js +0 -127
  569. package/dist/esm/tests/interfaces/messagess-query.spec.js.map +0 -1
  570. package/dist/esm/tests/scenarios/messages-query.spec.js +0 -395
  571. package/dist/esm/tests/scenarios/messages-query.spec.js.map +0 -1
  572. package/dist/types/src/event-log/event-emitter-stream.d.ts.map +0 -1
  573. package/dist/types/src/event-log/event-log-level.d.ts +0 -35
  574. package/dist/types/src/event-log/event-log-level.d.ts.map +0 -1
  575. package/dist/types/src/handlers/messages-query.d.ts +0 -17
  576. package/dist/types/src/handlers/messages-query.d.ts.map +0 -1
  577. package/dist/types/src/interfaces/messages-query.d.ts +0 -16
  578. package/dist/types/src/interfaces/messages-query.d.ts.map +0 -1
  579. package/dist/types/src/types/event-log.d.ts +0 -52
  580. package/dist/types/src/types/event-log.d.ts.map +0 -1
  581. package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +0 -1
  582. package/dist/types/tests/event-log/event-log-level.spec.d.ts +0 -2
  583. package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +0 -1
  584. package/dist/types/tests/event-log/event-log.spec.d.ts +0 -2
  585. package/dist/types/tests/event-log/event-log.spec.d.ts.map +0 -1
  586. package/dist/types/tests/event-log/event-stream.spec.d.ts.map +0 -1
  587. package/dist/types/tests/handlers/messages-query.spec.d.ts +0 -2
  588. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +0 -1
  589. package/dist/types/tests/interfaces/messagess-query.spec.d.ts +0 -2
  590. package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +0 -1
  591. package/dist/types/tests/scenarios/messages-query.spec.d.ts +0 -2
  592. package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +0 -1
  593. package/src/event-log/event-log-level.ts +0 -72
  594. package/src/handlers/messages-query.ts +0 -67
  595. package/src/interfaces/messages-query.ts +0 -60
  596. package/src/types/event-log.ts +0 -52
  597. /package/dist/esm/src/{event-log → event-stream}/event-emitter-stream.js +0 -0
  598. /package/dist/types/src/{event-log → event-stream}/event-emitter-stream.d.ts +0 -0
  599. /package/dist/types/tests/{event-log → event-stream}/event-emitter-stream.spec.d.ts +0 -0
  600. /package/dist/types/tests/{event-log → event-stream}/event-stream.spec.d.ts +0 -0
  601. /package/src/{event-log → event-stream}/event-emitter-stream.ts +0 -0
@@ -7,9 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import chaiAsPromised from 'chai-as-promised';
11
10
  import sinon from 'sinon';
12
- import chai, { expect } from 'chai';
13
11
  import { DidKey } from '@enbox/dids';
14
12
  import { Dwn } from '../../src/dwn.js';
15
13
  import { DwnErrorCode } from '../../src/core/dwn-error.js';
@@ -21,28 +19,28 @@ import { TestDataGenerator } from '../utils/test-data-generator.js';
21
19
  import { TestEventStream } from '../test-event-stream.js';
22
20
  import { TestStores } from '../test-stores.js';
23
21
  import { UniversalResolver } from '@enbox/dids';
22
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
24
23
  import { DwnInterfaceName, DwnMethodName, Message, Time } from '../../src/index.js';
25
- chai.use(chaiAsPromised);
26
24
  export function testRecordsTags() {
27
25
  describe('Records Tags', () => {
28
26
  let didResolver;
29
27
  let messageStore;
30
28
  let dataStore;
31
29
  let resumableTaskStore;
32
- let eventLog;
30
+ let stateIndex;
33
31
  let eventStream;
34
32
  let dwn;
35
33
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
36
34
  // so that different test suites can reuse the same backend store for testing
37
- before(() => __awaiter(this, void 0, void 0, function* () {
35
+ beforeAll(() => __awaiter(this, void 0, void 0, function* () {
38
36
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
39
37
  const stores = TestStores.get();
40
38
  messageStore = stores.messageStore;
41
39
  dataStore = stores.dataStore;
42
40
  resumableTaskStore = stores.resumableTaskStore;
43
- eventLog = stores.eventLog;
41
+ stateIndex = stores.stateIndex;
44
42
  eventStream = TestEventStream.get();
45
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
43
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
46
44
  }));
47
45
  beforeEach(() => __awaiter(this, void 0, void 0, function* () {
48
46
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
@@ -50,9 +48,9 @@ export function testRecordsTags() {
50
48
  yield messageStore.clear();
51
49
  yield dataStore.clear();
52
50
  yield resumableTaskStore.clear();
53
- yield eventLog.clear();
51
+ yield stateIndex.clear();
54
52
  }));
55
- after(() => __awaiter(this, void 0, void 0, function* () {
53
+ afterAll(() => __awaiter(this, void 0, void 0, function* () {
56
54
  yield dwn.close();
57
55
  }));
58
56
  describe('RecordsWrite with tags', () => {
@@ -109,7 +107,7 @@ export function testRecordsTags() {
109
107
  protocolDefinition,
110
108
  });
111
109
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
112
- expect(configureReply.status.code).to.equal(202);
110
+ expect(configureReply.status.code).toBe(202);
113
111
  }));
114
112
  it('should reject tags that have invalid schema definitions during create', () => __awaiter(this, void 0, void 0, function* () {
115
113
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -141,7 +139,7 @@ export function testRecordsTags() {
141
139
  author: alice,
142
140
  protocolDefinition: invalidSchemaProtocol,
143
141
  });
144
- yield expect(protocolConfigure).to.eventually.be.rejectedWith(DwnErrorCode.ProtocolsConfigureInvalidTagSchema);
142
+ yield expect(protocolConfigure).rejects.toThrow(DwnErrorCode.ProtocolsConfigureInvalidTagSchema);
145
143
  }));
146
144
  it('should reject tags that have invalid schema definitions during process', () => __awaiter(this, void 0, void 0, function* () {
147
145
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -182,9 +180,9 @@ export function testRecordsTags() {
182
180
  });
183
181
  const protocolsConfigureMessage = { descriptor, authorization };
184
182
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
185
- expect(protocolsConfigureReply.status.code).to.equal(400);
186
- expect(protocolsConfigureReply.status.detail).to.contain(DwnErrorCode.ProtocolsConfigureInvalidTagSchema);
187
- expect(protocolsConfigureReply.status.detail).to.contain(`foo/$tags/invalidTag/contains/minimum must be number`);
183
+ expect(protocolsConfigureReply.status.code).toBe(400);
184
+ expect(protocolsConfigureReply.status.detail).toContain(DwnErrorCode.ProtocolsConfigureInvalidTagSchema);
185
+ expect(protocolsConfigureReply.status.detail).toContain(`foo/$tags/invalidTag/contains/minimum must be number`);
188
186
  }));
189
187
  describe('should reject invalid tag types', () => {
190
188
  it('object', () => __awaiter(this, void 0, void 0, function* () {
@@ -219,7 +217,7 @@ export function testRecordsTags() {
219
217
  });
220
218
  const protocolsConfigureMessage = { descriptor, authorization };
221
219
  const objectTagsTypeConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
222
- expect(objectTagsTypeConfigureReply.status.code).to.equal(400);
220
+ expect(objectTagsTypeConfigureReply.status.code).toBe(400);
223
221
  }));
224
222
  it('array of objects', () => __awaiter(this, void 0, void 0, function* () {
225
223
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -256,7 +254,7 @@ export function testRecordsTags() {
256
254
  });
257
255
  const protocolsConfigureMessage = { descriptor, authorization };
258
256
  const objectArrayTagsTypeConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
259
- expect(objectArrayTagsTypeConfigureReply.status.code).to.equal(400);
257
+ expect(objectArrayTagsTypeConfigureReply.status.code).toBe(400);
260
258
  }));
261
259
  it('array of booleans', () => __awaiter(this, void 0, void 0, function* () {
262
260
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -292,7 +290,7 @@ export function testRecordsTags() {
292
290
  });
293
291
  const protocolsConfigureMessage = { descriptor, authorization };
294
292
  const booleanArrayTagsTypeConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
295
- expect(booleanArrayTagsTypeConfigureReply.status.code).to.equal(400);
293
+ expect(booleanArrayTagsTypeConfigureReply.status.code).toBe(400);
296
294
  }));
297
295
  });
298
296
  });
@@ -321,7 +319,7 @@ export function testRecordsTags() {
321
319
  protocolDefinition,
322
320
  });
323
321
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
324
- expect(configureReply.status.code).to.equal(202);
322
+ expect(configureReply.status.code).toBe(202);
325
323
  // write a foo record with an `unknownTag` tag.
326
324
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
327
325
  author: alice,
@@ -333,10 +331,10 @@ export function testRecordsTags() {
333
331
  }
334
332
  });
335
333
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
336
- expect(fooRecordReply.status.code).to.equal(400);
337
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
334
+ expect(fooRecordReply.status.code).toBe(400);
335
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
338
336
  // ensure the correct tag descriptor is in the error message
339
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags must NOT have additional properties`);
337
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags must NOT have additional properties`);
340
338
  // write a foo record with a `knownTag` tag.
341
339
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
342
340
  author: alice,
@@ -349,7 +347,7 @@ export function testRecordsTags() {
349
347
  });
350
348
  // should pass
351
349
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
352
- expect(validFooRecordReply.status.code).to.equal(202);
350
+ expect(validFooRecordReply.status.code).toBe(202);
353
351
  }));
354
352
  it('should reject a tag value that does not match the boolean type', () => __awaiter(this, void 0, void 0, function* () {
355
353
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -376,7 +374,7 @@ export function testRecordsTags() {
376
374
  protocolDefinition
377
375
  });
378
376
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
379
- expect(configureReply.status.code).to.equal(202);
377
+ expect(configureReply.status.code).toBe(202);
380
378
  // `draft` should be a boolean type, but we are passing a string
381
379
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
382
380
  author: alice,
@@ -388,9 +386,9 @@ export function testRecordsTags() {
388
386
  }
389
387
  });
390
388
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
391
- expect(fooRecordReply.status.code).to.equal(400);
392
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
393
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/draft must be boolean`);
389
+ expect(fooRecordReply.status.code).toBe(400);
390
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
391
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/draft must be boolean`);
394
392
  // positive test with a boolean
395
393
  const fooRecord2 = yield TestDataGenerator.generateRecordsWrite({
396
394
  author: alice,
@@ -402,7 +400,7 @@ export function testRecordsTags() {
402
400
  }
403
401
  });
404
402
  const fooRecord2Reply = yield dwn.processMessage(alice.did, fooRecord2.message, { dataStream: fooRecord2.dataStream });
405
- expect(fooRecord2Reply.status.code).to.equal(202);
403
+ expect(fooRecord2Reply.status.code).toBe(202);
406
404
  }));
407
405
  it('should reject a tag value that does not match the number type', () => __awaiter(this, void 0, void 0, function* () {
408
406
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -429,7 +427,7 @@ export function testRecordsTags() {
429
427
  protocolDefinition
430
428
  });
431
429
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
432
- expect(configureReply.status.code).to.equal(202);
430
+ expect(configureReply.status.code).toBe(202);
433
431
  // `numberType` should be a number type, but we are passing a string
434
432
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
435
433
  author: alice,
@@ -441,9 +439,9 @@ export function testRecordsTags() {
441
439
  }
442
440
  });
443
441
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
444
- expect(fooRecordReply.status.code).to.equal(400);
445
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
446
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/numberType must be number`);
442
+ expect(fooRecordReply.status.code).toBe(400);
443
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
444
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/numberType must be number`);
447
445
  // positive tests with an integer number
448
446
  const fooRecord2 = yield TestDataGenerator.generateRecordsWrite({
449
447
  author: alice,
@@ -455,7 +453,7 @@ export function testRecordsTags() {
455
453
  }
456
454
  });
457
455
  const fooRecord2Reply = yield dwn.processMessage(alice.did, fooRecord2.message, { dataStream: fooRecord2.dataStream });
458
- expect(fooRecord2Reply.status.code).to.equal(202);
456
+ expect(fooRecord2Reply.status.code).toBe(202);
459
457
  // positive tests with a decimal number
460
458
  const fooRecord3 = yield TestDataGenerator.generateRecordsWrite({
461
459
  author: alice,
@@ -467,7 +465,7 @@ export function testRecordsTags() {
467
465
  }
468
466
  });
469
467
  const fooRecord3Reply = yield dwn.processMessage(alice.did, fooRecord3.message, { dataStream: fooRecord3.dataStream });
470
- expect(fooRecord3Reply.status.code).to.equal(202);
468
+ expect(fooRecord3Reply.status.code).toBe(202);
471
469
  }));
472
470
  it('should reject a tag value that does not match the integer type', () => __awaiter(this, void 0, void 0, function* () {
473
471
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -494,7 +492,7 @@ export function testRecordsTags() {
494
492
  protocolDefinition
495
493
  });
496
494
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
497
- expect(configureReply.status.code).to.equal(202);
495
+ expect(configureReply.status.code).toBe(202);
498
496
  // `count` should be an integer type, but we are passing decimal number
499
497
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
500
498
  author: alice,
@@ -506,9 +504,9 @@ export function testRecordsTags() {
506
504
  }
507
505
  });
508
506
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
509
- expect(fooRecordReply.status.code).to.equal(400);
510
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
511
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/count must be integer`);
507
+ expect(fooRecordReply.status.code).toBe(400);
508
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
509
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/count must be integer`);
512
510
  // positive test with an integer
513
511
  const fooRecord2 = yield TestDataGenerator.generateRecordsWrite({
514
512
  author: alice,
@@ -520,7 +518,7 @@ export function testRecordsTags() {
520
518
  }
521
519
  });
522
520
  const fooRecord2Reply = yield dwn.processMessage(alice.did, fooRecord2.message, { dataStream: fooRecord2.dataStream });
523
- expect(fooRecord2Reply.status.code).to.equal(202);
521
+ expect(fooRecord2Reply.status.code).toBe(202);
524
522
  }));
525
523
  it('should reject a record with a tag value that does not match a given enum in the protocol definition', () => __awaiter(this, void 0, void 0, function* () {
526
524
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -548,7 +546,7 @@ export function testRecordsTags() {
548
546
  protocolDefinition,
549
547
  });
550
548
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
551
- expect(configureReply.status.code).to.equal(202);
549
+ expect(configureReply.status.code).toBe(202);
552
550
  // write a foo record with an `unknown_status` tag value.
553
551
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
554
552
  author: alice,
@@ -560,12 +558,12 @@ export function testRecordsTags() {
560
558
  }
561
559
  });
562
560
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
563
- expect(fooRecordReply.status.code).to.equal(400);
564
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
565
- expect(fooRecordReply.status.detail).to
566
- .contain(`${protocolDefinition.protocol}/foo/$tags/status must be equal to one of the allowed values`);
561
+ expect(fooRecordReply.status.code).toBe(400);
562
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
563
+ const expectedStatusMsg = `${protocolDefinition.protocol}/foo/$tags/status must be equal to one of the allowed values`;
564
+ expect(fooRecordReply.status.detail).toContain(expectedStatusMsg);
567
565
  // ensure the correct tag descriptor path is in the error message
568
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/status`);
566
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/status`);
569
567
  // write a foo record with a valid `status` tag value.
570
568
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
571
569
  author: alice,
@@ -578,7 +576,7 @@ export function testRecordsTags() {
578
576
  });
579
577
  // should pass
580
578
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
581
- expect(validFooRecordReply.status.code).to.equal(202);
579
+ expect(validFooRecordReply.status.code).toBe(202);
582
580
  }));
583
581
  it('should reject a record with a tag value that is not within the `minimum` and `maximum` range', () => __awaiter(this, void 0, void 0, function* () {
584
582
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -607,7 +605,7 @@ export function testRecordsTags() {
607
605
  protocolDefinition,
608
606
  });
609
607
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
610
- expect(configureReply.status.code).to.equal(202);
608
+ expect(configureReply.status.code).toBe(202);
611
609
  // write a foo record with an `score` value less than 0.
612
610
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
613
611
  author: alice,
@@ -620,9 +618,9 @@ export function testRecordsTags() {
620
618
  });
621
619
  // should fail
622
620
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
623
- expect(fooRecordReply.status.code).to.equal(400);
624
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
625
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/score must be >= 0`);
621
+ expect(fooRecordReply.status.code).toBe(400);
622
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
623
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/score must be >= 0`);
626
624
  // write a foo record with an `score` value greater than 100.
627
625
  const fooRecord2 = yield TestDataGenerator.generateRecordsWrite({
628
626
  author: alice,
@@ -635,9 +633,9 @@ export function testRecordsTags() {
635
633
  });
636
634
  // should fail
637
635
  const fooRecord2Reply = yield dwn.processMessage(alice.did, fooRecord2.message, { dataStream: fooRecord2.dataStream });
638
- expect(fooRecord2Reply.status.code).to.equal(400);
639
- expect(fooRecord2Reply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
640
- expect(fooRecord2Reply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/score must be <= 100`);
636
+ expect(fooRecord2Reply.status.code).toBe(400);
637
+ expect(fooRecord2Reply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
638
+ expect(fooRecord2Reply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/score must be <= 100`);
641
639
  // write a foo record with a maximum `score` of 100.
642
640
  const validFooMaxRecord = yield TestDataGenerator.generateRecordsWrite({
643
641
  author: alice,
@@ -650,7 +648,7 @@ export function testRecordsTags() {
650
648
  });
651
649
  // should pass
652
650
  const validFooMaxRecordReply = yield dwn.processMessage(alice.did, validFooMaxRecord.message, { dataStream: validFooMaxRecord.dataStream });
653
- expect(validFooMaxRecordReply.status.code).to.equal(202);
651
+ expect(validFooMaxRecordReply.status.code).toBe(202);
654
652
  // write a foo record with a maximum `score` of 0.
655
653
  const validFooMinRecord = yield TestDataGenerator.generateRecordsWrite({
656
654
  author: alice,
@@ -663,7 +661,7 @@ export function testRecordsTags() {
663
661
  });
664
662
  // should pass
665
663
  const validFooMinRecordReply = yield dwn.processMessage(alice.did, validFooMinRecord.message, { dataStream: validFooMinRecord.dataStream });
666
- expect(validFooMinRecordReply.status.code).to.equal(202);
664
+ expect(validFooMinRecordReply.status.code).toBe(202);
667
665
  // write a foo record within the range
668
666
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
669
667
  author: alice,
@@ -676,7 +674,7 @@ export function testRecordsTags() {
676
674
  });
677
675
  // should pass
678
676
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
679
- expect(validFooRecordReply.status.code).to.equal(202);
677
+ expect(validFooRecordReply.status.code).toBe(202);
680
678
  }));
681
679
  it('should reject a record with a tag value that is not within the `exclusiveMinimum` and `exclusiveMaximum` range', () => __awaiter(this, void 0, void 0, function* () {
682
680
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -705,7 +703,7 @@ export function testRecordsTags() {
705
703
  protocolDefinition,
706
704
  });
707
705
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
708
- expect(configureReply.status.code).to.equal(202);
706
+ expect(configureReply.status.code).toBe(202);
709
707
  // write a foo record with an hour at the exclusiveMaximum
710
708
  const exclusiveMaxRecord = yield TestDataGenerator.generateRecordsWrite({
711
709
  author: alice,
@@ -718,9 +716,9 @@ export function testRecordsTags() {
718
716
  });
719
717
  // should fail
720
718
  const exclusiveMaxReply = yield dwn.processMessage(alice.did, exclusiveMaxRecord.message, { dataStream: exclusiveMaxRecord.dataStream });
721
- expect(exclusiveMaxReply.status.code).to.equal(400);
722
- expect(exclusiveMaxReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
723
- expect(exclusiveMaxReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/hours must be < 24`);
719
+ expect(exclusiveMaxReply.status.code).toBe(400);
720
+ expect(exclusiveMaxReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
721
+ expect(exclusiveMaxReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/hours must be < 24`);
724
722
  // write a foo record with an hour at the exclusiveMinimum
725
723
  const exclusiveMinRecord = yield TestDataGenerator.generateRecordsWrite({
726
724
  author: alice,
@@ -733,9 +731,9 @@ export function testRecordsTags() {
733
731
  });
734
732
  // should fail
735
733
  const exclusiveMinReply = yield dwn.processMessage(alice.did, exclusiveMinRecord.message, { dataStream: exclusiveMinRecord.dataStream });
736
- expect(exclusiveMinReply.status.code).to.equal(400);
737
- expect(exclusiveMinReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
738
- expect(exclusiveMinReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/hours must be > 0`);
734
+ expect(exclusiveMinReply.status.code).toBe(400);
735
+ expect(exclusiveMinReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
736
+ expect(exclusiveMinReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/hours must be > 0`);
739
737
  // write a foo record with an `hour` value within the range.
740
738
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
741
739
  author: alice,
@@ -748,7 +746,7 @@ export function testRecordsTags() {
748
746
  });
749
747
  // should pass
750
748
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
751
- expect(validFooRecordReply.status.code).to.equal(202);
749
+ expect(validFooRecordReply.status.code).toBe(202);
752
750
  }));
753
751
  it('should reject tag values that are not within the `minLength` and `maxLength` values', () => __awaiter(this, void 0, void 0, function* () {
754
752
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -777,7 +775,7 @@ export function testRecordsTags() {
777
775
  protocolDefinition,
778
776
  });
779
777
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
780
- expect(configureReply.status.code).to.equal(202);
778
+ expect(configureReply.status.code).toBe(202);
781
779
  // write a foo record with a `stringWithLimit` value less than the minimum length
782
780
  const minLengthRecord = yield TestDataGenerator.generateRecordsWrite({
783
781
  author: alice,
@@ -790,10 +788,10 @@ export function testRecordsTags() {
790
788
  });
791
789
  // should fail
792
790
  const minLengthReply = yield dwn.processMessage(alice.did, minLengthRecord.message, { dataStream: minLengthRecord.dataStream });
793
- expect(minLengthReply.status.code).to.equal(400);
794
- expect(minLengthReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
795
- expect(minLengthReply.status.detail).to
796
- .contain(`${protocolDefinition.protocol}/foo/$tags/stringWithLimit must NOT have fewer than 5 characters`);
791
+ expect(minLengthReply.status.code).toBe(400);
792
+ expect(minLengthReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
793
+ const expectedMinMsg = `${protocolDefinition.protocol}/foo/$tags/stringWithLimit must NOT have fewer than 5 characters`;
794
+ expect(minLengthReply.status.detail).toContain(expectedMinMsg);
797
795
  // write a foo record with a `stringWithLimit` value greater than the maximum length
798
796
  const maxLengthRecord = yield TestDataGenerator.generateRecordsWrite({
799
797
  author: alice,
@@ -806,10 +804,10 @@ export function testRecordsTags() {
806
804
  });
807
805
  // should fail
808
806
  const maxLengthReply = yield dwn.processMessage(alice.did, maxLengthRecord.message, { dataStream: maxLengthRecord.dataStream });
809
- expect(maxLengthReply.status.code).to.equal(400);
810
- expect(maxLengthReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
811
- expect(maxLengthReply.status.detail).to
812
- .contain(`${protocolDefinition.protocol}/foo/$tags/stringWithLimit must NOT have more than 10 characters`);
807
+ expect(maxLengthReply.status.code).toBe(400);
808
+ expect(maxLengthReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
809
+ const expectedMaxMsg = `${protocolDefinition.protocol}/foo/$tags/stringWithLimit must NOT have more than 10 characters`;
810
+ expect(maxLengthReply.status.detail).toContain(expectedMaxMsg);
813
811
  // write a foo record with a `stringWithLimit` value within the range
814
812
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
815
813
  author: alice,
@@ -822,7 +820,7 @@ export function testRecordsTags() {
822
820
  });
823
821
  // should pass
824
822
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
825
- expect(validFooRecordReply.status.code).to.equal(202);
823
+ expect(validFooRecordReply.status.code).toBe(202);
826
824
  }));
827
825
  it('should reject tag values that do not contain the number of items within the `minItems` and `maxItems` values', () => __awaiter(this, void 0, void 0, function* () {
828
826
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -854,7 +852,7 @@ export function testRecordsTags() {
854
852
  protocolDefinition,
855
853
  });
856
854
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
857
- expect(configureReply.status.code).to.equal(202);
855
+ expect(configureReply.status.code).toBe(202);
858
856
  // write a foo record with a `numberArray` value with only 1 item, less than the `minItems` specified of 2
859
857
  const minLengthRecord = yield TestDataGenerator.generateRecordsWrite({
860
858
  author: alice,
@@ -867,9 +865,9 @@ export function testRecordsTags() {
867
865
  });
868
866
  // should fail
869
867
  const minLengthReply = yield dwn.processMessage(alice.did, minLengthRecord.message, { dataStream: minLengthRecord.dataStream });
870
- expect(minLengthReply.status.code).to.equal(400);
871
- expect(minLengthReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
872
- expect(minLengthReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/numberArray must NOT have fewer than 2 items`);
868
+ expect(minLengthReply.status.code).toBe(400);
869
+ expect(minLengthReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
870
+ expect(minLengthReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/numberArray must NOT have fewer than 2 items`);
873
871
  // write a foo record with a `numberArray` value with 4 items, more than the `maxItems` specified of 3
874
872
  const maxLengthRecord = yield TestDataGenerator.generateRecordsWrite({
875
873
  author: alice,
@@ -882,9 +880,9 @@ export function testRecordsTags() {
882
880
  });
883
881
  // should fail
884
882
  const maxLengthReply = yield dwn.processMessage(alice.did, maxLengthRecord.message, { dataStream: maxLengthRecord.dataStream });
885
- expect(maxLengthReply.status.code).to.equal(400);
886
- expect(maxLengthReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
887
- expect(maxLengthReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/numberArray must NOT have more than 3 items`);
883
+ expect(maxLengthReply.status.code).toBe(400);
884
+ expect(maxLengthReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
885
+ expect(maxLengthReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/numberArray must NOT have more than 3 items`);
888
886
  // write a foo record with a `numberArray` value with 3 items, within the range
889
887
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
890
888
  author: alice,
@@ -897,7 +895,7 @@ export function testRecordsTags() {
897
895
  });
898
896
  // should pass
899
897
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
900
- expect(validFooRecordReply.status.code).to.equal(202);
898
+ expect(validFooRecordReply.status.code).toBe(202);
901
899
  }));
902
900
  it('should reject a value within an array that should only include numbers', () => __awaiter(this, void 0, void 0, function* () {
903
901
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -927,7 +925,7 @@ export function testRecordsTags() {
927
925
  protocolDefinition
928
926
  });
929
927
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
930
- expect(configureReply.status.code).to.equal(202);
928
+ expect(configureReply.status.code).toBe(202);
931
929
  // write a foo record with a `numberArray` value with a string
932
930
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
933
931
  author: alice,
@@ -940,9 +938,9 @@ export function testRecordsTags() {
940
938
  });
941
939
  // should fail
942
940
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
943
- expect(fooRecordReply.status.code).to.equal(400);
944
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
945
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/numberArray/0 must be number`);
941
+ expect(fooRecordReply.status.code).toBe(400);
942
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
943
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/numberArray/0 must be number`);
946
944
  // write a foo record with a `numberArray` value with a number (both integer and decimal)
947
945
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
948
946
  author: alice,
@@ -955,7 +953,7 @@ export function testRecordsTags() {
955
953
  });
956
954
  // should pass
957
955
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
958
- expect(validFooRecordReply.status.code).to.equal(202);
956
+ expect(validFooRecordReply.status.code).toBe(202);
959
957
  }));
960
958
  it('should reject a value within an array that should only include integers', () => __awaiter(this, void 0, void 0, function* () {
961
959
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -985,7 +983,7 @@ export function testRecordsTags() {
985
983
  protocolDefinition
986
984
  });
987
985
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
988
- expect(configureReply.status.code).to.equal(202);
986
+ expect(configureReply.status.code).toBe(202);
989
987
  // write a foo record with a `numberArray` value with a decimal
990
988
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
991
989
  author: alice,
@@ -998,9 +996,9 @@ export function testRecordsTags() {
998
996
  });
999
997
  // should fail
1000
998
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
1001
- expect(fooRecordReply.status.code).to.equal(400);
1002
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1003
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags/numberArray/1 must be integer`);
999
+ expect(fooRecordReply.status.code).toBe(400);
1000
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1001
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags/numberArray/1 must be integer`);
1004
1002
  // write a foo record with a `numberArray` value with values of integers
1005
1003
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1006
1004
  author: alice,
@@ -1013,7 +1011,7 @@ export function testRecordsTags() {
1013
1011
  });
1014
1012
  // should pass
1015
1013
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1016
- expect(validFooRecordReply.status.code).to.equal(202);
1014
+ expect(validFooRecordReply.status.code).toBe(202);
1017
1015
  }));
1018
1016
  it('should reject tag values that do not contain the number of items within the `minContains` and `maxContains` values', () => __awaiter(this, void 0, void 0, function* () {
1019
1017
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1050,7 +1048,7 @@ export function testRecordsTags() {
1050
1048
  protocolDefinition,
1051
1049
  });
1052
1050
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1053
- expect(configureReply.status.code).to.equal(202);
1051
+ expect(configureReply.status.code).toBe(202);
1054
1052
  // write a foo record with a `numberArray` value with only 1 item that matches contains contraint, less than the `minContains` of 2
1055
1053
  // but additional items that would equal more than 2 items
1056
1054
  const minLengthRecord = yield TestDataGenerator.generateRecordsWrite({
@@ -1064,10 +1062,10 @@ export function testRecordsTags() {
1064
1062
  });
1065
1063
  // should fail
1066
1064
  const minLengthReply = yield dwn.processMessage(alice.did, minLengthRecord.message, { dataStream: minLengthRecord.dataStream });
1067
- expect(minLengthReply.status.code).to.equal(400);
1068
- expect(minLengthReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1065
+ expect(minLengthReply.status.code).toBe(400);
1066
+ expect(minLengthReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1069
1067
  expect(minLengthReply.status.detail)
1070
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/numberArray must contain at least 2 and no more than 4 valid item(s)`);
1068
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/numberArray must contain at least 2 and no more than 4 valid item(s)`);
1071
1069
  // write a foo record with a `numberArray` value with 4 items, more than the `maxItems` specified of 3
1072
1070
  const maxLengthRecord = yield TestDataGenerator.generateRecordsWrite({
1073
1071
  author: alice,
@@ -1080,10 +1078,10 @@ export function testRecordsTags() {
1080
1078
  });
1081
1079
  // should fail
1082
1080
  const maxLengthReply = yield dwn.processMessage(alice.did, maxLengthRecord.message, { dataStream: maxLengthRecord.dataStream });
1083
- expect(maxLengthReply.status.code).to.equal(400);
1084
- expect(maxLengthReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1081
+ expect(maxLengthReply.status.code).toBe(400);
1082
+ expect(maxLengthReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1085
1083
  expect(maxLengthReply.status.detail)
1086
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/numberArray must contain at least 2 and no more than 4 valid item(s)`);
1084
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/numberArray must contain at least 2 and no more than 4 valid item(s)`);
1087
1085
  // write a foo record with a `numberArray` value with 3 items, within the range
1088
1086
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1089
1087
  author: alice,
@@ -1096,7 +1094,7 @@ export function testRecordsTags() {
1096
1094
  });
1097
1095
  // should pass
1098
1096
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1099
- expect(validFooRecordReply.status.code).to.equal(202);
1097
+ expect(validFooRecordReply.status.code).toBe(202);
1100
1098
  }));
1101
1099
  it('should reject tag values that do not follow the constraints of the `uniqueItems` value', () => __awaiter(this, void 0, void 0, function* () {
1102
1100
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1127,7 +1125,7 @@ export function testRecordsTags() {
1127
1125
  protocolDefinition,
1128
1126
  });
1129
1127
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1130
- expect(configureReply.status.code).to.equal(202);
1128
+ expect(configureReply.status.code).toBe(202);
1131
1129
  // write a foo record with a `uniqueStrings` value with duplicate items
1132
1130
  const duplicateItemsRecord = yield TestDataGenerator.generateRecordsWrite({
1133
1131
  author: alice,
@@ -1140,7 +1138,7 @@ export function testRecordsTags() {
1140
1138
  });
1141
1139
  // should fail
1142
1140
  const duplicateItemsReply = yield dwn.processMessage(alice.did, duplicateItemsRecord.message, { dataStream: duplicateItemsRecord.dataStream });
1143
- expect(duplicateItemsReply.status.code).to.equal(400);
1141
+ expect(duplicateItemsReply.status.code).toBe(400);
1144
1142
  // write a foo record with a `uniqueStrings` value with unique items
1145
1143
  const uniqueItemsRecord = yield TestDataGenerator.generateRecordsWrite({
1146
1144
  author: alice,
@@ -1153,7 +1151,7 @@ export function testRecordsTags() {
1153
1151
  });
1154
1152
  // should pass
1155
1153
  const uniqueItemsReply = yield dwn.processMessage(alice.did, uniqueItemsRecord.message, { dataStream: uniqueItemsRecord.dataStream });
1156
- expect(uniqueItemsReply.status.code).to.equal(202);
1154
+ expect(uniqueItemsReply.status.code).toBe(202);
1157
1155
  }));
1158
1156
  it('should only accept a record containing tags required by $requiredTags', () => __awaiter(this, void 0, void 0, function* () {
1159
1157
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1181,7 +1179,7 @@ export function testRecordsTags() {
1181
1179
  protocolDefinition,
1182
1180
  });
1183
1181
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1184
- expect(configureReply.status.code).to.equal(202);
1182
+ expect(configureReply.status.code).toBe(202);
1185
1183
  // write a foo record without the required tag
1186
1184
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
1187
1185
  author: alice,
@@ -1190,9 +1188,9 @@ export function testRecordsTags() {
1190
1188
  protocolPath: 'foo',
1191
1189
  });
1192
1190
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
1193
- expect(fooRecordReply.status.code).to.equal(400);
1194
- expect(fooRecordReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1195
- expect(fooRecordReply.status.detail).to.contain(`${protocolDefinition.protocol}/foo/$tags must have required property 'someRequiredTag'`);
1191
+ expect(fooRecordReply.status.code).toBe(400);
1192
+ expect(fooRecordReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1193
+ expect(fooRecordReply.status.detail).toContain(`${protocolDefinition.protocol}/foo/$tags must have required property 'someRequiredTag'`);
1196
1194
  // write a foo record with the required tag
1197
1195
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1198
1196
  author: alice,
@@ -1205,7 +1203,7 @@ export function testRecordsTags() {
1205
1203
  });
1206
1204
  // should pass
1207
1205
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1208
- expect(validFooRecordReply.status.code).to.equal(202);
1206
+ expect(validFooRecordReply.status.code).toBe(202);
1209
1207
  }));
1210
1208
  it('should accept any tag if $allowUndefinedTags is set to true', () => __awaiter(this, void 0, void 0, function* () {
1211
1209
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1233,7 +1231,7 @@ export function testRecordsTags() {
1233
1231
  protocolDefinition,
1234
1232
  });
1235
1233
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1236
- expect(configureReply.status.code).to.equal(202);
1234
+ expect(configureReply.status.code).toBe(202);
1237
1235
  // write a foo record without the required tag
1238
1236
  const fooRecord = yield TestDataGenerator.generateRecordsWrite({
1239
1237
  author: alice,
@@ -1245,7 +1243,7 @@ export function testRecordsTags() {
1245
1243
  }
1246
1244
  });
1247
1245
  const fooRecordReply = yield dwn.processMessage(alice.did, fooRecord.message, { dataStream: fooRecord.dataStream });
1248
- expect(fooRecordReply.status.code).to.equal(202);
1246
+ expect(fooRecordReply.status.code).toBe(202);
1249
1247
  }));
1250
1248
  describe('contains', () => {
1251
1249
  it('should reject a record tag that does not contain a value specified within the `enum` definition', () => __awaiter(this, void 0, void 0, function* () {
@@ -1280,7 +1278,7 @@ export function testRecordsTags() {
1280
1278
  protocolDefinition,
1281
1279
  });
1282
1280
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1283
- expect(configureReply.status.code).to.equal(202);
1281
+ expect(configureReply.status.code).toBe(202);
1284
1282
  // write a foo record with a `status` value that is not represented in the `enum`
1285
1283
  const invalidEnumRecord = yield TestDataGenerator.generateRecordsWrite({
1286
1284
  author: alice,
@@ -1293,10 +1291,10 @@ export function testRecordsTags() {
1293
1291
  });
1294
1292
  // should fail
1295
1293
  const invalidEnumReply = yield dwn.processMessage(alice.did, invalidEnumRecord.message, { dataStream: invalidEnumRecord.dataStream });
1296
- expect(invalidEnumReply.status.code).to.equal(400);
1297
- expect(invalidEnumReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1294
+ expect(invalidEnumReply.status.code).toBe(400);
1295
+ expect(invalidEnumReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1298
1296
  expect(invalidEnumReply.status.detail)
1299
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/status must contain at least 1 valid item(s)`);
1297
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/status must contain at least 1 valid item(s)`);
1300
1298
  // write a foo record that now adds a valid `status` value to the array
1301
1299
  const validEnumRecord = yield TestDataGenerator.generateRecordsWrite({
1302
1300
  author: alice,
@@ -1309,7 +1307,7 @@ export function testRecordsTags() {
1309
1307
  });
1310
1308
  // should pass
1311
1309
  const validEnumReply = yield dwn.processMessage(alice.did, validEnumRecord.message, { dataStream: validEnumRecord.dataStream });
1312
- expect(validEnumReply.status.code).to.equal(202);
1310
+ expect(validEnumReply.status.code).toBe(202);
1313
1311
  }));
1314
1312
  it('should reject a record tag that does not contain a value within the `minimum` and `maximum` range ', () => __awaiter(this, void 0, void 0, function* () {
1315
1313
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1344,7 +1342,7 @@ export function testRecordsTags() {
1344
1342
  protocolDefinition,
1345
1343
  });
1346
1344
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1347
- expect(configureReply.status.code).to.equal(202);
1345
+ expect(configureReply.status.code).toBe(202);
1348
1346
  // write a foo record with a `containsNumbers` value that does not have a number within the range
1349
1347
  const minContainsRecord = yield TestDataGenerator.generateRecordsWrite({
1350
1348
  author: alice,
@@ -1357,10 +1355,10 @@ export function testRecordsTags() {
1357
1355
  });
1358
1356
  // should fail
1359
1357
  const minContainsReply = yield dwn.processMessage(alice.did, minContainsRecord.message, { dataStream: minContainsRecord.dataStream });
1360
- expect(minContainsReply.status.code).to.equal(400);
1361
- expect(minContainsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1358
+ expect(minContainsReply.status.code).toBe(400);
1359
+ expect(minContainsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1362
1360
  expect(minContainsReply.status.detail)
1363
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/containsNumbers must contain at least 1 valid item(s)`);
1361
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/containsNumbers must contain at least 1 valid item(s)`);
1364
1362
  // write a foo record with a `containsNumbers` value that has a number within the range
1365
1363
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1366
1364
  author: alice,
@@ -1373,7 +1371,7 @@ export function testRecordsTags() {
1373
1371
  });
1374
1372
  // should pass
1375
1373
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1376
- expect(validFooRecordReply.status.code).to.equal(202);
1374
+ expect(validFooRecordReply.status.code).toBe(202);
1377
1375
  }));
1378
1376
  it('should reject a record tag that does not contain a value within the `exclusiveMinimum` and `exclusiveMaximum` range ', () => __awaiter(this, void 0, void 0, function* () {
1379
1377
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1408,7 +1406,7 @@ export function testRecordsTags() {
1408
1406
  protocolDefinition,
1409
1407
  });
1410
1408
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1411
- expect(configureReply.status.code).to.equal(202);
1409
+ expect(configureReply.status.code).toBe(202);
1412
1410
  // write a foo record with a `containsNumbers` value that does not have a number within the range
1413
1411
  const minContainsRecord = yield TestDataGenerator.generateRecordsWrite({
1414
1412
  author: alice,
@@ -1421,10 +1419,10 @@ export function testRecordsTags() {
1421
1419
  });
1422
1420
  // should fail
1423
1421
  const minContainsReply = yield dwn.processMessage(alice.did, minContainsRecord.message, { dataStream: minContainsRecord.dataStream });
1424
- expect(minContainsReply.status.code).to.equal(400);
1425
- expect(minContainsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1422
+ expect(minContainsReply.status.code).toBe(400);
1423
+ expect(minContainsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1426
1424
  expect(minContainsReply.status.detail)
1427
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/containsNumbers must contain at least 1 valid item(s)`);
1425
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/containsNumbers must contain at least 1 valid item(s)`);
1428
1426
  // write a foo record with a `containsNumbers` value that has a number within the range
1429
1427
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1430
1428
  author: alice,
@@ -1437,7 +1435,7 @@ export function testRecordsTags() {
1437
1435
  });
1438
1436
  // should pass
1439
1437
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1440
- expect(validFooRecordReply.status.code).to.equal(202);
1438
+ expect(validFooRecordReply.status.code).toBe(202);
1441
1439
  }));
1442
1440
  it('should reject a record tag that does not contain a value within the `minLength` and `maxLength` range ', () => __awaiter(this, void 0, void 0, function* () {
1443
1441
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1472,7 +1470,7 @@ export function testRecordsTags() {
1472
1470
  protocolDefinition,
1473
1471
  });
1474
1472
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1475
- expect(configureReply.status.code).to.equal(202);
1473
+ expect(configureReply.status.code).toBe(202);
1476
1474
  // write a foo record with a `firstName` value that does not have a string within the range
1477
1475
  const minContainsRecord = yield TestDataGenerator.generateRecordsWrite({
1478
1476
  author: alice,
@@ -1485,10 +1483,10 @@ export function testRecordsTags() {
1485
1483
  });
1486
1484
  // should fail
1487
1485
  const minContainsReply = yield dwn.processMessage(alice.did, minContainsRecord.message, { dataStream: minContainsRecord.dataStream });
1488
- expect(minContainsReply.status.code).to.equal(400);
1489
- expect(minContainsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1490
- expect(minContainsReply.status.detail).to
1491
- .contain(`${protocolDefinition.protocol}/foo/$tags/nickNames must contain at least 1 valid item(s)`);
1486
+ expect(minContainsReply.status.code).toBe(400);
1487
+ expect(minContainsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1488
+ const expectedContainsMsg = `${protocolDefinition.protocol}/foo/$tags/nickNames must contain at least 1 valid item(s)`;
1489
+ expect(minContainsReply.status.detail).toContain(expectedContainsMsg);
1492
1490
  // write a foo record with a `nickNames` value that has a string within the range
1493
1491
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1494
1492
  author: alice,
@@ -1501,7 +1499,7 @@ export function testRecordsTags() {
1501
1499
  });
1502
1500
  // should pass
1503
1501
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1504
- expect(validFooRecordReply.status.code).to.equal(202);
1502
+ expect(validFooRecordReply.status.code).toBe(202);
1505
1503
  }));
1506
1504
  });
1507
1505
  describe('items', () => {
@@ -1534,7 +1532,7 @@ export function testRecordsTags() {
1534
1532
  protocolDefinition,
1535
1533
  });
1536
1534
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1537
- expect(configureReply.status.code).to.equal(202);
1535
+ expect(configureReply.status.code).toBe(202);
1538
1536
  // write a foo record with a `status` value that is not represented in the `enum`
1539
1537
  const invalidEnumRecord = yield TestDataGenerator.generateRecordsWrite({
1540
1538
  author: alice,
@@ -1547,10 +1545,10 @@ export function testRecordsTags() {
1547
1545
  });
1548
1546
  // should fail
1549
1547
  const invalidEnumReply = yield dwn.processMessage(alice.did, invalidEnumRecord.message, { dataStream: invalidEnumRecord.dataStream });
1550
- expect(invalidEnumReply.status.code).to.equal(400);
1551
- expect(invalidEnumReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1548
+ expect(invalidEnumReply.status.code).toBe(400);
1549
+ expect(invalidEnumReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1552
1550
  expect(invalidEnumReply.status.detail)
1553
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/status/1 must be equal to one of the allowed values`);
1551
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/status/1 must be equal to one of the allowed values`);
1554
1552
  // write a foo record that now includes only valid `status` values
1555
1553
  const validEnumRecord = yield TestDataGenerator.generateRecordsWrite({
1556
1554
  author: alice,
@@ -1563,7 +1561,7 @@ export function testRecordsTags() {
1563
1561
  });
1564
1562
  // should pass
1565
1563
  const validEnumReply = yield dwn.processMessage(alice.did, validEnumRecord.message, { dataStream: validEnumRecord.dataStream });
1566
- expect(validEnumReply.status.code).to.equal(202);
1564
+ expect(validEnumReply.status.code).toBe(202);
1567
1565
  }));
1568
1566
  it('should reject a record tag which all items do not have a value within the `minimum` and `maximum` range ', () => __awaiter(this, void 0, void 0, function* () {
1569
1567
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1595,7 +1593,7 @@ export function testRecordsTags() {
1595
1593
  protocolDefinition,
1596
1594
  });
1597
1595
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1598
- expect(configureReply.status.code).to.equal(202);
1596
+ expect(configureReply.status.code).toBe(202);
1599
1597
  // write a foo record with a `numbers` value that is less than the minimum
1600
1598
  const minItemssRecord = yield TestDataGenerator.generateRecordsWrite({
1601
1599
  author: alice,
@@ -1608,10 +1606,10 @@ export function testRecordsTags() {
1608
1606
  });
1609
1607
  // should fail
1610
1608
  const minItemsReply = yield dwn.processMessage(alice.did, minItemssRecord.message, { dataStream: minItemssRecord.dataStream });
1611
- expect(minItemsReply.status.code).to.equal(400);
1612
- expect(minItemsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1609
+ expect(minItemsReply.status.code).toBe(400);
1610
+ expect(minItemsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1613
1611
  expect(minItemsReply.status.detail)
1614
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/numbers/0 must be >= 80`);
1612
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/numbers/0 must be >= 80`);
1615
1613
  // write a foo record with a `numbers` value that is more than the maximum
1616
1614
  const maxItemssRecord = yield TestDataGenerator.generateRecordsWrite({
1617
1615
  author: alice,
@@ -1624,10 +1622,10 @@ export function testRecordsTags() {
1624
1622
  });
1625
1623
  // should fail
1626
1624
  const maxItemsReply = yield dwn.processMessage(alice.did, maxItemssRecord.message, { dataStream: maxItemssRecord.dataStream });
1627
- expect(maxItemsReply.status.code).to.equal(400);
1628
- expect(maxItemsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1625
+ expect(maxItemsReply.status.code).toBe(400);
1626
+ expect(maxItemsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1629
1627
  expect(maxItemsReply.status.detail)
1630
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/numbers/1 must be <= 100`);
1628
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/numbers/1 must be <= 100`);
1631
1629
  // write a foo record with a `numbers` value that are within the range
1632
1630
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1633
1631
  author: alice,
@@ -1640,7 +1638,7 @@ export function testRecordsTags() {
1640
1638
  });
1641
1639
  // should pass
1642
1640
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1643
- expect(validFooRecordReply.status.code).to.equal(202);
1641
+ expect(validFooRecordReply.status.code).toBe(202);
1644
1642
  }));
1645
1643
  it('should reject a record tag which all items do not have a value within the `exclusiveMinimum` and `exclusiveMaximum` range ', () => __awaiter(this, void 0, void 0, function* () {
1646
1644
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1672,7 +1670,7 @@ export function testRecordsTags() {
1672
1670
  protocolDefinition,
1673
1671
  });
1674
1672
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1675
- expect(configureReply.status.code).to.equal(202);
1673
+ expect(configureReply.status.code).toBe(202);
1676
1674
  // write a foo record with a `numbers` value that is equal to than the exclusive minimum
1677
1675
  const minItemsRecord = yield TestDataGenerator.generateRecordsWrite({
1678
1676
  author: alice,
@@ -1685,10 +1683,10 @@ export function testRecordsTags() {
1685
1683
  });
1686
1684
  // should fail
1687
1685
  const minItemsReply = yield dwn.processMessage(alice.did, minItemsRecord.message, { dataStream: minItemsRecord.dataStream });
1688
- expect(minItemsReply.status.code).to.equal(400);
1689
- expect(minItemsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1686
+ expect(minItemsReply.status.code).toBe(400);
1687
+ expect(minItemsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1690
1688
  expect(minItemsReply.status.detail)
1691
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/numbers/0 must be > 80`);
1689
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/numbers/0 must be > 80`);
1692
1690
  // write a foo record with a `numbers` value that is equal to than the exclusive maximum
1693
1691
  const maxContainsRecord = yield TestDataGenerator.generateRecordsWrite({
1694
1692
  author: alice,
@@ -1701,10 +1699,10 @@ export function testRecordsTags() {
1701
1699
  });
1702
1700
  // should fail
1703
1701
  const maxItemsReply = yield dwn.processMessage(alice.did, maxContainsRecord.message, { dataStream: maxContainsRecord.dataStream });
1704
- expect(maxItemsReply.status.code).to.equal(400);
1705
- expect(maxItemsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1702
+ expect(maxItemsReply.status.code).toBe(400);
1703
+ expect(maxItemsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1706
1704
  expect(maxItemsReply.status.detail)
1707
- .to.contain(`${protocolDefinition.protocol}/foo/$tags/numbers/1 must be < 100`);
1705
+ .toContain(`${protocolDefinition.protocol}/foo/$tags/numbers/1 must be < 100`);
1708
1706
  // write a foo record with a `numbers` value that are within the range
1709
1707
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1710
1708
  author: alice,
@@ -1717,7 +1715,7 @@ export function testRecordsTags() {
1717
1715
  });
1718
1716
  // should pass
1719
1717
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1720
- expect(validFooRecordReply.status.code).to.equal(202);
1718
+ expect(validFooRecordReply.status.code).toBe(202);
1721
1719
  }));
1722
1720
  it('should reject a record tag that does not contain a value within the `minLength` and `maxLength` range ', () => __awaiter(this, void 0, void 0, function* () {
1723
1721
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -1749,7 +1747,7 @@ export function testRecordsTags() {
1749
1747
  protocolDefinition,
1750
1748
  });
1751
1749
  const configureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
1752
- expect(configureReply.status.code).to.equal(202);
1750
+ expect(configureReply.status.code).toBe(202);
1753
1751
  // write a foo record with a `firstName` value that does not have a string within the range
1754
1752
  const minItemsRecord = yield TestDataGenerator.generateRecordsWrite({
1755
1753
  author: alice,
@@ -1762,10 +1760,10 @@ export function testRecordsTags() {
1762
1760
  });
1763
1761
  // should fail
1764
1762
  const minItemsReply = yield dwn.processMessage(alice.did, minItemsRecord.message, { dataStream: minItemsRecord.dataStream });
1765
- expect(minItemsReply.status.code).to.equal(400);
1766
- expect(minItemsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1767
- expect(minItemsReply.status.detail).to
1768
- .contain(`${protocolDefinition.protocol}/foo/$tags/nickNames/1 must NOT have fewer than 2 characters`);
1763
+ expect(minItemsReply.status.code).toBe(400);
1764
+ expect(minItemsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1765
+ const expectedMinItemsMsg = `${protocolDefinition.protocol}/foo/$tags/nickNames/1 must NOT have fewer than 2 characters`;
1766
+ expect(minItemsReply.status.detail).toContain(expectedMinItemsMsg);
1769
1767
  // write a foo record with a `nickname` value this is too long
1770
1768
  const maxItemsRecord = yield TestDataGenerator.generateRecordsWrite({
1771
1769
  author: alice,
@@ -1778,10 +1776,10 @@ export function testRecordsTags() {
1778
1776
  });
1779
1777
  // should fail
1780
1778
  const maxItemsReply = yield dwn.processMessage(alice.did, maxItemsRecord.message, { dataStream: maxItemsRecord.dataStream });
1781
- expect(maxItemsReply.status.code).to.equal(400);
1782
- expect(maxItemsReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1783
- expect(maxItemsReply.status.detail).to
1784
- .contain(`${protocolDefinition.protocol}/foo/$tags/nickNames/1 must NOT have more than 10 characters`);
1779
+ expect(maxItemsReply.status.code).toBe(400);
1780
+ expect(maxItemsReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationTagsInvalidSchema);
1781
+ const expectedMaxItemsMsg = `${protocolDefinition.protocol}/foo/$tags/nickNames/1 must NOT have more than 10 characters`;
1782
+ expect(maxItemsReply.status.detail).toContain(expectedMaxItemsMsg);
1785
1783
  // write a foo record with a `nickNames` value that has a string within the range
1786
1784
  const validFooRecord = yield TestDataGenerator.generateRecordsWrite({
1787
1785
  author: alice,
@@ -1794,7 +1792,7 @@ export function testRecordsTags() {
1794
1792
  });
1795
1793
  // should pass
1796
1794
  const validFooRecordReply = yield dwn.processMessage(alice.did, validFooRecord.message, { dataStream: validFooRecord.dataStream });
1797
- expect(validFooRecordReply.status.code).to.equal(202);
1795
+ expect(validFooRecordReply.status.code).toBe(202);
1798
1796
  }));
1799
1797
  });
1800
1798
  });
@@ -1819,7 +1817,7 @@ export function testRecordsTags() {
1819
1817
  }
1820
1818
  });
1821
1819
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
1822
- expect(tagsRecord1Reply.status.code).to.equal(202);
1820
+ expect(tagsRecord1Reply.status.code).toBe(202);
1823
1821
  // verify the record was written
1824
1822
  const tagsRecord1Read = yield RecordsRead.create({
1825
1823
  filter: {
@@ -1828,10 +1826,10 @@ export function testRecordsTags() {
1828
1826
  signer: Jws.createSigner(alice)
1829
1827
  });
1830
1828
  const tagsRecord1ReadReply = yield dwn.processMessage(alice.did, tagsRecord1Read.message);
1831
- expect(tagsRecord1ReadReply.status.code).to.equal(200);
1832
- expect(tagsRecord1ReadReply.entry.recordsWrite).to.not.be.undefined;
1829
+ expect(tagsRecord1ReadReply.status.code).toBe(200);
1830
+ expect(tagsRecord1ReadReply.entry.recordsWrite).toBeDefined();
1833
1831
  expect(tagsRecord1ReadReply.entry.recordsWrite.descriptor.tags)
1834
- .to.deep.equal({ stringTag, numberTag, booleanTag, stringArrayTag, numberArrayTag });
1832
+ .toEqual({ stringTag, numberTag, booleanTag, stringArrayTag, numberArrayTag });
1835
1833
  }));
1836
1834
  it('should overwrite tags when updating a Record', () => __awaiter(this, void 0, void 0, function* () {
1837
1835
  var _a, _b;
@@ -1850,7 +1848,7 @@ export function testRecordsTags() {
1850
1848
  });
1851
1849
  // write the record
1852
1850
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
1853
- expect(tagsRecord1Reply.status.code).to.equal(202);
1851
+ expect(tagsRecord1Reply.status.code).toBe(202);
1854
1852
  // verify the record was written
1855
1853
  const tagsRecord1Read = yield RecordsRead.create({
1856
1854
  filter: {
@@ -1859,9 +1857,9 @@ export function testRecordsTags() {
1859
1857
  signer: Jws.createSigner(alice)
1860
1858
  });
1861
1859
  const tagsRecord1ReadReply = yield dwn.processMessage(alice.did, tagsRecord1Read.message);
1862
- expect(tagsRecord1ReadReply.status.code).to.equal(200);
1863
- expect(tagsRecord1ReadReply.entry.recordsWrite).to.not.be.undefined;
1864
- expect(tagsRecord1ReadReply.entry.recordsWrite.descriptor.tags).to.deep.equal({
1860
+ expect(tagsRecord1ReadReply.status.code).toBe(200);
1861
+ expect(tagsRecord1ReadReply.entry.recordsWrite).toBeDefined();
1862
+ expect(tagsRecord1ReadReply.entry.recordsWrite.descriptor.tags).toEqual({
1865
1863
  stringTag: 'string-value',
1866
1864
  numberTag: 54566975,
1867
1865
  booleanTag: false,
@@ -1878,9 +1876,9 @@ export function testRecordsTags() {
1878
1876
  }
1879
1877
  });
1880
1878
  const tagsQueryMatchReply = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
1881
- expect(tagsQueryMatchReply.status.code).to.equal(200);
1882
- expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
1883
- expect(tagsQueryMatchReply.entries[0].recordId).to.equal(tagsRecord1.message.recordId);
1879
+ expect(tagsQueryMatchReply.status.code).toBe(200);
1880
+ expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
1881
+ expect(tagsQueryMatchReply.entries[0].recordId).toBe(tagsRecord1.message.recordId);
1884
1882
  // update the record with new tags
1885
1883
  const updatedRecord = yield TestDataGenerator.generateFromRecordsWrite({
1886
1884
  author: alice,
@@ -1888,15 +1886,15 @@ export function testRecordsTags() {
1888
1886
  tags: { newTag: 'new-value' }
1889
1887
  });
1890
1888
  const updatedRecordReply = yield dwn.processMessage(alice.did, updatedRecord.message, { dataStream: updatedRecord.dataStream });
1891
- expect(updatedRecordReply.status.code).to.equal(202, updatedRecordReply.status.detail);
1889
+ expect(updatedRecordReply.status.code).toBe(202, updatedRecordReply.status.detail);
1892
1890
  const updatedRecordReadReply = yield dwn.processMessage(alice.did, tagsRecord1Read.message);
1893
- expect(updatedRecordReadReply.status.code).to.equal(200);
1894
- expect(updatedRecordReadReply.entry.recordsWrite).to.exist;
1895
- expect(updatedRecordReadReply.entry.recordsWrite.descriptor.tags).to.deep.equal({ newTag: 'new-value' });
1891
+ expect(updatedRecordReadReply.status.code).toBe(200);
1892
+ expect(updatedRecordReadReply.entry.recordsWrite).toBeDefined();
1893
+ expect(updatedRecordReadReply.entry.recordsWrite.descriptor.tags).toEqual({ newTag: 'new-value' });
1896
1894
  // Sanity: Query for the old tag value should return no results
1897
1895
  const tagsQueryMatchReply2 = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
1898
- expect(tagsQueryMatchReply2.status.code).to.equal(200);
1899
- expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
1896
+ expect(tagsQueryMatchReply2.status.code).toBe(200);
1897
+ expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
1900
1898
  }));
1901
1899
  it('should not index tags when the record is not `latestBaseState`', () => __awaiter(this, void 0, void 0, function* () {
1902
1900
  const buildTagIndexSpy = sinon.spy(Records, 'buildTagIndexes');
@@ -1917,11 +1915,11 @@ export function testRecordsTags() {
1917
1915
  });
1918
1916
  // write the record
1919
1917
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
1920
- expect(tagsRecord1Reply.status.code).to.equal(202);
1918
+ expect(tagsRecord1Reply.status.code).toBe(202);
1921
1919
  // verify that construct Indexes was called
1922
- expect(constructIndexesSpy.callCount).to.equal(1);
1920
+ expect(constructIndexesSpy.callCount).toBe(1);
1923
1921
  // verify that buildTagIndexes was called
1924
- expect(buildTagIndexSpy.callCount).to.equal(1);
1922
+ expect(buildTagIndexSpy.callCount).toBe(1);
1925
1923
  // reset counters
1926
1924
  constructIndexesSpy.resetHistory();
1927
1925
  buildTagIndexSpy.resetHistory();
@@ -1931,11 +1929,11 @@ export function testRecordsTags() {
1931
1929
  existingWrite: tagsRecord1.recordsWrite,
1932
1930
  });
1933
1931
  const updatedRecordReply = yield dwn.processMessage(alice.did, updatedRecord.message, { dataStream: updatedRecord.dataStream });
1934
- expect(updatedRecordReply.status.code).to.equal(202);
1932
+ expect(updatedRecordReply.status.code).toBe(202);
1935
1933
  // construct Indexes should be called once for the `initialWrite` and once for the updated write
1936
- expect(constructIndexesSpy.callCount).to.equal(2);
1934
+ expect(constructIndexesSpy.callCount).toBe(2);
1937
1935
  // verify that buildTagIndexes was not called at all
1938
- expect(buildTagIndexSpy.callCount).to.equal(0);
1936
+ expect(buildTagIndexSpy.callCount).toBe(0);
1939
1937
  }));
1940
1938
  });
1941
1939
  describe('RecordsQuery filter for tags', () => {
@@ -1952,7 +1950,7 @@ export function testRecordsTags() {
1952
1950
  }
1953
1951
  });
1954
1952
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
1955
- expect(tagsRecord1Reply.status.code).to.equal(202);
1953
+ expect(tagsRecord1Reply.status.code).toBe(202);
1956
1954
  const tagsQueryMatch = yield TestDataGenerator.generateRecordsQuery({
1957
1955
  author: alice,
1958
1956
  filter: {
@@ -1962,9 +1960,9 @@ export function testRecordsTags() {
1962
1960
  }
1963
1961
  });
1964
1962
  const tagsQueryMatchReply = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
1965
- expect(tagsQueryMatchReply.status.code).to.equal(200);
1966
- expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
1967
- expect(tagsQueryMatchReply.entries[0].recordId).to.equal(tagsRecord1.message.recordId);
1963
+ expect(tagsQueryMatchReply.status.code).toBe(200);
1964
+ expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
1965
+ expect(tagsQueryMatchReply.entries[0].recordId).toBe(tagsRecord1.message.recordId);
1968
1966
  // negative result same tag different value
1969
1967
  let tagsQueryNegative = yield TestDataGenerator.generateRecordsQuery({
1970
1968
  author: alice,
@@ -1975,8 +1973,8 @@ export function testRecordsTags() {
1975
1973
  }
1976
1974
  });
1977
1975
  let tagsQueryNegativeReply = yield dwn.processMessage(alice.did, tagsQueryNegative.message);
1978
- expect(tagsQueryNegativeReply.status.code).to.equal(200);
1979
- expect((_b = tagsQueryNegativeReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
1976
+ expect(tagsQueryNegativeReply.status.code).toBe(200);
1977
+ expect((_b = tagsQueryNegativeReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
1980
1978
  // negative result different tag same value
1981
1979
  tagsQueryNegative = yield TestDataGenerator.generateRecordsQuery({
1982
1980
  author: alice,
@@ -1987,8 +1985,8 @@ export function testRecordsTags() {
1987
1985
  }
1988
1986
  });
1989
1987
  tagsQueryNegativeReply = yield dwn.processMessage(alice.did, tagsQueryNegative.message);
1990
- expect(tagsQueryNegativeReply.status.code).to.equal(200);
1991
- expect((_c = tagsQueryNegativeReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(0);
1988
+ expect(tagsQueryNegativeReply.status.code).toBe(200);
1989
+ expect((_c = tagsQueryNegativeReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(0);
1992
1990
  }));
1993
1991
  it('should be able to filter by number match', () => __awaiter(this, void 0, void 0, function* () {
1994
1992
  var _a, _b, _c;
@@ -2004,7 +2002,7 @@ export function testRecordsTags() {
2004
2002
  }
2005
2003
  });
2006
2004
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
2007
- expect(tagsRecord1Reply.status.code).to.equal(202);
2005
+ expect(tagsRecord1Reply.status.code).toBe(202);
2008
2006
  // do an exact match for the tag value
2009
2007
  const tagsQueryMatch = yield TestDataGenerator.generateRecordsQuery({
2010
2008
  author: alice,
@@ -2015,9 +2013,9 @@ export function testRecordsTags() {
2015
2013
  }
2016
2014
  });
2017
2015
  const tagsQueryMatchReply = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2018
- expect(tagsQueryMatchReply.status.code).to.equal(200);
2019
- expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
2020
- expect(tagsQueryMatchReply.entries[0].recordId).to.equal(tagsRecord1.message.recordId);
2016
+ expect(tagsQueryMatchReply.status.code).toBe(200);
2017
+ expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
2018
+ expect(tagsQueryMatchReply.entries[0].recordId).toBe(tagsRecord1.message.recordId);
2021
2019
  // negative result same tag different value
2022
2020
  let tagsQueryNegative = yield TestDataGenerator.generateRecordsQuery({
2023
2021
  author: alice,
@@ -2028,8 +2026,8 @@ export function testRecordsTags() {
2028
2026
  }
2029
2027
  });
2030
2028
  let tagsQueryNegativeReply = yield dwn.processMessage(alice.did, tagsQueryNegative.message);
2031
- expect(tagsQueryNegativeReply.status.code).to.equal(200);
2032
- expect((_b = tagsQueryNegativeReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
2029
+ expect(tagsQueryNegativeReply.status.code).toBe(200);
2030
+ expect((_b = tagsQueryNegativeReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
2033
2031
  // negative result different tag same value
2034
2032
  tagsQueryNegative = yield TestDataGenerator.generateRecordsQuery({
2035
2033
  author: alice,
@@ -2040,8 +2038,8 @@ export function testRecordsTags() {
2040
2038
  }
2041
2039
  });
2042
2040
  tagsQueryNegativeReply = yield dwn.processMessage(alice.did, tagsQueryNegative.message);
2043
- expect(tagsQueryNegativeReply.status.code).to.equal(200);
2044
- expect((_c = tagsQueryNegativeReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(0);
2041
+ expect(tagsQueryNegativeReply.status.code).toBe(200);
2042
+ expect((_c = tagsQueryNegativeReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(0);
2045
2043
  }));
2046
2044
  it('should be able to filter by boolean match', () => __awaiter(this, void 0, void 0, function* () {
2047
2045
  // 1. Write a record with a boolean tag `booleanTag` set to true
@@ -2061,7 +2059,7 @@ export function testRecordsTags() {
2061
2059
  }
2062
2060
  });
2063
2061
  const tagsRecordTrueReply = yield dwn.processMessage(alice.did, tagsRecordTrue.message, { dataStream: tagsRecordTrue.dataStream });
2064
- expect(tagsRecordTrueReply.status.code).to.equal(202);
2062
+ expect(tagsRecordTrueReply.status.code).toBe(202);
2065
2063
  // write a record with a false boolean value tag
2066
2064
  const tagsRecordFalse = yield TestDataGenerator.generateRecordsWrite({
2067
2065
  author: alice,
@@ -2072,7 +2070,7 @@ export function testRecordsTags() {
2072
2070
  }
2073
2071
  });
2074
2072
  const tagsRecordFalseReply = yield dwn.processMessage(alice.did, tagsRecordFalse.message, { dataStream: tagsRecordFalse.dataStream });
2075
- expect(tagsRecordFalseReply.status.code).to.equal(202);
2073
+ expect(tagsRecordFalseReply.status.code).toBe(202);
2076
2074
  // query for records with a `booleanTag` set to true, should return the record with the true tag
2077
2075
  const tagsQueryMatchTrue = yield TestDataGenerator.generateRecordsQuery({
2078
2076
  author: alice,
@@ -2083,9 +2081,9 @@ export function testRecordsTags() {
2083
2081
  }
2084
2082
  });
2085
2083
  const tagsQueryMatchTrueReply = yield dwn.processMessage(alice.did, tagsQueryMatchTrue.message);
2086
- expect(tagsQueryMatchTrueReply.status.code).to.equal(200);
2087
- expect((_a = tagsQueryMatchTrueReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
2088
- expect(tagsQueryMatchTrueReply.entries[0].recordId).to.equal(tagsRecordTrue.message.recordId);
2084
+ expect(tagsQueryMatchTrueReply.status.code).toBe(200);
2085
+ expect((_a = tagsQueryMatchTrueReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
2086
+ expect(tagsQueryMatchTrueReply.entries[0].recordId).toBe(tagsRecordTrue.message.recordId);
2089
2087
  // query for records with a `booleanTag` set to false, should return the record with the false tag
2090
2088
  const tagsQueryMatchFalse = yield TestDataGenerator.generateRecordsQuery({
2091
2089
  author: alice,
@@ -2096,9 +2094,9 @@ export function testRecordsTags() {
2096
2094
  }
2097
2095
  });
2098
2096
  const tagsQueryMatchFalseReply = yield dwn.processMessage(alice.did, tagsQueryMatchFalse.message);
2099
- expect(tagsQueryMatchFalseReply.status.code).to.equal(200);
2100
- expect((_b = tagsQueryMatchFalseReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(1);
2101
- expect(tagsQueryMatchFalseReply.entries[0].recordId).to.equal(tagsRecordFalse.message.recordId);
2097
+ expect(tagsQueryMatchFalseReply.status.code).toBe(200);
2098
+ expect((_b = tagsQueryMatchFalseReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(1);
2099
+ expect(tagsQueryMatchFalseReply.entries[0].recordId).toBe(tagsRecordFalse.message.recordId);
2102
2100
  // negative result for a non existent boolean tag.
2103
2101
  const tagsQueryNegative = yield TestDataGenerator.generateRecordsQuery({
2104
2102
  author: alice,
@@ -2109,8 +2107,8 @@ export function testRecordsTags() {
2109
2107
  }
2110
2108
  });
2111
2109
  const tagsQueryNegativeReply = yield dwn.processMessage(alice.did, tagsQueryNegative.message);
2112
- expect(tagsQueryNegativeReply.status.code).to.equal(200);
2113
- expect((_c = tagsQueryNegativeReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(0);
2110
+ expect(tagsQueryNegativeReply.status.code).toBe(200);
2111
+ expect((_c = tagsQueryNegativeReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(0);
2114
2112
  }));
2115
2113
  it('should be able to range filter by string value', () => __awaiter(this, void 0, void 0, function* () {
2116
2114
  var _a, _b, _c, _d;
@@ -2149,13 +2147,13 @@ export function testRecordsTags() {
2149
2147
  }
2150
2148
  });
2151
2149
  const aliceReply = yield dwn.processMessage(alice.did, aliceRecord.message, { dataStream: aliceRecord.dataStream });
2152
- expect(aliceReply.status.code).to.equal(202);
2150
+ expect(aliceReply.status.code).toBe(202);
2153
2151
  const bobReply = yield dwn.processMessage(alice.did, bobRecord.message, { dataStream: bobRecord.dataStream });
2154
- expect(bobReply.status.code).to.equal(202);
2152
+ expect(bobReply.status.code).toBe(202);
2155
2153
  const carolReply = yield dwn.processMessage(alice.did, carolRecord.message, { dataStream: carolRecord.dataStream });
2156
- expect(carolReply.status.code).to.equal(202);
2154
+ expect(carolReply.status.code).toBe(202);
2157
2155
  const danielReply = yield dwn.processMessage(alice.did, danielRecord.message, { dataStream: danielRecord.dataStream });
2158
- expect(danielReply.status.code).to.equal(202);
2156
+ expect(danielReply.status.code).toBe(202);
2159
2157
  // sanity query for all
2160
2158
  const queryForAll = yield TestDataGenerator.generateRecordsQuery({
2161
2159
  author: alice,
@@ -2164,8 +2162,8 @@ export function testRecordsTags() {
2164
2162
  }
2165
2163
  });
2166
2164
  const queryForAllReply = yield dwn.processMessage(alice.did, queryForAll.message);
2167
- expect(queryForAllReply.status.code).to.equal(200);
2168
- expect((_a = queryForAllReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(4); // all 4 records
2165
+ expect(queryForAllReply.status.code).toBe(200);
2166
+ expect((_a = queryForAllReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(4); // all 4 records
2169
2167
  // query for first names that begin with 'a' and 'b'
2170
2168
  const queryForAtoB = yield TestDataGenerator.generateRecordsQuery({
2171
2169
  author: alice,
@@ -2177,10 +2175,10 @@ export function testRecordsTags() {
2177
2175
  }
2178
2176
  });
2179
2177
  const queryForAtoBReply = yield dwn.processMessage(alice.did, queryForAtoB.message);
2180
- expect(queryForAtoBReply.status.code).to.equal(200);
2181
- expect((_b = queryForAtoBReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(2);
2178
+ expect(queryForAtoBReply.status.code).toBe(200);
2179
+ expect((_b = queryForAtoBReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(2);
2182
2180
  const atobRecordIds = queryForAtoBReply.entries.map(entry => entry.recordId);
2183
- expect(atobRecordIds).to.have.members([aliceRecord.message.recordId, bobRecord.message.recordId]);
2181
+ expect(atobRecordIds).toEqual(expect.arrayContaining([aliceRecord.message.recordId, bobRecord.message.recordId]));
2184
2182
  // query for first names greater than 'bob'(exclusive of), and less than but inclusive of 'daniel'
2185
2183
  const queryForBtoD = yield TestDataGenerator.generateRecordsQuery({
2186
2184
  author: alice,
@@ -2192,10 +2190,10 @@ export function testRecordsTags() {
2192
2190
  }
2193
2191
  });
2194
2192
  const queryForBtoDReply = yield dwn.processMessage(alice.did, queryForBtoD.message);
2195
- expect(queryForBtoDReply.status.code).to.equal(200);
2196
- expect((_c = queryForBtoDReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(2);
2193
+ expect(queryForBtoDReply.status.code).toBe(200);
2194
+ expect((_c = queryForBtoDReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(2);
2197
2195
  const btodRecordIds = queryForBtoDReply.entries.map(entry => entry.recordId);
2198
- expect(btodRecordIds).to.have.members([carolRecord.message.recordId, danielRecord.message.recordId]);
2196
+ expect(btodRecordIds).toEqual(expect.arrayContaining([carolRecord.message.recordId, danielRecord.message.recordId]));
2199
2197
  // query for first names that begin with 'carol' onward (inclusive).
2200
2198
  const queryForCarolOnward = yield TestDataGenerator.generateRecordsQuery({
2201
2199
  author: alice,
@@ -2207,10 +2205,10 @@ export function testRecordsTags() {
2207
2205
  }
2208
2206
  });
2209
2207
  const queryForCarolOnwardReply = yield dwn.processMessage(alice.did, queryForCarolOnward.message);
2210
- expect(queryForCarolOnwardReply.status.code).to.equal(200);
2211
- expect((_d = queryForCarolOnwardReply.entries) === null || _d === void 0 ? void 0 : _d.length).to.equal(2);
2208
+ expect(queryForCarolOnwardReply.status.code).toBe(200);
2209
+ expect((_d = queryForCarolOnwardReply.entries) === null || _d === void 0 ? void 0 : _d.length).toBe(2);
2212
2210
  const onwardResults = queryForCarolOnwardReply.entries.map(entry => entry.recordId);
2213
- expect(onwardResults).to.have.members([carolRecord.message.recordId, danielRecord.message.recordId]);
2211
+ expect(onwardResults).toEqual(expect.arrayContaining([carolRecord.message.recordId, danielRecord.message.recordId]));
2214
2212
  }));
2215
2213
  it('should be able to filter by string prefix', () => __awaiter(this, void 0, void 0, function* () {
2216
2214
  var _a, _b;
@@ -2233,9 +2231,9 @@ export function testRecordsTags() {
2233
2231
  }
2234
2232
  });
2235
2233
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
2236
- expect(tagsRecord1Reply.status.code).to.equal(202);
2234
+ expect(tagsRecord1Reply.status.code).toBe(202);
2237
2235
  const tagsRecord2Reply = yield dwn.processMessage(alice.did, tagsRecord2.message, { dataStream: tagsRecord2.dataStream });
2238
- expect(tagsRecord2Reply.status.code).to.equal(202);
2236
+ expect(tagsRecord2Reply.status.code).toBe(202);
2239
2237
  // control record that has a different prefix
2240
2238
  const tagsRecord3 = yield TestDataGenerator.generateRecordsWrite({
2241
2239
  author: alice,
@@ -2246,7 +2244,7 @@ export function testRecordsTags() {
2246
2244
  }
2247
2245
  });
2248
2246
  const tagsRecord3Reply = yield dwn.processMessage(alice.did, tagsRecord3.message, { dataStream: tagsRecord3.dataStream });
2249
- expect(tagsRecord3Reply.status.code).to.equal(202);
2247
+ expect(tagsRecord3Reply.status.code).toBe(202);
2250
2248
  // a prefix search will return only the records matching the prefix
2251
2249
  const tagsQueryMatch = yield TestDataGenerator.generateRecordsQuery({
2252
2250
  author: alice,
@@ -2257,10 +2255,10 @@ export function testRecordsTags() {
2257
2255
  }
2258
2256
  });
2259
2257
  const tagsQueryMatchReply = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2260
- expect(tagsQueryMatchReply.status.code).to.equal(200);
2261
- expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(2);
2258
+ expect(tagsQueryMatchReply.status.code).toBe(200);
2259
+ expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(2);
2262
2260
  const matchedRecords = tagsQueryMatchReply.entries.map(entry => entry.recordId);
2263
- expect(matchedRecords).to.have.members([tagsRecord1.message.recordId, tagsRecord2.message.recordId]);
2261
+ expect(matchedRecords).toEqual(expect.arrayContaining([tagsRecord1.message.recordId, tagsRecord2.message.recordId]));
2264
2262
  // sanity/control: a regular range query will return all
2265
2263
  // since `zaz-string` comes lexicographically after `string-` it will appear in the result set
2266
2264
  const tagsQueryRange = yield TestDataGenerator.generateRecordsQuery({
@@ -2272,8 +2270,8 @@ export function testRecordsTags() {
2272
2270
  }
2273
2271
  });
2274
2272
  const tagsQueryRangeReply = yield dwn.processMessage(alice.did, tagsQueryRange.message);
2275
- expect(tagsQueryRangeReply.status.code).to.equal(200);
2276
- expect((_b = tagsQueryRangeReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(3); // returned all 3 records
2273
+ expect(tagsQueryRangeReply.status.code).toBe(200);
2274
+ expect((_b = tagsQueryRangeReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(3); // returned all 3 records
2277
2275
  }));
2278
2276
  it('should be able to range filter by number value', () => __awaiter(this, void 0, void 0, function* () {
2279
2277
  var _a, _b, _c, _d, _e;
@@ -2316,13 +2314,13 @@ export function testRecordsTags() {
2316
2314
  }
2317
2315
  });
2318
2316
  const aliceReply = yield dwn.processMessage(alice.did, aliceRecord.message, { dataStream: aliceRecord.dataStream });
2319
- expect(aliceReply.status.code).to.equal(202);
2317
+ expect(aliceReply.status.code).toBe(202);
2320
2318
  const bobReply = yield dwn.processMessage(alice.did, bobRecord.message, { dataStream: bobRecord.dataStream });
2321
- expect(bobReply.status.code).to.equal(202);
2319
+ expect(bobReply.status.code).toBe(202);
2322
2320
  const carolReply = yield dwn.processMessage(alice.did, carolRecord.message, { dataStream: carolRecord.dataStream });
2323
- expect(carolReply.status.code).to.equal(202);
2321
+ expect(carolReply.status.code).toBe(202);
2324
2322
  const danielReply = yield dwn.processMessage(alice.did, danielRecord.message, { dataStream: danielRecord.dataStream });
2325
- expect(danielReply.status.code).to.equal(202);
2323
+ expect(danielReply.status.code).toBe(202);
2326
2324
  // sanity query for all
2327
2325
  const queryForAll = yield TestDataGenerator.generateRecordsQuery({
2328
2326
  author: alice,
@@ -2331,8 +2329,8 @@ export function testRecordsTags() {
2331
2329
  }
2332
2330
  });
2333
2331
  const queryForAllReply = yield dwn.processMessage(alice.did, queryForAll.message);
2334
- expect(queryForAllReply.status.code).to.equal(200);
2335
- expect((_a = queryForAllReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(4); // all 4 records
2332
+ expect(queryForAllReply.status.code).toBe(200);
2333
+ expect((_a = queryForAllReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(4); // all 4 records
2336
2334
  // query for all records that received higher than(not including) an 80
2337
2335
  // only one record should match
2338
2336
  const queryForHighGrade = yield TestDataGenerator.generateRecordsQuery({
@@ -2345,9 +2343,9 @@ export function testRecordsTags() {
2345
2343
  }
2346
2344
  });
2347
2345
  const queryForHighReply = yield dwn.processMessage(alice.did, queryForHighGrade.message);
2348
- expect(queryForHighReply.status.code).to.equal(200);
2349
- expect((_b = queryForHighReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(1);
2350
- expect(queryForHighReply.entries[0].recordId).to.equal(danielRecord.message.recordId);
2346
+ expect(queryForHighReply.status.code).toBe(200);
2347
+ expect((_b = queryForHighReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(1);
2348
+ expect(queryForHighReply.entries[0].recordId).toBe(danielRecord.message.recordId);
2351
2349
  // query for all records that received higher (and including) a 75
2352
2350
  // three records should match
2353
2351
  const queryForPassingGrade = yield TestDataGenerator.generateRecordsQuery({
@@ -2360,10 +2358,12 @@ export function testRecordsTags() {
2360
2358
  }
2361
2359
  });
2362
2360
  const queryForPassingGradeReply = yield dwn.processMessage(alice.did, queryForPassingGrade.message);
2363
- expect(queryForPassingGradeReply.status.code).to.equal(200);
2364
- expect((_c = queryForPassingGradeReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(3);
2361
+ expect(queryForPassingGradeReply.status.code).toBe(200);
2362
+ expect((_c = queryForPassingGradeReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(3);
2365
2363
  const passingRecords = queryForPassingGradeReply.entries.map(entry => entry.recordId);
2366
- expect(passingRecords).to.have.members([danielRecord.message.recordId, bobRecord.message.recordId, aliceRecord.message.recordId]);
2364
+ expect(passingRecords).toEqual(expect.arrayContaining([
2365
+ danielRecord.message.recordId, bobRecord.message.recordId, aliceRecord.message.recordId
2366
+ ]));
2367
2367
  // query for poorly performing grades (65 and below, inclusive)
2368
2368
  const queryForPoorGrades = yield TestDataGenerator.generateRecordsQuery({
2369
2369
  author: alice,
@@ -2375,9 +2375,9 @@ export function testRecordsTags() {
2375
2375
  }
2376
2376
  });
2377
2377
  const queryForPoorGradesReply = yield dwn.processMessage(alice.did, queryForPoorGrades.message);
2378
- expect(queryForPoorGradesReply.status.code).to.equal(200);
2379
- expect((_d = queryForPoorGradesReply.entries) === null || _d === void 0 ? void 0 : _d.length).to.equal(1);
2380
- expect(queryForPoorGradesReply.entries[0].recordId).to.equal(carolRecord.message.recordId);
2378
+ expect(queryForPoorGradesReply.status.code).toBe(200);
2379
+ expect((_d = queryForPoorGradesReply.entries) === null || _d === void 0 ? void 0 : _d.length).toBe(1);
2380
+ expect(queryForPoorGradesReply.entries[0].recordId).toBe(carolRecord.message.recordId);
2381
2381
  // query for passing grades that were not perfect scores
2382
2382
  const queryForRange = yield TestDataGenerator.generateRecordsQuery({
2383
2383
  author: alice,
@@ -2389,10 +2389,10 @@ export function testRecordsTags() {
2389
2389
  }
2390
2390
  });
2391
2391
  const queryForRangeReply = yield dwn.processMessage(alice.did, queryForRange.message);
2392
- expect(queryForRangeReply.status.code).to.equal(200);
2393
- expect((_e = queryForRangeReply.entries) === null || _e === void 0 ? void 0 : _e.length).to.equal(2);
2392
+ expect(queryForRangeReply.status.code).toBe(200);
2393
+ expect((_e = queryForRangeReply.entries) === null || _e === void 0 ? void 0 : _e.length).toBe(2);
2394
2394
  const rangeRecords = queryForRangeReply.entries.map(entry => entry.recordId);
2395
- expect(rangeRecords).to.have.members([bobRecord.message.recordId, aliceRecord.message.recordId]);
2395
+ expect(rangeRecords).toEqual(expect.arrayContaining([bobRecord.message.recordId, aliceRecord.message.recordId]));
2396
2396
  }));
2397
2397
  it('should return results based on the latest tag values', () => __awaiter(this, void 0, void 0, function* () {
2398
2398
  var _a, _b;
@@ -2406,7 +2406,7 @@ export function testRecordsTags() {
2406
2406
  }
2407
2407
  });
2408
2408
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
2409
- expect(tagsRecord1Reply.status.code).to.equal(202);
2409
+ expect(tagsRecord1Reply.status.code).toBe(202);
2410
2410
  const tagsQueryMatch = yield TestDataGenerator.generateRecordsQuery({
2411
2411
  author: alice,
2412
2412
  filter: {
@@ -2416,9 +2416,9 @@ export function testRecordsTags() {
2416
2416
  }
2417
2417
  });
2418
2418
  const tagsQueryMatchReply = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2419
- expect(tagsQueryMatchReply.status.code).to.equal(200);
2420
- expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
2421
- expect(tagsQueryMatchReply.entries[0].recordId).to.equal(tagsRecord1.message.recordId);
2419
+ expect(tagsQueryMatchReply.status.code).toBe(200);
2420
+ expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
2421
+ expect(tagsQueryMatchReply.entries[0].recordId).toBe(tagsRecord1.message.recordId);
2422
2422
  // update the record with new tags
2423
2423
  const updatedRecord = yield TestDataGenerator.generateFromRecordsWrite({
2424
2424
  author: alice,
@@ -2426,11 +2426,11 @@ export function testRecordsTags() {
2426
2426
  tags: { otherTag: 'other-value' } // new tags
2427
2427
  });
2428
2428
  const updatedRecordReply = yield dwn.processMessage(alice.did, updatedRecord.message, { dataStream: updatedRecord.dataStream });
2429
- expect(updatedRecordReply.status.code).to.equal(202);
2429
+ expect(updatedRecordReply.status.code).toBe(202);
2430
2430
  // issuing the same query should return no results
2431
2431
  const tagsQueryMatchReply2 = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2432
- expect(tagsQueryMatchReply2.status.code).to.equal(200);
2433
- expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
2432
+ expect(tagsQueryMatchReply2.status.code).toBe(200);
2433
+ expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
2434
2434
  }));
2435
2435
  it('should not return results if the record was updated with empty tags', () => __awaiter(this, void 0, void 0, function* () {
2436
2436
  var _a, _b;
@@ -2444,7 +2444,7 @@ export function testRecordsTags() {
2444
2444
  }
2445
2445
  });
2446
2446
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
2447
- expect(tagsRecord1Reply.status.code).to.equal(202);
2447
+ expect(tagsRecord1Reply.status.code).toBe(202);
2448
2448
  const tagsQueryMatch = yield TestDataGenerator.generateRecordsQuery({
2449
2449
  author: alice,
2450
2450
  filter: {
@@ -2454,20 +2454,20 @@ export function testRecordsTags() {
2454
2454
  }
2455
2455
  });
2456
2456
  const tagsQueryMatchReply = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2457
- expect(tagsQueryMatchReply.status.code).to.equal(200);
2458
- expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
2459
- expect(tagsQueryMatchReply.entries[0].recordId).to.equal(tagsRecord1.message.recordId);
2457
+ expect(tagsQueryMatchReply.status.code).toBe(200);
2458
+ expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
2459
+ expect(tagsQueryMatchReply.entries[0].recordId).toBe(tagsRecord1.message.recordId);
2460
2460
  // update the record without any tags
2461
2461
  const updatedRecord = yield TestDataGenerator.generateFromRecordsWrite({
2462
2462
  author: alice,
2463
2463
  existingWrite: tagsRecord1.recordsWrite,
2464
2464
  });
2465
2465
  const updatedRecordReply = yield dwn.processMessage(alice.did, updatedRecord.message, { dataStream: updatedRecord.dataStream });
2466
- expect(updatedRecordReply.status.code).to.equal(202);
2466
+ expect(updatedRecordReply.status.code).toBe(202);
2467
2467
  // issuing the same query should return no results
2468
2468
  const tagsQueryMatchReply2 = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2469
- expect(tagsQueryMatchReply2.status.code).to.equal(200);
2470
- expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
2469
+ expect(tagsQueryMatchReply2.status.code).toBe(200);
2470
+ expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
2471
2471
  }));
2472
2472
  });
2473
2473
  describe('RecordsDelete with tags', () => {
@@ -2484,7 +2484,7 @@ export function testRecordsTags() {
2484
2484
  }
2485
2485
  });
2486
2486
  const tagsRecord1Reply = yield dwn.processMessage(alice.did, tagsRecord1.message, { dataStream: tagsRecord1.dataStream });
2487
- expect(tagsRecord1Reply.status.code).to.equal(202);
2487
+ expect(tagsRecord1Reply.status.code).toBe(202);
2488
2488
  //sanity: query for the record
2489
2489
  const tagsQueryMatch = yield TestDataGenerator.generateRecordsQuery({
2490
2490
  author: alice,
@@ -2495,20 +2495,20 @@ export function testRecordsTags() {
2495
2495
  }
2496
2496
  });
2497
2497
  const tagsQueryMatchReply = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2498
- expect(tagsQueryMatchReply.status.code).to.equal(200);
2499
- expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
2500
- expect(tagsQueryMatchReply.entries[0].recordId).to.equal(tagsRecord1.message.recordId);
2498
+ expect(tagsQueryMatchReply.status.code).toBe(200);
2499
+ expect((_a = tagsQueryMatchReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
2500
+ expect(tagsQueryMatchReply.entries[0].recordId).toBe(tagsRecord1.message.recordId);
2501
2501
  // delete the record
2502
2502
  const recordDelete = yield TestDataGenerator.generateRecordsDelete({
2503
2503
  author: alice,
2504
2504
  recordId: tagsRecord1.message.recordId,
2505
2505
  });
2506
2506
  const recordDeleteReply = yield dwn.processMessage(alice.did, recordDelete.message);
2507
- expect(recordDeleteReply.status.code).to.equal(202);
2507
+ expect(recordDeleteReply.status.code).toBe(202);
2508
2508
  // issue the the same query should return no results
2509
2509
  const tagsQueryMatchReply2 = yield dwn.processMessage(alice.did, tagsQueryMatch.message);
2510
- expect(tagsQueryMatchReply2.status.code).to.equal(200);
2511
- expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
2510
+ expect(tagsQueryMatchReply2.status.code).toBe(200);
2511
+ expect((_b = tagsQueryMatchReply2.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
2512
2512
  }));
2513
2513
  });
2514
2514
  });