@enbox/dwn-server 0.0.2 → 0.0.4

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 (309) hide show
  1. package/LICENSE +3 -2
  2. package/README.md +115 -215
  3. package/dist/esm/src/admin/activity-log.d.ts +44 -0
  4. package/dist/esm/src/admin/activity-log.d.ts.map +1 -0
  5. package/dist/esm/src/admin/activity-log.js +85 -0
  6. package/dist/esm/src/admin/activity-log.js.map +1 -0
  7. package/dist/esm/src/admin/admin-api.d.ts +61 -0
  8. package/dist/esm/src/admin/admin-api.d.ts.map +1 -0
  9. package/dist/esm/src/admin/admin-api.js +1047 -0
  10. package/dist/esm/src/admin/admin-api.js.map +1 -0
  11. package/dist/esm/src/admin/admin-auth.d.ts +9 -0
  12. package/dist/esm/src/admin/admin-auth.d.ts.map +1 -0
  13. package/dist/esm/src/admin/admin-auth.js +45 -0
  14. package/dist/esm/src/admin/admin-auth.js.map +1 -0
  15. package/dist/esm/src/admin/admin-store.d.ts +111 -0
  16. package/dist/esm/src/admin/admin-store.d.ts.map +1 -0
  17. package/dist/esm/src/admin/admin-store.js +376 -0
  18. package/dist/esm/src/admin/admin-store.js.map +1 -0
  19. package/dist/esm/src/admin/audit-log.d.ts +94 -0
  20. package/dist/esm/src/admin/audit-log.d.ts.map +1 -0
  21. package/dist/esm/src/admin/audit-log.js +220 -0
  22. package/dist/esm/src/admin/audit-log.js.map +1 -0
  23. package/dist/esm/src/admin/index.d.ts +10 -0
  24. package/dist/esm/src/admin/index.d.ts.map +1 -0
  25. package/dist/esm/src/admin/index.js +7 -0
  26. package/dist/esm/src/admin/index.js.map +1 -0
  27. package/dist/esm/src/admin/types.d.ts +306 -0
  28. package/dist/esm/src/admin/types.d.ts.map +1 -0
  29. package/dist/esm/src/admin/types.js +2 -0
  30. package/dist/esm/src/admin/types.js.map +1 -0
  31. package/dist/esm/src/admin/webhook-manager.d.ts +55 -0
  32. package/dist/esm/src/admin/webhook-manager.d.ts.map +1 -0
  33. package/dist/esm/src/admin/webhook-manager.js +184 -0
  34. package/dist/esm/src/admin/webhook-manager.js.map +1 -0
  35. package/dist/esm/src/config.d.ts +124 -9
  36. package/dist/esm/src/config.d.ts.map +1 -1
  37. package/dist/esm/src/config.js +155 -13
  38. package/dist/esm/src/config.js.map +1 -1
  39. package/dist/esm/src/connection/connection-manager.d.ts +32 -9
  40. package/dist/esm/src/connection/connection-manager.d.ts.map +1 -1
  41. package/dist/esm/src/connection/connection-manager.js +38 -5
  42. package/dist/esm/src/connection/connection-manager.js.map +1 -1
  43. package/dist/esm/src/connection/flow-controller.d.ts +53 -0
  44. package/dist/esm/src/connection/flow-controller.d.ts.map +1 -0
  45. package/dist/esm/src/connection/flow-controller.js +101 -0
  46. package/dist/esm/src/connection/flow-controller.js.map +1 -0
  47. package/dist/esm/src/connection/socket-connection.d.ts +54 -18
  48. package/dist/esm/src/connection/socket-connection.d.ts.map +1 -1
  49. package/dist/esm/src/connection/socket-connection.js +102 -40
  50. package/dist/esm/src/connection/socket-connection.js.map +1 -1
  51. package/dist/esm/src/delivery-service.d.ts +43 -0
  52. package/dist/esm/src/delivery-service.d.ts.map +1 -0
  53. package/dist/esm/src/delivery-service.js +574 -0
  54. package/dist/esm/src/delivery-service.js.map +1 -0
  55. package/dist/esm/src/dwn-error.d.ts +10 -1
  56. package/dist/esm/src/dwn-error.d.ts.map +1 -1
  57. package/dist/esm/src/dwn-error.js +9 -0
  58. package/dist/esm/src/dwn-error.js.map +1 -1
  59. package/dist/esm/src/dwn-server.d.ts +13 -6
  60. package/dist/esm/src/dwn-server.d.ts.map +1 -1
  61. package/dist/esm/src/dwn-server.js +199 -24
  62. package/dist/esm/src/dwn-server.js.map +1 -1
  63. package/dist/esm/src/http-api.d.ts +28 -13
  64. package/dist/esm/src/http-api.d.ts.map +1 -1
  65. package/dist/esm/src/http-api.js +649 -374
  66. package/dist/esm/src/http-api.js.map +1 -1
  67. package/dist/esm/src/index.d.ts +6 -2
  68. package/dist/esm/src/index.d.ts.map +1 -1
  69. package/dist/esm/src/index.js +4 -1
  70. package/dist/esm/src/index.js.map +1 -1
  71. package/dist/esm/src/json-rpc-api.js +2 -1
  72. package/dist/esm/src/json-rpc-api.js.map +1 -1
  73. package/dist/esm/src/json-rpc-handlers/dwn/process-message.d.ts.map +1 -1
  74. package/dist/esm/src/json-rpc-handlers/dwn/process-message.js +109 -7
  75. package/dist/esm/src/json-rpc-handlers/dwn/process-message.js.map +1 -1
  76. package/dist/esm/src/json-rpc-handlers/subscription/ack.d.ts +20 -0
  77. package/dist/esm/src/json-rpc-handlers/subscription/ack.d.ts.map +1 -0
  78. package/dist/esm/src/json-rpc-handlers/subscription/ack.js +41 -0
  79. package/dist/esm/src/json-rpc-handlers/subscription/ack.js.map +1 -0
  80. package/dist/esm/src/json-rpc-handlers/subscription/close.d.ts.map +1 -1
  81. package/dist/esm/src/json-rpc-handlers/subscription/close.js +1 -1
  82. package/dist/esm/src/json-rpc-handlers/subscription/close.js.map +1 -1
  83. package/dist/esm/src/json-rpc-handlers/subscription/index.d.ts +1 -0
  84. package/dist/esm/src/json-rpc-handlers/subscription/index.d.ts.map +1 -1
  85. package/dist/esm/src/json-rpc-handlers/subscription/index.js +1 -0
  86. package/dist/esm/src/json-rpc-handlers/subscription/index.js.map +1 -1
  87. package/dist/esm/src/lib/json-rpc-router.d.ts +25 -8
  88. package/dist/esm/src/lib/json-rpc-router.d.ts.map +1 -1
  89. package/dist/esm/src/lib/json-rpc-router.js.map +1 -1
  90. package/dist/esm/src/lib/sql-utils.d.ts +6 -0
  91. package/dist/esm/src/lib/sql-utils.d.ts.map +1 -0
  92. package/dist/esm/src/lib/sql-utils.js +8 -0
  93. package/dist/esm/src/lib/sql-utils.js.map +1 -0
  94. package/dist/esm/src/main.js +0 -6
  95. package/dist/esm/src/main.js.map +1 -1
  96. package/dist/esm/src/message-processed-hook.d.ts +35 -0
  97. package/dist/esm/src/message-processed-hook.d.ts.map +1 -0
  98. package/dist/esm/src/message-processed-hook.js +2 -0
  99. package/dist/esm/src/message-processed-hook.js.map +1 -0
  100. package/dist/esm/src/metrics.d.ts +14 -2
  101. package/dist/esm/src/metrics.d.ts.map +1 -1
  102. package/dist/esm/src/metrics.js +41 -1
  103. package/dist/esm/src/metrics.js.map +1 -1
  104. package/dist/esm/src/plugins/event-log-nats.d.ts +25 -0
  105. package/dist/esm/src/plugins/event-log-nats.d.ts.map +1 -0
  106. package/dist/esm/src/plugins/event-log-nats.js +379 -0
  107. package/dist/esm/src/plugins/event-log-nats.js.map +1 -0
  108. package/dist/esm/src/rate-limiter.d.ts +60 -0
  109. package/dist/esm/src/rate-limiter.d.ts.map +1 -0
  110. package/dist/esm/src/rate-limiter.js +116 -0
  111. package/dist/esm/src/rate-limiter.js.map +1 -0
  112. package/dist/esm/src/registration/jwt-provider-auth-plugin.d.ts +53 -0
  113. package/dist/esm/src/registration/jwt-provider-auth-plugin.d.ts.map +1 -0
  114. package/dist/esm/src/registration/jwt-provider-auth-plugin.js +90 -0
  115. package/dist/esm/src/registration/jwt-provider-auth-plugin.js.map +1 -0
  116. package/dist/esm/src/registration/open-auth-handler.d.ts +37 -0
  117. package/dist/esm/src/registration/open-auth-handler.d.ts.map +1 -0
  118. package/dist/esm/src/registration/open-auth-handler.js +214 -0
  119. package/dist/esm/src/registration/open-auth-handler.js.map +1 -0
  120. package/dist/esm/src/registration/proof-of-work-manager.d.ts +1 -1
  121. package/dist/esm/src/registration/proof-of-work-manager.d.ts.map +1 -1
  122. package/dist/esm/src/registration/proof-of-work-manager.js +3 -3
  123. package/dist/esm/src/registration/proof-of-work-manager.js.map +1 -1
  124. package/dist/esm/src/registration/provider-auth-plugin.d.ts +46 -0
  125. package/dist/esm/src/registration/provider-auth-plugin.d.ts.map +1 -0
  126. package/dist/esm/src/registration/provider-auth-plugin.js +29 -0
  127. package/dist/esm/src/registration/provider-auth-plugin.js.map +1 -0
  128. package/dist/esm/src/registration/registration-manager.d.ts +28 -5
  129. package/dist/esm/src/registration/registration-manager.d.ts.map +1 -1
  130. package/dist/esm/src/registration/registration-manager.js +83 -12
  131. package/dist/esm/src/registration/registration-manager.js.map +1 -1
  132. package/dist/esm/src/registration/registration-store.d.ts +83 -3
  133. package/dist/esm/src/registration/registration-store.d.ts.map +1 -1
  134. package/dist/esm/src/registration/registration-store.js +248 -11
  135. package/dist/esm/src/registration/registration-store.js.map +1 -1
  136. package/dist/esm/src/storage.d.ts +5 -5
  137. package/dist/esm/src/storage.d.ts.map +1 -1
  138. package/dist/esm/src/storage.js +105 -24
  139. package/dist/esm/src/storage.js.map +1 -1
  140. package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts.map +1 -1
  141. package/dist/esm/src/web5-connect/sql-ttl-cache.js +11 -3
  142. package/dist/esm/src/web5-connect/sql-ttl-cache.js.map +1 -1
  143. package/dist/esm/src/web5-connect/web5-connect-server.d.ts.map +1 -1
  144. package/dist/esm/src/web5-connect/web5-connect-server.js +2 -2
  145. package/dist/esm/src/web5-connect/web5-connect-server.js.map +1 -1
  146. package/dist/esm/src/ws-api.d.ts +18 -4
  147. package/dist/esm/src/ws-api.d.ts.map +1 -1
  148. package/dist/esm/src/ws-api.js +12 -16
  149. package/dist/esm/src/ws-api.js.map +1 -1
  150. package/package.json +34 -53
  151. package/src/admin/activity-log.ts +100 -0
  152. package/src/admin/admin-api.ts +1308 -0
  153. package/src/admin/admin-auth.ts +56 -0
  154. package/src/admin/admin-store.ts +515 -0
  155. package/src/admin/audit-log.ts +327 -0
  156. package/src/admin/index.ts +34 -0
  157. package/src/admin/types.ts +352 -0
  158. package/src/admin/webhook-manager.ts +245 -0
  159. package/src/config.ts +190 -22
  160. package/src/connection/connection-manager.ts +67 -17
  161. package/src/connection/flow-controller.ts +117 -0
  162. package/src/connection/socket-connection.ts +144 -67
  163. package/src/delivery-service.ts +740 -0
  164. package/src/dwn-error.ts +11 -2
  165. package/src/dwn-server.ts +254 -39
  166. package/src/http-api.ts +736 -392
  167. package/src/index.ts +13 -2
  168. package/src/json-rpc-api.ts +2 -1
  169. package/src/json-rpc-handlers/dwn/process-message.ts +149 -15
  170. package/src/json-rpc-handlers/subscription/ack.ts +63 -0
  171. package/src/json-rpc-handlers/subscription/close.ts +5 -9
  172. package/src/json-rpc-handlers/subscription/index.ts +1 -0
  173. package/src/lib/json-rpc-router.ts +26 -11
  174. package/src/lib/sql-utils.ts +7 -0
  175. package/src/main.ts +0 -8
  176. package/src/message-processed-hook.ts +33 -0
  177. package/src/metrics.ts +57 -8
  178. package/src/plugins/event-log-nats.ts +466 -0
  179. package/src/process-handlers.ts +5 -5
  180. package/src/rate-limiter.ts +143 -0
  181. package/src/registration/jwt-provider-auth-plugin.ts +119 -0
  182. package/src/registration/open-auth-handler.ts +263 -0
  183. package/src/registration/proof-of-work-manager.ts +11 -10
  184. package/src/registration/provider-auth-plugin.ts +84 -0
  185. package/src/registration/registration-manager.ts +129 -31
  186. package/src/registration/registration-store.ts +332 -22
  187. package/src/storage.ts +136 -40
  188. package/src/web5-connect/sql-ttl-cache.ts +12 -5
  189. package/src/web5-connect/web5-connect-server.ts +9 -8
  190. package/src/ws-api.ts +39 -26
  191. package/dist/cjs/index.js +0 -6811
  192. package/dist/cjs/package.json +0 -1
  193. package/dist/esm/src/json-rpc-socket.d.ts +0 -39
  194. package/dist/esm/src/json-rpc-socket.d.ts.map +0 -1
  195. package/dist/esm/src/json-rpc-socket.js +0 -125
  196. package/dist/esm/src/json-rpc-socket.js.map +0 -1
  197. package/dist/esm/src/lib/http-server-shutdown-handler.d.ts +0 -10
  198. package/dist/esm/src/lib/http-server-shutdown-handler.d.ts.map +0 -1
  199. package/dist/esm/src/lib/http-server-shutdown-handler.js +0 -65
  200. package/dist/esm/src/lib/http-server-shutdown-handler.js.map +0 -1
  201. package/dist/esm/src/lib/json-rpc.d.ts +0 -54
  202. package/dist/esm/src/lib/json-rpc.d.ts.map +0 -1
  203. package/dist/esm/src/lib/json-rpc.js +0 -60
  204. package/dist/esm/src/lib/json-rpc.js.map +0 -1
  205. package/dist/esm/src/registration/proof-of-work-types.d.ts +0 -8
  206. package/dist/esm/src/registration/proof-of-work-types.d.ts.map +0 -1
  207. package/dist/esm/src/registration/proof-of-work-types.js +0 -2
  208. package/dist/esm/src/registration/proof-of-work-types.js.map +0 -1
  209. package/dist/esm/src/registration/registration-types.d.ts +0 -18
  210. package/dist/esm/src/registration/registration-types.d.ts.map +0 -1
  211. package/dist/esm/src/registration/registration-types.js +0 -2
  212. package/dist/esm/src/registration/registration-types.js.map +0 -1
  213. package/dist/esm/tests/common-scenario-validator.d.ts +0 -11
  214. package/dist/esm/tests/common-scenario-validator.d.ts.map +0 -1
  215. package/dist/esm/tests/common-scenario-validator.js +0 -114
  216. package/dist/esm/tests/common-scenario-validator.js.map +0 -1
  217. package/dist/esm/tests/connection/connection-manager.spec.d.ts +0 -2
  218. package/dist/esm/tests/connection/connection-manager.spec.d.ts.map +0 -1
  219. package/dist/esm/tests/connection/connection-manager.spec.js +0 -47
  220. package/dist/esm/tests/connection/connection-manager.spec.js.map +0 -1
  221. package/dist/esm/tests/connection/socket-connection.spec.d.ts +0 -2
  222. package/dist/esm/tests/connection/socket-connection.spec.d.ts.map +0 -1
  223. package/dist/esm/tests/connection/socket-connection.spec.js +0 -125
  224. package/dist/esm/tests/connection/socket-connection.spec.js.map +0 -1
  225. package/dist/esm/tests/cors/http-api.browser.d.ts +0 -2
  226. package/dist/esm/tests/cors/http-api.browser.d.ts.map +0 -1
  227. package/dist/esm/tests/cors/http-api.browser.js +0 -60
  228. package/dist/esm/tests/cors/http-api.browser.js.map +0 -1
  229. package/dist/esm/tests/cors/ping.browser.d.ts +0 -2
  230. package/dist/esm/tests/cors/ping.browser.d.ts.map +0 -1
  231. package/dist/esm/tests/cors/ping.browser.js +0 -7
  232. package/dist/esm/tests/cors/ping.browser.js.map +0 -1
  233. package/dist/esm/tests/dwn-process-message.spec.d.ts +0 -2
  234. package/dist/esm/tests/dwn-process-message.spec.d.ts.map +0 -1
  235. package/dist/esm/tests/dwn-process-message.spec.js +0 -172
  236. package/dist/esm/tests/dwn-process-message.spec.js.map +0 -1
  237. package/dist/esm/tests/dwn-server.spec.d.ts +0 -2
  238. package/dist/esm/tests/dwn-server.spec.d.ts.map +0 -1
  239. package/dist/esm/tests/dwn-server.spec.js +0 -49
  240. package/dist/esm/tests/dwn-server.spec.js.map +0 -1
  241. package/dist/esm/tests/http-api.spec.d.ts +0 -2
  242. package/dist/esm/tests/http-api.spec.d.ts.map +0 -1
  243. package/dist/esm/tests/http-api.spec.js +0 -775
  244. package/dist/esm/tests/http-api.spec.js.map +0 -1
  245. package/dist/esm/tests/json-rpc-socket.spec.d.ts +0 -2
  246. package/dist/esm/tests/json-rpc-socket.spec.d.ts.map +0 -1
  247. package/dist/esm/tests/json-rpc-socket.spec.js +0 -225
  248. package/dist/esm/tests/json-rpc-socket.spec.js.map +0 -1
  249. package/dist/esm/tests/plugins/data-store-sqlite.d.ts +0 -17
  250. package/dist/esm/tests/plugins/data-store-sqlite.d.ts.map +0 -1
  251. package/dist/esm/tests/plugins/data-store-sqlite.js +0 -23
  252. package/dist/esm/tests/plugins/data-store-sqlite.js.map +0 -1
  253. package/dist/esm/tests/plugins/event-log-sqlite.d.ts +0 -17
  254. package/dist/esm/tests/plugins/event-log-sqlite.d.ts.map +0 -1
  255. package/dist/esm/tests/plugins/event-log-sqlite.js +0 -23
  256. package/dist/esm/tests/plugins/event-log-sqlite.js.map +0 -1
  257. package/dist/esm/tests/plugins/event-stream-in-memory.d.ts +0 -17
  258. package/dist/esm/tests/plugins/event-stream-in-memory.d.ts.map +0 -1
  259. package/dist/esm/tests/plugins/event-stream-in-memory.js +0 -21
  260. package/dist/esm/tests/plugins/event-stream-in-memory.js.map +0 -1
  261. package/dist/esm/tests/plugins/message-store-sqlite.d.ts +0 -17
  262. package/dist/esm/tests/plugins/message-store-sqlite.d.ts.map +0 -1
  263. package/dist/esm/tests/plugins/message-store-sqlite.js +0 -23
  264. package/dist/esm/tests/plugins/message-store-sqlite.js.map +0 -1
  265. package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts +0 -17
  266. package/dist/esm/tests/plugins/resumable-task-store-sqlite.d.ts.map +0 -1
  267. package/dist/esm/tests/plugins/resumable-task-store-sqlite.js +0 -23
  268. package/dist/esm/tests/plugins/resumable-task-store-sqlite.js.map +0 -1
  269. package/dist/esm/tests/process-handler.spec.d.ts +0 -2
  270. package/dist/esm/tests/process-handler.spec.d.ts.map +0 -1
  271. package/dist/esm/tests/process-handler.spec.js +0 -60
  272. package/dist/esm/tests/process-handler.spec.js.map +0 -1
  273. package/dist/esm/tests/registration/proof-of-work-manager.spec.d.ts +0 -2
  274. package/dist/esm/tests/registration/proof-of-work-manager.spec.d.ts.map +0 -1
  275. package/dist/esm/tests/registration/proof-of-work-manager.spec.js +0 -157
  276. package/dist/esm/tests/registration/proof-of-work-manager.spec.js.map +0 -1
  277. package/dist/esm/tests/rpc-subscribe-close.spec.d.ts +0 -2
  278. package/dist/esm/tests/rpc-subscribe-close.spec.d.ts.map +0 -1
  279. package/dist/esm/tests/rpc-subscribe-close.spec.js +0 -81
  280. package/dist/esm/tests/rpc-subscribe-close.spec.js.map +0 -1
  281. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.d.ts +0 -2
  282. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.d.ts.map +0 -1
  283. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js +0 -73
  284. package/dist/esm/tests/scenarios/dynamic-plugin-loading.spec.js.map +0 -1
  285. package/dist/esm/tests/scenarios/registration.spec.d.ts +0 -2
  286. package/dist/esm/tests/scenarios/registration.spec.d.ts.map +0 -1
  287. package/dist/esm/tests/scenarios/registration.spec.js +0 -507
  288. package/dist/esm/tests/scenarios/registration.spec.js.map +0 -1
  289. package/dist/esm/tests/scenarios/web5-connect.spec.d.ts +0 -2
  290. package/dist/esm/tests/scenarios/web5-connect.spec.d.ts.map +0 -1
  291. package/dist/esm/tests/scenarios/web5-connect.spec.js +0 -137
  292. package/dist/esm/tests/scenarios/web5-connect.spec.js.map +0 -1
  293. package/dist/esm/tests/test-dwn.d.ts +0 -7
  294. package/dist/esm/tests/test-dwn.d.ts.map +0 -1
  295. package/dist/esm/tests/test-dwn.js +0 -34
  296. package/dist/esm/tests/test-dwn.js.map +0 -1
  297. package/dist/esm/tests/utils.d.ts +0 -46
  298. package/dist/esm/tests/utils.d.ts.map +0 -1
  299. package/dist/esm/tests/utils.js +0 -116
  300. package/dist/esm/tests/utils.js.map +0 -1
  301. package/dist/esm/tests/ws-api.spec.d.ts +0 -2
  302. package/dist/esm/tests/ws-api.spec.d.ts.map +0 -1
  303. package/dist/esm/tests/ws-api.spec.js +0 -327
  304. package/dist/esm/tests/ws-api.spec.js.map +0 -1
  305. package/src/json-rpc-socket.ts +0 -155
  306. package/src/lib/http-server-shutdown-handler.ts +0 -79
  307. package/src/lib/json-rpc.ts +0 -126
  308. package/src/registration/proof-of-work-types.ts +0 -7
  309. package/src/registration/registration-types.ts +0 -18
@@ -1,507 +0,0 @@
1
- import fetch from 'node-fetch';
2
- import { config } from '../../src/config.js';
3
- import { createJsonRpcRequest } from '../../src/lib/json-rpc.js';
4
- import { createRecordsWriteMessage } from '../utils.js';
5
- import { DwnServer } from '../../src/dwn-server.js';
6
- import { DwnServerErrorCode } from '../../src/dwn-error.js';
7
- import { expect } from 'chai';
8
- import { ProofOfWork } from '../../src/registration/proof-of-work.js';
9
- import { ProofOfWorkManager } from '../../src/registration/proof-of-work-manager.js';
10
- import { randomBytes } from 'crypto';
11
- import { readFileSync } from 'fs';
12
- import { useFakeTimers } from 'sinon';
13
- import { v4 as uuidv4 } from 'uuid';
14
- import { webcrypto } from 'node:crypto';
15
- import { DataStream, TestDataGenerator } from '@enbox/dwn-sdk-js';
16
- import { DidDht, DidKey, UniversalResolver } from '@enbox/dids';
17
- // node.js 18 and earlier, needs globalThis.crypto polyfill
18
- if (!globalThis.crypto) {
19
- // @ts-ignore
20
- globalThis.crypto = webcrypto;
21
- }
22
- describe('Registration scenarios', function () {
23
- const dwnMessageEndpoint = 'http://localhost:3000';
24
- const termsOfUseEndpoint = 'http://localhost:3000/registration/terms-of-service';
25
- const proofOfWorkEndpoint = 'http://localhost:3000/registration/proof-of-work';
26
- const registrationEndpoint = 'http://localhost:3000/registration';
27
- // let didResolverCache = new DidResolverCacheLevel({ location: 'RESOLVERCACHE' });
28
- let alice;
29
- let registrationManager;
30
- let clock;
31
- let dwnServer;
32
- const dwnServerConfig = { ...config }; // not touching the original config
33
- before(async function () {
34
- clock = useFakeTimers({ shouldAdvanceTime: true });
35
- alice = await TestDataGenerator.generateDidKeyPersona();
36
- // NOTE: using SQL to workaround an issue where multiple instances of DwnServer can be started using LevelDB in the same test run,
37
- // and dwn-server.spec.ts already uses LevelDB.
38
- dwnServerConfig.messageStore = 'sqlite://',
39
- dwnServerConfig.dataStore = 'sqlite://',
40
- dwnServerConfig.resumableTaskStore = 'sqlite://',
41
- dwnServerConfig.eventLog = 'sqlite://',
42
- // registration config
43
- dwnServerConfig.registrationStoreUrl = 'sqlite://';
44
- dwnServerConfig.registrationProofOfWorkEnabled = true;
45
- dwnServerConfig.termsOfServiceFilePath = './tests/fixtures/terms-of-service.txt';
46
- dwnServerConfig.registrationProofOfWorkInitialMaxHash = '0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; // 1 in 16 chance of solving
47
- // CRITICAL: We need to create a custom DID resolver that does not use a LevelDB based cache (which is the default cache used in `DWN`)
48
- // otherwise we will receive a `Database is not open` coming from LevelDB.
49
- // This is likely due to the fact that LevelDB is the default cache used in `DWN`, and we have tests creating default DWN instances,
50
- // so here we have to create a DWN that does not use the same LevelDB cache to avoid hitting LevelDB locked issues.
51
- // Long term we should investigate and unify approach of DWN instantiation taken by tests to avoid this "workaround" entirely.
52
- const didResolver = new UniversalResolver({
53
- didResolvers: [DidDht, DidKey],
54
- });
55
- dwnServer = new DwnServer({ config: dwnServerConfig, didResolver });
56
- await dwnServer.start();
57
- registrationManager = dwnServer.registrationManager;
58
- });
59
- after(async () => {
60
- clock.restore();
61
- });
62
- it('should facilitate tenant registration with terms-of-service and proof-or-work turned on', async () => {
63
- // Scenario:
64
- // 1. Alice fetches the terms-of-service.
65
- // 2. Alice fetches the proof-of-work challenge.
66
- // 3. Alice creates registration data based on the hash of the terms-of-service and her DID.
67
- // 4. Alice computes the proof-of-work response nonce based on the the proof-of-work challenge and the registration data.
68
- // 5. Alice sends the registration request to the server and is now registered.
69
- // 6. Alice can now write to the DWN.
70
- // 7. Sanity test that another non-tenant is NOT authorized to write.
71
- // 1. Alice fetches the terms-of-service.
72
- const termsOfServiceGetResponse = await fetch(termsOfUseEndpoint, {
73
- method: 'GET',
74
- });
75
- const termsOfServiceFetched = await termsOfServiceGetResponse.text();
76
- expect(termsOfServiceGetResponse.status).to.equal(200);
77
- expect(termsOfServiceFetched).to.equal(readFileSync(dwnServerConfig.termsOfServiceFilePath).toString());
78
- // 2. Alice fetches the proof-of-work challenge.
79
- const proofOfWorkChallengeGetResponse = await fetch(proofOfWorkEndpoint, {
80
- method: 'GET',
81
- });
82
- const { challengeNonce, maximumAllowedHashValue } = await proofOfWorkChallengeGetResponse.json();
83
- expect(proofOfWorkChallengeGetResponse.status).to.equal(200);
84
- expect(challengeNonce.length).to.equal(64);
85
- expect(ProofOfWorkManager.isHexString(challengeNonce)).to.be.true;
86
- expect(ProofOfWorkManager.isHexString(maximumAllowedHashValue)).to.be.true;
87
- // 3. Alice creates registration data based on the hash of the terms-of-service and her DID.
88
- const registrationData = {
89
- did: alice.did,
90
- termsOfServiceHash: ProofOfWork.hashAsHexString([termsOfServiceFetched]),
91
- };
92
- // 4. Alice computes the proof-of-work response nonce based on the the proof-of-work challenge and the registration data.
93
- const responseNonce = ProofOfWork.findQualifiedResponseNonce({
94
- challengeNonce,
95
- maximumAllowedHashValue,
96
- requestData: JSON.stringify(registrationData),
97
- });
98
- // 5. Alice sends the registration request to the server and is now registered.
99
- const registrationRequest = {
100
- registrationData,
101
- proofOfWork: {
102
- challengeNonce,
103
- responseNonce,
104
- },
105
- };
106
- const registrationResponse = await fetch(registrationEndpoint, {
107
- method: 'POST',
108
- headers: { 'Content-Type': 'application/json' },
109
- body: JSON.stringify(registrationRequest),
110
- });
111
- expect(registrationResponse.status).to.equal(200);
112
- // 6. Alice can now write to the DWN.
113
- const { jsonRpcRequest, dataBytes } = await generateRecordsWriteJsonRpcRequest(alice);
114
- const writeResponse = await fetch(dwnMessageEndpoint, {
115
- method: 'POST',
116
- headers: {
117
- 'dwn-request': JSON.stringify(jsonRpcRequest),
118
- },
119
- body: new Blob([dataBytes]),
120
- });
121
- const writeResponseBody = await writeResponse.json();
122
- expect(writeResponse.status).to.equal(200);
123
- expect(writeResponseBody.result.reply.status.code).to.equal(202);
124
- // 7. Sanity test that another non-tenant is NOT authorized to write.
125
- const nonTenant = await TestDataGenerator.generateDidKeyPersona();
126
- const nonTenantJsonRpcRequest = await generateRecordsWriteJsonRpcRequest(nonTenant);
127
- const nonTenantJsonRpcResponse = await fetch(dwnMessageEndpoint, {
128
- method: 'POST',
129
- headers: {
130
- 'dwn-request': JSON.stringify(nonTenantJsonRpcRequest.jsonRpcRequest),
131
- },
132
- body: new Blob([nonTenantJsonRpcRequest.dataBytes]),
133
- });
134
- const nonTenantJsonRpcResponseBody = await nonTenantJsonRpcResponse.json();
135
- expect(nonTenantJsonRpcResponse.status).to.equal(200);
136
- expect(nonTenantJsonRpcResponseBody.result.reply.status.code).to.equal(401);
137
- expect(nonTenantJsonRpcResponseBody.result.reply.status.detail).to.equal('Not a registered tenant.');
138
- });
139
- it('should reject a registration request that has proof-or-work that does not meet the difficulty requirement.', async function () {
140
- // Scenario:
141
- // 0. Assume Alice fetched the terms-of-service and proof-of-work challenge.
142
- // 1. Alice computes the proof-of-work response nonce that is insufficient to meet the difficulty requirement.
143
- // 2. Alice sends the registration request to the server and is rejected.
144
- // 0. Assume Alice fetched the terms-of-service and proof-of-work challenge.
145
- const termsOfService = registrationManager.getTermsOfService();
146
- const { challengeNonce } = registrationManager.getProofOfWorkChallenge();
147
- // Force the difficulty to be practically impossible.
148
- const originalMaximumAllowedHashValueAsBigInt = registrationManager['proofOfWorkManager']['currentMaximumAllowedHashValueAsBigInt']; // for restoring later below
149
- registrationManager['proofOfWorkManager']['currentMaximumAllowedHashValueAsBigInt'] = BigInt('0x0000000000000000000000000000000000000000000000000000000000000001');
150
- const registrationData = {
151
- did: alice.did,
152
- termsOfServiceHash: ProofOfWork.hashAsHexString([termsOfService]),
153
- };
154
- // 1. Alice computes the proof-of-work response nonce that is insufficient to meet the difficulty requirement.
155
- const responseNonce = ProofOfWork.findQualifiedResponseNonce({
156
- challengeNonce,
157
- maximumAllowedHashValue: 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF', // any hash value will always be less or equal to this value
158
- requestData: JSON.stringify(registrationData),
159
- });
160
- // 2. Alice sends the registration request to the server and is rejected.
161
- const registrationRequest = {
162
- registrationData,
163
- proofOfWork: {
164
- challengeNonce,
165
- responseNonce,
166
- },
167
- };
168
- const registrationResponse = await fetch(registrationEndpoint, {
169
- method: 'POST',
170
- headers: { 'Content-Type': 'application/json' },
171
- body: JSON.stringify(registrationRequest),
172
- });
173
- const registrationResponseBody = await registrationResponse.json();
174
- expect(registrationResponse.status).to.equal(400);
175
- expect(registrationResponseBody.code).to.equal(DwnServerErrorCode.ProofOfWorkInsufficientSolutionNonce);
176
- // Restoring original difficulty for subsequent tests.
177
- registrationManager['proofOfWorkManager']['currentMaximumAllowedHashValueAsBigInt'] = originalMaximumAllowedHashValueAsBigInt;
178
- });
179
- it('should reject a registration request that uses an invalid/outdated terms-of-service hash', async () => {
180
- // Scenario:
181
- // 0. Assume Alice fetched the proof-of-work challenge.
182
- // 1. Alice constructs the registration data with an invalid/outdated terms-of-service hash.
183
- // 2. Alice sends the registration request to the server and it is rejected.
184
- // 0. Assume Alice fetched the proof-of-work challenge.
185
- const { challengeNonce, maximumAllowedHashValue } = registrationManager.getProofOfWorkChallenge();
186
- // 1. Alice constructs the registration data with an invalid/outdated terms-of-service hash.
187
- const registrationData = {
188
- did: alice.did,
189
- termsOfServiceHash: ProofOfWork.hashAsHexString(['invalid-or-outdated-terms-of-service']),
190
- };
191
- const responseNonce = ProofOfWork.findQualifiedResponseNonce({
192
- challengeNonce,
193
- maximumAllowedHashValue,
194
- requestData: JSON.stringify(registrationData),
195
- });
196
- // 2. Alice sends the registration request to the server and it is rejected.
197
- const registrationRequest = {
198
- registrationData,
199
- proofOfWork: {
200
- challengeNonce,
201
- responseNonce,
202
- },
203
- };
204
- const registrationResponse = await fetch(registrationEndpoint, {
205
- method: 'POST',
206
- headers: { 'Content-Type': 'application/json' },
207
- body: JSON.stringify(registrationRequest),
208
- });
209
- const registrationResponseBody = await registrationResponse.json();
210
- expect(registrationResponse.status).to.equal(400);
211
- expect(registrationResponseBody.code).to.equal(DwnServerErrorCode.RegistrationManagerInvalidOrOutdatedTermsOfServiceHash);
212
- });
213
- it('should reject registration request that reuses a response nonce that is already used a short-time earlier', async () => {
214
- // Scenario:
215
- // 0. Assume Alice fetched the proof-of-work challenge and the terms-of-service.
216
- // 1. Alice sends the registration request to the server and it is accepted.
217
- // 2. Alice sends the same registration request which uses the same response nonce to the server again and it is rejected.
218
- // 0. Assume Alice fetched the proof-of-work challenge and the terms-of-service.
219
- const { challengeNonce, maximumAllowedHashValue } = registrationManager.getProofOfWorkChallenge();
220
- const termsOfService = registrationManager.getTermsOfService();
221
- // 1. Alice sends the registration request to the server and it is accepted.
222
- const registrationData = {
223
- did: alice.did,
224
- termsOfServiceHash: ProofOfWork.hashAsHexString([termsOfService]),
225
- };
226
- const responseNonce = ProofOfWork.findQualifiedResponseNonce({
227
- challengeNonce,
228
- maximumAllowedHashValue,
229
- requestData: JSON.stringify(registrationData),
230
- });
231
- const registrationRequest = {
232
- registrationData,
233
- proofOfWork: {
234
- challengeNonce,
235
- responseNonce,
236
- },
237
- };
238
- const registrationResponse = await fetch(registrationEndpoint, {
239
- method: 'POST',
240
- headers: { 'Content-Type': 'application/json' },
241
- body: JSON.stringify(registrationRequest),
242
- });
243
- expect(registrationResponse.status).to.equal(200);
244
- // 2. Alice sends the same registration request which uses the same response nonce to the server again and it is rejected.
245
- const registration2Response = await fetch(registrationEndpoint, {
246
- method: 'POST',
247
- headers: { 'Content-Type': 'application/json' },
248
- body: JSON.stringify(registrationRequest),
249
- });
250
- const registration2ResponseBody = await registration2Response.json();
251
- expect(registration2Response.status).to.equal(400);
252
- expect(registration2ResponseBody.code).to.equal(DwnServerErrorCode.ProofOfWorkManagerResponseNonceReused);
253
- });
254
- it('should reject an invalid nonce that is not a HEX string representing a 256 bit value.', async function () {
255
- // Assume Alice fetched the terms-of-service.
256
- const termsOfService = registrationManager.getTermsOfService();
257
- const registrationData = {
258
- did: alice.did,
259
- termsOfServiceHash: ProofOfWork.hashAsHexString([termsOfService]),
260
- };
261
- const registrationRequest1 = {
262
- registrationData,
263
- proofOfWork: {
264
- challengeNonce: 'unused',
265
- responseNonce: 'not-a-hex-string',
266
- },
267
- };
268
- const registrationResponse1 = await fetch(registrationEndpoint, {
269
- method: 'POST',
270
- headers: { 'Content-Type': 'application/json' },
271
- body: JSON.stringify(registrationRequest1),
272
- });
273
- const registrationResponseBody1 = await registrationResponse1.json();
274
- expect(registrationResponse1.status).to.equal(400);
275
- expect(registrationResponseBody1.code).to.equal(DwnServerErrorCode.ProofOfWorkManagerInvalidResponseNonceFormat);
276
- const registrationRequest2 = {
277
- registrationData,
278
- proofOfWork: {
279
- challengeNonce: 'unused',
280
- responseNonce: 'FFFF', // HEX string too short
281
- },
282
- };
283
- const registrationResponse2 = await fetch(registrationEndpoint, {
284
- method: 'POST',
285
- headers: { 'Content-Type': 'application/json' },
286
- body: JSON.stringify(registrationRequest2),
287
- });
288
- const registrationResponseBody2 = await registrationResponse2.json();
289
- expect(registrationResponse2.status).to.equal(400);
290
- expect(registrationResponseBody2.code).to.equal(DwnServerErrorCode.ProofOfWorkManagerInvalidResponseNonceFormat);
291
- });
292
- it('should reject a response nonce based on an expired challenge nonce and accept one is based on the new challenge nonce', async () => {
293
- // Scenario:
294
- // 0. Assume Alice fetched the terms-of-service and proof-of-work challenge.
295
- // 1. A long time has passed since Alice fetched the proof-of-work challenge and the challenge nonce has expired.
296
- // 2. Alice computes the proof-of-work response nonce based on the the proof-of-work challenge and the registration data.
297
- // 3. Alice sends the registration request to the server and it is rejected.
298
- // 4. Alice fetches the new proof-of-work challenge.
299
- // 5. Alice computes the proof-of-work response nonce based on the the new proof-of-work challenge and the registration data.
300
- // 6. Alice sends the new registration request to the server and it is accepted.
301
- // 0. Assume Alice fetched the terms-of-service and proof-of-work challenge.
302
- const termsOfService = registrationManager.getTermsOfService();
303
- const { challengeNonce, maximumAllowedHashValue } = registrationManager.getProofOfWorkChallenge();
304
- // 1. A long time has passed since Alice fetched the proof-of-work challenge and the challenge nonce has expired.
305
- clock.tick(10 * 60 * 1000); // 10 minutes has passed
306
- clock.runToLast(); // triggers all scheduled timers
307
- // 2. Alice computes the proof-of-work response nonce based on the the proof-of-work challenge and the registration data.
308
- const registrationData = {
309
- did: alice.did,
310
- termsOfServiceHash: ProofOfWork.hashAsHexString([termsOfService]),
311
- };
312
- const responseNonce = ProofOfWork.findQualifiedResponseNonce({
313
- challengeNonce,
314
- maximumAllowedHashValue,
315
- requestData: JSON.stringify(registrationData),
316
- });
317
- // 3. Alice sends the registration request to the server and it is rejected.
318
- const registrationRequest = {
319
- registrationData,
320
- proofOfWork: {
321
- challengeNonce,
322
- responseNonce,
323
- },
324
- };
325
- const registrationResponse = await fetch(registrationEndpoint, {
326
- method: 'POST',
327
- headers: { 'Content-Type': 'application/json' },
328
- body: JSON.stringify(registrationRequest),
329
- });
330
- const registrationResponseBody = await registrationResponse.json();
331
- expect(registrationResponse.status).to.equal(400);
332
- expect(registrationResponseBody.code).to.equal(DwnServerErrorCode.ProofOfWorkManagerInvalidChallengeNonce);
333
- // 4. Alice fetches the new proof-of-work challenge.
334
- const proofOfWorkChallengeGetResponse = await fetch(proofOfWorkEndpoint, {
335
- method: 'GET',
336
- });
337
- const { challengeNonce: newChallengeNonce, maximumAllowedHashValue: newMaximumAllowedHashValue } = await proofOfWorkChallengeGetResponse.json();
338
- expect(proofOfWorkChallengeGetResponse.status).to.equal(200);
339
- // 5. Alice computes the proof-of-work response nonce based on the the new proof-of-work challenge and the registration data.
340
- const newResponseNonce = ProofOfWork.findQualifiedResponseNonce({
341
- challengeNonce: newChallengeNonce,
342
- maximumAllowedHashValue: newMaximumAllowedHashValue,
343
- requestData: JSON.stringify(registrationData),
344
- });
345
- // 6. Alice sends the new registration request to the server and it is accepted.
346
- const newRegistrationRequest = {
347
- registrationData,
348
- proofOfWork: {
349
- challengeNonce: newChallengeNonce,
350
- responseNonce: newResponseNonce
351
- },
352
- };
353
- const newRegistrationResponse = await fetch(registrationEndpoint, {
354
- method: 'POST',
355
- headers: { 'Content-Type': 'application/json' },
356
- body: JSON.stringify(newRegistrationRequest),
357
- });
358
- expect(newRegistrationResponse.status).to.equal(200);
359
- });
360
- it('should reject a DWN message for an existing tenant who agreed to an outdated terms-of-service.', async () => {
361
- // Scenario:
362
- // 1. Alice is a registered tenant and is able to write to the DWN.
363
- // 2. DWN server administrator updates the terms-of-service.
364
- // 3. Alice no longer can write to the DWN because she has not agreed to the new terms-of-service.
365
- // 4. Alice fetches the new terms-of-service and proof-of-work challenge
366
- // 5. Alice agrees to the new terms-of-service.
367
- // 6. Alice can now write to the DWN again.
368
- // 1. Alice is a registered tenant and is able to write to the DWN.
369
- // Shortcut to register Alice.
370
- registrationManager.recordTenantRegistration({
371
- did: alice.did,
372
- termsOfServiceHash: ProofOfWork.hashAsHexString([registrationManager.getTermsOfService()])
373
- });
374
- // Sanity test that Alice can write to the DWN after registration.
375
- const write1 = await generateRecordsWriteJsonRpcRequest(alice);
376
- const write1Response = await fetch(dwnMessageEndpoint, {
377
- method: 'POST',
378
- headers: {
379
- 'dwn-request': JSON.stringify(write1.jsonRpcRequest),
380
- },
381
- body: new Blob([write1.dataBytes]),
382
- });
383
- const write1ResponseBody = await write1Response.json();
384
- expect(write1Response.status).to.equal(200);
385
- expect(write1ResponseBody.result.reply.status.code).to.equal(202);
386
- // 2. DWN server administrator updates the terms-of-service.
387
- const newTermsOfService = 'new terms of service';
388
- registrationManager.updateTermsOfService(newTermsOfService);
389
- // 3. Alice no longer can write to the DWN because she has not agreed to the new terms-of-service.
390
- const write2 = await generateRecordsWriteJsonRpcRequest(alice);
391
- const write2Response = await fetch(dwnMessageEndpoint, {
392
- method: 'POST',
393
- headers: {
394
- 'dwn-request': JSON.stringify(write2.jsonRpcRequest),
395
- },
396
- body: new Blob([write2.dataBytes]),
397
- });
398
- const write2ResponseBody = await write2Response.json();
399
- expect(write2Response.status).to.equal(200);
400
- expect(write2ResponseBody.result.reply.status.code).to.equal(401);
401
- expect(write2ResponseBody.result.reply.status.detail).to.equal('Agreed terms-of-service is outdated.');
402
- // 4. Alice fetches the new terms-of-service and proof-of-work challenge
403
- const termsOfServiceGetResponse = await fetch(termsOfUseEndpoint, {
404
- method: 'GET',
405
- });
406
- const termsOfServiceFetched = await termsOfServiceGetResponse.text();
407
- expect(termsOfServiceGetResponse.status).to.equal(200);
408
- expect(termsOfServiceFetched).to.equal(newTermsOfService);
409
- const proofOfWorkChallengeGetResponse = await fetch(proofOfWorkEndpoint, {
410
- method: 'GET',
411
- });
412
- const { challengeNonce, maximumAllowedHashValue } = await proofOfWorkChallengeGetResponse.json();
413
- // 5. Alice agrees to the new terms-of-service.
414
- const registrationData = {
415
- did: alice.did,
416
- termsOfServiceHash: ProofOfWork.hashAsHexString([newTermsOfService]),
417
- };
418
- const responseNonce = ProofOfWork.findQualifiedResponseNonce({
419
- challengeNonce,
420
- maximumAllowedHashValue,
421
- requestData: JSON.stringify(registrationData),
422
- });
423
- const registrationRequest = {
424
- registrationData,
425
- proofOfWork: {
426
- challengeNonce,
427
- responseNonce,
428
- },
429
- };
430
- const registrationResponse = await fetch(registrationEndpoint, {
431
- method: 'POST',
432
- headers: { 'Content-Type': 'application/json' },
433
- body: JSON.stringify(registrationRequest),
434
- });
435
- expect(registrationResponse.status).to.equal(200);
436
- // 6. Alice can now write to the DWN again.
437
- const { jsonRpcRequest, dataBytes } = await generateRecordsWriteJsonRpcRequest(alice);
438
- const write3Response = await fetch(dwnMessageEndpoint, {
439
- method: 'POST',
440
- headers: {
441
- 'dwn-request': JSON.stringify(jsonRpcRequest),
442
- },
443
- body: new Blob([dataBytes]),
444
- });
445
- const write3ResponseBody = await write3Response.json();
446
- expect(write3Response.status).to.equal(200);
447
- expect(write3ResponseBody.result.reply.status.code).to.equal(202);
448
- });
449
- it('should initialize ProofOfWorkManager with challenge nonce seed if given.', async function () {
450
- await dwnServer.stop();
451
- const registrationProofOfWorkSeed = randomBytes(32).toString('hex');
452
- const configWithProofOfWorkSeed = {
453
- ...dwnServerConfig,
454
- registrationStoreUrl: 'sqlite://',
455
- registrationProofOfWorkEnabled: true,
456
- registrationProofOfWorkSeed,
457
- };
458
- dwnServer = new DwnServer({ config: configWithProofOfWorkSeed });
459
- await dwnServer.start();
460
- expect(dwnServer.registrationManager['proofOfWorkManager']['challengeSeed']).to.equal(registrationProofOfWorkSeed);
461
- });
462
- it('should allow tenant registration to be turned off to allow all DWN messages through.', async () => {
463
- await dwnServer.stop();
464
- // CRITICAL: We need to create a custom DID resolver that does not use a LevelDB based cache (which is the default cache used in `DWN`)
465
- // otherwise we will receive a `Database is not open` coming from LevelDB.
466
- // This is likely due to the fact that LevelDB is the default cache used in `DWN`, and we have tests creating default DWN instances,
467
- // so here we have to create a DWN that does not use the same LevelDB cache to avoid hitting LevelDB locked issues.
468
- // Long term we should investigate and unify approach of DWN instantiation taken by tests to avoid this "workaround" entirely.
469
- const didResolver = new UniversalResolver({
470
- didResolvers: [DidDht, DidKey],
471
- });
472
- // Scenario:
473
- // 1. There is a DWN that does not require tenant registration.
474
- // 2. Alice can write to the DWN without registering as a tenant.
475
- const configClone = {
476
- ...dwnServerConfig,
477
- registrationStoreUrl: '', // set to empty to disable tenant registration
478
- port: 3002,
479
- registrationProofOfWorkEnabled: false,
480
- termsOfServiceFilePath: undefined,
481
- };
482
- dwnServer = new DwnServer({ config: configClone, didResolver });
483
- await dwnServer.start();
484
- const { jsonRpcRequest, dataBytes } = await generateRecordsWriteJsonRpcRequest(alice);
485
- const writeResponse = await fetch('http://localhost:3002', {
486
- method: 'POST',
487
- headers: {
488
- 'dwn-request': JSON.stringify(jsonRpcRequest),
489
- },
490
- body: new Blob([dataBytes]),
491
- });
492
- const writeResponseBody = await writeResponse.json();
493
- expect(writeResponse.status).to.equal(200);
494
- expect(writeResponseBody.result.reply.status.code).to.equal(202);
495
- });
496
- });
497
- async function generateRecordsWriteJsonRpcRequest(persona) {
498
- const { recordsWrite, dataStream } = await createRecordsWriteMessage(persona);
499
- const requestId = uuidv4();
500
- const jsonRpcRequest = createJsonRpcRequest(requestId, 'dwn.processMessage', {
501
- message: recordsWrite.toJSON(),
502
- target: persona.did,
503
- });
504
- const dataBytes = await DataStream.toBytes(dataStream);
505
- return { jsonRpcRequest, dataBytes };
506
- }
507
- //# sourceMappingURL=registration.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registration.spec.js","sourceRoot":"","sources":["../../../../tests/scenarios/registration.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=web5-connect.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web5-connect.spec.d.ts","sourceRoot":"","sources":["../../../../tests/scenarios/web5-connect.spec.ts"],"names":[],"mappings":""}