spec-3nweb-server 1.8.4 → 1.8.6

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 (324) hide show
  1. package/.gitlab-ci-linux.yml +50 -0
  2. package/.gitlab-ci-mac.yml +29 -0
  3. package/.gitlab-ci-windows.yml +29 -0
  4. package/.gitlab-ci.yml +63 -0
  5. package/build/3nstorage/routes/owner/archive-obj-version.js +2 -2
  6. package/build/3nstorage/routes/owner/cancel-trans.js +2 -2
  7. package/build/3nstorage/routes/owner/delete-obj.js +2 -2
  8. package/build/3nstorage/routes/owner/get-current-obj.js +3 -4
  9. package/build/3nstorage/routes/owner/param-setter.js +2 -6
  10. package/build/asmail/routes/config/param-setter.js +2 -2
  11. package/build/asmail/routes/delivery/finalize-delivery.js +2 -2
  12. package/build/asmail/routes/delivery/put-obj.js +2 -2
  13. package/build/asmail/routes/delivery/sender-authorization.js +2 -2
  14. package/build/asmail/routes/retrieval/remove-message.js +2 -2
  15. package/build/cli/signup-cmd.js +0 -1
  16. package/build/lib-server/routes/sessions/close.js +2 -2
  17. package/build/lib-server/routes/sessions/mid-auth.js +2 -5
  18. package/build/main.js +12 -15
  19. package/build/mock/tls-options.js +46 -44
  20. package/build/signup/routes/add.js +4 -4
  21. package/build/tests/admin-proto/signup.d.ts +1 -0
  22. package/build/tests/admin-proto/signup.js +235 -0
  23. package/build/tests/jasmine.d.ts +1 -0
  24. package/build/tests/jasmine.js +32 -0
  25. package/build/tests/libs-for-tests/3nstorage.d.ts +22 -0
  26. package/build/tests/libs-for-tests/3nstorage.js +123 -0
  27. package/build/tests/libs-for-tests/asmail.d.ts +22 -0
  28. package/build/tests/libs-for-tests/asmail.js +179 -0
  29. package/build/tests/libs-for-tests/assert.d.ts +1 -0
  30. package/build/tests/libs-for-tests/assert.js +26 -0
  31. package/build/tests/libs-for-tests/async-jasmine.d.ts +7 -0
  32. package/build/tests/libs-for-tests/async-jasmine.js +77 -0
  33. package/build/tests/libs-for-tests/bytes-equal.d.ts +1 -0
  34. package/build/tests/libs-for-tests/bytes-equal.js +34 -0
  35. package/build/tests/libs-for-tests/json-copy.d.ts +1 -0
  36. package/build/tests/libs-for-tests/json-copy.js +45 -0
  37. package/build/tests/libs-for-tests/json-equal.d.ts +4 -0
  38. package/build/tests/libs-for-tests/json-equal.js +67 -0
  39. package/build/tests/libs-for-tests/mailerid.d.ts +13 -0
  40. package/build/tests/libs-for-tests/mailerid.js +114 -0
  41. package/build/tests/libs-for-tests/pkl.d.ts +28 -0
  42. package/build/tests/libs-for-tests/pkl.js +89 -0
  43. package/build/tests/libs-for-tests/server-components/3nstorage.d.ts +20 -0
  44. package/build/tests/libs-for-tests/server-components/3nstorage.js +200 -0
  45. package/build/tests/libs-for-tests/server-components/admin.d.ts +6 -0
  46. package/build/tests/libs-for-tests/server-components/admin.js +43 -0
  47. package/build/tests/libs-for-tests/server-components/asmail.d.ts +16 -0
  48. package/build/tests/libs-for-tests/server-components/asmail.js +143 -0
  49. package/build/tests/libs-for-tests/server-components/component.d.ts +13 -0
  50. package/build/tests/libs-for-tests/server-components/component.js +77 -0
  51. package/build/tests/libs-for-tests/server-components/mailerid.d.ts +10 -0
  52. package/build/tests/libs-for-tests/server-components/mailerid.js +103 -0
  53. package/build/tests/libs-for-tests/server-runner.d.ts +15 -0
  54. package/build/tests/libs-for-tests/server-runner.js +69 -0
  55. package/build/tests/libs-for-tests/spec-assembly.d.ts +6 -0
  56. package/build/tests/libs-for-tests/spec-assembly.js +55 -0
  57. package/build/tests/libs-for-tests/ws-utils.d.ts +3 -0
  58. package/build/tests/libs-for-tests/ws-utils.js +59 -0
  59. package/build/tests/libs-for-tests/xhr-utils.d.ts +61 -0
  60. package/build/tests/libs-for-tests/xhr-utils.js +154 -0
  61. package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.d.ts +2 -0
  62. package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.js +84 -0
  63. package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.d.ts +2 -0
  64. package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.js +78 -0
  65. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.d.ts +2 -0
  66. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.js +83 -0
  67. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.d.ts +2 -0
  68. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.js +77 -0
  69. package/build/tests/protocols/3nstorage/owner/specs/delete-obj.d.ts +2 -0
  70. package/build/tests/protocols/3nstorage/owner/specs/delete-obj.js +75 -0
  71. package/build/tests/protocols/3nstorage/owner/specs/events.d.ts +2 -0
  72. package/build/tests/protocols/3nstorage/owner/specs/events.js +91 -0
  73. package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.d.ts +2 -0
  74. package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.js +269 -0
  75. package/build/tests/protocols/3nstorage/owner/specs/get-current-root.d.ts +2 -0
  76. package/build/tests/protocols/3nstorage/owner/specs/get-current-root.js +262 -0
  77. package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.d.ts +2 -0
  78. package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.js +79 -0
  79. package/build/tests/protocols/3nstorage/owner/specs/get-root-status.d.ts +2 -0
  80. package/build/tests/protocols/3nstorage/owner/specs/get-root-status.js +72 -0
  81. package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.d.ts +2 -0
  82. package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.js +287 -0
  83. package/build/tests/protocols/3nstorage/owner/specs/put-current-root.d.ts +2 -0
  84. package/build/tests/protocols/3nstorage/owner/specs/put-current-root.js +274 -0
  85. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.d.ts +2 -0
  86. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.js +73 -0
  87. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.d.ts +2 -0
  88. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.js +72 -0
  89. package/build/tests/protocols/3nstorage/owner/test-utils.d.ts +14 -0
  90. package/build/tests/protocols/3nstorage/owner/test-utils.js +54 -0
  91. package/build/tests/protocols/3nstorage/owner.d.ts +1 -0
  92. package/build/tests/protocols/3nstorage/owner.js +138 -0
  93. package/build/tests/protocols/asmail/config.d.ts +1 -0
  94. package/build/tests/protocols/asmail/config.js +117 -0
  95. package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.d.ts +2 -0
  96. package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.js +60 -0
  97. package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.d.ts +2 -0
  98. package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.js +68 -0
  99. package/build/tests/protocols/asmail/delivery/specs/put-metadata.d.ts +2 -0
  100. package/build/tests/protocols/asmail/delivery/specs/put-metadata.js +83 -0
  101. package/build/tests/protocols/asmail/delivery/specs/put-obj.d.ts +2 -0
  102. package/build/tests/protocols/asmail/delivery/specs/put-obj.js +123 -0
  103. package/build/tests/protocols/asmail/delivery/specs/restart-session.d.ts +2 -0
  104. package/build/tests/protocols/asmail/delivery/specs/restart-session.js +79 -0
  105. package/build/tests/protocols/asmail/delivery/specs/start-session.d.ts +2 -0
  106. package/build/tests/protocols/asmail/delivery/specs/start-session.js +64 -0
  107. package/build/tests/protocols/asmail/delivery/test-utils.d.ts +16 -0
  108. package/build/tests/protocols/asmail/delivery/test-utils.js +46 -0
  109. package/build/tests/protocols/asmail/delivery.d.ts +1 -0
  110. package/build/tests/protocols/asmail/delivery.js +46 -0
  111. package/build/tests/protocols/asmail/retrieval/specs/events.d.ts +2 -0
  112. package/build/tests/protocols/asmail/retrieval/specs/events.js +62 -0
  113. package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.d.ts +2 -0
  114. package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.js +70 -0
  115. package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.d.ts +2 -0
  116. package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.js +166 -0
  117. package/build/tests/protocols/asmail/retrieval/specs/list-messages.d.ts +2 -0
  118. package/build/tests/protocols/asmail/retrieval/specs/list-messages.js +96 -0
  119. package/build/tests/protocols/asmail/retrieval/specs/remove-message.d.ts +2 -0
  120. package/build/tests/protocols/asmail/retrieval/specs/remove-message.js +66 -0
  121. package/build/tests/protocols/asmail/retrieval/test-utils.d.ts +17 -0
  122. package/build/tests/protocols/asmail/retrieval/test-utils.js +46 -0
  123. package/build/tests/protocols/asmail/retrieval.d.ts +1 -0
  124. package/build/tests/protocols/asmail/retrieval.js +92 -0
  125. package/build/tests/protocols/mailerid.d.ts +1 -0
  126. package/build/tests/protocols/mailerid.js +210 -0
  127. package/build/tests/shared-checks/check-mid-login.d.ts +2 -0
  128. package/build/tests/shared-checks/check-mid-login.js +131 -0
  129. package/build/tests/shared-checks/requests.d.ts +20 -0
  130. package/build/tests/shared-checks/requests.js +123 -0
  131. package/package.json +1 -1
  132. package/packing/create-deb.sh +57 -0
  133. package/packing/deb/lib/systemd/system/3nweb.service +11 -0
  134. package/packing/deb/postinst +44 -0
  135. package/packing/deb/usr/share/doc/3nweb-server/conf-for-postinstall.yaml +19 -0
  136. package/packing/deb/usr/share/doc/3nweb-server/copyright +22 -0
  137. package/publish-task.sh +10 -0
  138. package/push-to-github.sh +105 -0
  139. package/ts-code/3nstorage/3nstorage-app.ts +99 -0
  140. package/ts-code/3nstorage/owner.ts +178 -0
  141. package/ts-code/3nstorage/resources/sessions.ts +37 -0
  142. package/ts-code/3nstorage/resources/store.ts +896 -0
  143. package/ts-code/3nstorage/resources/users.ts +258 -0
  144. package/ts-code/3nstorage/routes/owner/archive-obj-version.ts +73 -0
  145. package/ts-code/3nstorage/routes/owner/cancel-trans.ts +58 -0
  146. package/ts-code/3nstorage/routes/owner/delete-obj.ts +103 -0
  147. package/ts-code/3nstorage/routes/owner/get-archived-obj-ver.ts +111 -0
  148. package/ts-code/3nstorage/routes/owner/get-current-obj.ts +122 -0
  149. package/ts-code/3nstorage/routes/owner/get-obj-status.ts +55 -0
  150. package/ts-code/3nstorage/routes/owner/param-getter.ts +51 -0
  151. package/ts-code/3nstorage/routes/owner/param-setter.ts +50 -0
  152. package/ts-code/3nstorage/routes/owner/put-current-obj.ts +284 -0
  153. package/ts-code/3nstorage/routes/owner/session-params.ts +49 -0
  154. package/ts-code/3nstorage/shared.ts +43 -0
  155. package/ts-code/asmail/asmail-app.ts +91 -0
  156. package/ts-code/asmail/config.ts +96 -0
  157. package/ts-code/asmail/delivery.ts +94 -0
  158. package/ts-code/asmail/resources/delivery-sessions.ts +118 -0
  159. package/ts-code/asmail/resources/inbox.ts +696 -0
  160. package/ts-code/asmail/resources/recipients.ts +495 -0
  161. package/ts-code/asmail/resources/sessions.ts +37 -0
  162. package/ts-code/asmail/retrieval.ts +96 -0
  163. package/ts-code/asmail/routes/config/param-getter.ts +49 -0
  164. package/ts-code/asmail/routes/config/param-setter.ts +49 -0
  165. package/ts-code/asmail/routes/delivery/finalize-delivery.ts +50 -0
  166. package/ts-code/asmail/routes/delivery/pre-flight.ts +132 -0
  167. package/ts-code/asmail/routes/delivery/provide-recipient-pubkey.ts +58 -0
  168. package/ts-code/asmail/routes/delivery/put-metadata.ts +94 -0
  169. package/ts-code/asmail/routes/delivery/put-obj.ts +166 -0
  170. package/ts-code/asmail/routes/delivery/restart-session.ts +130 -0
  171. package/ts-code/asmail/routes/delivery/sender-authorization.ts +81 -0
  172. package/ts-code/asmail/routes/delivery/start-session.ts +151 -0
  173. package/ts-code/asmail/routes/retrieval/get-message-meta.ts +53 -0
  174. package/ts-code/asmail/routes/retrieval/get-message-obj.ts +109 -0
  175. package/ts-code/asmail/routes/retrieval/list-messages.ts +70 -0
  176. package/ts-code/asmail/routes/retrieval/remove-message.ts +47 -0
  177. package/ts-code/cli/index.ts +82 -0
  178. package/ts-code/cli/run-cmd.ts +81 -0
  179. package/ts-code/cli/show-sample-config.ts +78 -0
  180. package/ts-code/cli/signup-cmd.ts +229 -0
  181. package/ts-code/cli/user-cmd.ts +68 -0
  182. package/ts-code/cli/utils.ts +105 -0
  183. package/ts-code/config/default-confs.ts +22 -0
  184. package/ts-code/config/from-yaml.ts +35 -0
  185. package/ts-code/config/letsencrypt.ts +77 -0
  186. package/ts-code/config/signup.ts +137 -0
  187. package/ts-code/lib-common/admin-api/signup.ts +120 -0
  188. package/ts-code/lib-common/assert.ts +22 -0
  189. package/ts-code/lib-common/async-fs-node.ts +656 -0
  190. package/ts-code/lib-common/buffer-utils.ts +124 -0
  191. package/ts-code/lib-common/byte-streaming/common.ts +166 -0
  192. package/ts-code/lib-common/bytes-equal.ts +25 -0
  193. package/ts-code/lib-common/canonical-address.ts +92 -0
  194. package/ts-code/lib-common/exceptions/error.ts +44 -0
  195. package/ts-code/lib-common/exceptions/file.ts +84 -0
  196. package/ts-code/lib-common/exceptions/http.ts +69 -0
  197. package/ts-code/lib-common/ipc/generic-ipc.ts +750 -0
  198. package/ts-code/lib-common/ipc/ws-ipc.ts +117 -0
  199. package/ts-code/lib-common/json-equal.ts +55 -0
  200. package/ts-code/lib-common/json-utils.ts +130 -0
  201. package/ts-code/lib-common/jwkeys.ts +246 -0
  202. package/ts-code/lib-common/map-of-sets.ts +60 -0
  203. package/ts-code/lib-common/mid-sigs-NaCl-Ed.ts +677 -0
  204. package/ts-code/lib-common/objs-on-disk/file-layout.ts +480 -0
  205. package/ts-code/lib-common/objs-on-disk/obj-file.ts +325 -0
  206. package/ts-code/lib-common/objs-on-disk/utils.ts +201 -0
  207. package/ts-code/lib-common/objs-on-disk/v1-obj-file-format.ts +329 -0
  208. package/ts-code/lib-common/processes.ts +501 -0
  209. package/ts-code/lib-common/random-node.ts +79 -0
  210. package/ts-code/lib-common/service-api/3nstorage/owner.ts +559 -0
  211. package/ts-code/lib-common/service-api/3nstorage/root-route.ts +22 -0
  212. package/ts-code/lib-common/service-api/asmail/config.ts +144 -0
  213. package/ts-code/lib-common/service-api/asmail/delivery.ts +250 -0
  214. package/ts-code/lib-common/service-api/asmail/retrieval.ts +238 -0
  215. package/ts-code/lib-common/service-api/asmail/root-route.ts +22 -0
  216. package/ts-code/lib-common/service-api/ipc-api.ts +44 -0
  217. package/ts-code/lib-common/service-api/locker.ts +44 -0
  218. package/ts-code/lib-common/service-api/mailer-id/login.ts +80 -0
  219. package/ts-code/lib-common/service-api/mailer-id/provisioning.ts +64 -0
  220. package/ts-code/lib-common/service-api/mailer-id/root-route.ts +25 -0
  221. package/ts-code/lib-common/service-api/pub-key-login.ts +75 -0
  222. package/ts-code/lib-common/service-api/web-socket-base.ts +87 -0
  223. package/ts-code/lib-common/session-encryptor.ts +54 -0
  224. package/ts-code/lib-common/time-window-cache.ts +74 -0
  225. package/ts-code/lib-common/transferable.d.ts +30 -0
  226. package/ts-code/lib-server/conf-util.ts +35 -0
  227. package/ts-code/lib-server/mid-access.ts +45 -0
  228. package/ts-code/lib-server/middleware/body-parsers.ts +248 -0
  229. package/ts-code/lib-server/middleware/error-handler.ts +79 -0
  230. package/ts-code/lib-server/pkl-access.ts +46 -0
  231. package/ts-code/lib-server/resources/dns.ts +151 -0
  232. package/ts-code/lib-server/resources/mailerid-authorizer.ts +115 -0
  233. package/ts-code/lib-server/resources/mem-backed-sessions-factory.ts +132 -0
  234. package/ts-code/lib-server/resources/server-data-folders.ts +160 -0
  235. package/ts-code/lib-server/resources/server-key-for-pkl-challenge.ts +41 -0
  236. package/ts-code/lib-server/resources/sessions.ts +232 -0
  237. package/ts-code/lib-server/resources/user-files.ts +147 -0
  238. package/ts-code/lib-server/routes/pub-key-login/complete-exchange.ts +63 -0
  239. package/ts-code/lib-server/routes/pub-key-login/start-exchange.ts +189 -0
  240. package/ts-code/lib-server/routes/sessions/close.ts +27 -0
  241. package/ts-code/lib-server/routes/sessions/mid-auth.ts +77 -0
  242. package/ts-code/lib-server/routes/sessions/start.ts +116 -0
  243. package/ts-code/lib-server/web-sockets/app.ts +339 -0
  244. package/ts-code/lib-server/web-sockets/server-events.ts +63 -0
  245. package/ts-code/lib.ts +29 -0
  246. package/ts-code/locker/locker-app.ts +60 -0
  247. package/ts-code/locker/resources/lockers.ts +17 -0
  248. package/ts-code/locker/resources/sessions.ts +37 -0
  249. package/ts-code/locker/routes/create-locker.ts +47 -0
  250. package/ts-code/mailerId/mailerId-app.ts +107 -0
  251. package/ts-code/mailerId/resources/certifier.ts +181 -0
  252. package/ts-code/mailerId/resources/sessions.ts +44 -0
  253. package/ts-code/mailerId/resources/users.ts +88 -0
  254. package/ts-code/mailerId/routes/certify.ts +68 -0
  255. package/ts-code/main.ts +304 -0
  256. package/ts-code/mock/dns.ts +106 -0
  257. package/ts-code/mock/mock-as-child-proc.ts +130 -0
  258. package/ts-code/mock/node-child-ipc.ts +69 -0
  259. package/ts-code/mock/run-in-proc.ts +111 -0
  260. package/ts-code/mock/tls-options.ts +73 -0
  261. package/ts-code/services.ts +138 -0
  262. package/ts-code/signup/resources/users.ts +429 -0
  263. package/ts-code/signup/routes/add.ts +65 -0
  264. package/ts-code/signup/routes/get-available-addresses.ts +49 -0
  265. package/ts-code/signup/routes/get-available-domains.ts +45 -0
  266. package/ts-code/signup/signup-app.ts +54 -0
  267. package/ts-code/signup/signup-tokens.ts +148 -0
  268. package/ts-code/tests/admin-proto/signup.ts +277 -0
  269. package/ts-code/tests/jasmine.ts +37 -0
  270. package/ts-code/tests/libs-for-tests/3nstorage.ts +144 -0
  271. package/ts-code/tests/libs-for-tests/asmail.ts +220 -0
  272. package/ts-code/tests/libs-for-tests/assert.ts +22 -0
  273. package/ts-code/tests/libs-for-tests/async-jasmine.ts +89 -0
  274. package/ts-code/tests/libs-for-tests/bytes-equal.ts +25 -0
  275. package/ts-code/tests/libs-for-tests/json-copy.ts +38 -0
  276. package/ts-code/tests/libs-for-tests/json-equal.ts +55 -0
  277. package/ts-code/tests/libs-for-tests/mailerid.ts +123 -0
  278. package/ts-code/tests/libs-for-tests/pkl.ts +127 -0
  279. package/ts-code/tests/libs-for-tests/server-components/3nstorage.ts +206 -0
  280. package/ts-code/tests/libs-for-tests/server-components/admin.ts +49 -0
  281. package/ts-code/tests/libs-for-tests/server-components/asmail.ts +152 -0
  282. package/ts-code/tests/libs-for-tests/server-components/component.ts +90 -0
  283. package/ts-code/tests/libs-for-tests/server-components/mailerid.ts +114 -0
  284. package/ts-code/tests/libs-for-tests/server-runner.ts +82 -0
  285. package/ts-code/tests/libs-for-tests/spec-assembly.ts +60 -0
  286. package/ts-code/tests/libs-for-tests/ws-utils.ts +61 -0
  287. package/ts-code/tests/libs-for-tests/xhr-utils.ts +179 -0
  288. package/ts-code/tests/protocols/3nstorage/owner/specs/archive-obj-ver.ts +100 -0
  289. package/ts-code/tests/protocols/3nstorage/owner/specs/archive-root-ver.ts +91 -0
  290. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.ts +99 -0
  291. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.ts +90 -0
  292. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-obj.ts +84 -0
  293. package/ts-code/tests/protocols/3nstorage/owner/specs/events.ts +125 -0
  294. package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-obj.ts +298 -0
  295. package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-root.ts +290 -0
  296. package/ts-code/tests/protocols/3nstorage/owner/specs/get-obj-status.ts +88 -0
  297. package/ts-code/tests/protocols/3nstorage/owner/specs/get-root-status.ts +80 -0
  298. package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-obj.ts +366 -0
  299. package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-root.ts +329 -0
  300. package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel-root.ts +86 -0
  301. package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel.ts +86 -0
  302. package/ts-code/tests/protocols/3nstorage/owner/test-utils.ts +72 -0
  303. package/ts-code/tests/protocols/3nstorage/owner.ts +198 -0
  304. package/ts-code/tests/protocols/asmail/config.ts +172 -0
  305. package/ts-code/tests/protocols/asmail/delivery/specs/finalize-delivery.ts +69 -0
  306. package/ts-code/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.ts +88 -0
  307. package/ts-code/tests/protocols/asmail/delivery/specs/put-metadata.ts +102 -0
  308. package/ts-code/tests/protocols/asmail/delivery/specs/put-obj.ts +156 -0
  309. package/ts-code/tests/protocols/asmail/delivery/specs/restart-session.ts +97 -0
  310. package/ts-code/tests/protocols/asmail/delivery/specs/start-session.ts +79 -0
  311. package/ts-code/tests/protocols/asmail/delivery/test-utils.ts +64 -0
  312. package/ts-code/tests/protocols/asmail/delivery.ts +56 -0
  313. package/ts-code/tests/protocols/asmail/retrieval/specs/events.ts +78 -0
  314. package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-meta.ts +80 -0
  315. package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-obj.ts +197 -0
  316. package/ts-code/tests/protocols/asmail/retrieval/specs/list-messages.ts +110 -0
  317. package/ts-code/tests/protocols/asmail/retrieval/specs/remove-message.ts +74 -0
  318. package/ts-code/tests/protocols/asmail/retrieval/test-utils.ts +60 -0
  319. package/ts-code/tests/protocols/asmail/retrieval.ts +115 -0
  320. package/ts-code/tests/protocols/mailerid.ts +271 -0
  321. package/ts-code/tests/shared-checks/check-mid-login.ts +164 -0
  322. package/ts-code/tests/shared-checks/requests.ts +135 -0
  323. package/ts-code/tsconfig.json +11 -0
  324. package/ts-code/web3n.d.ts +1068 -0
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016 - 2017, 2025 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ const async_jasmine_1 = require("../../../../libs-for-tests/async-jasmine");
21
+ const test_utils_1 = require("../test-utils");
22
+ const url_1 = require("url");
23
+ const retrieval_1 = require("../../../../../lib-common/service-api/asmail/retrieval");
24
+ const xhr_utils_1 = require("../../../../libs-for-tests/xhr-utils");
25
+ const requests_1 = require("../../../../shared-checks/requests");
26
+ const json_copy_1 = require("../../../../libs-for-tests/json-copy");
27
+ const bytes_equal_1 = require("../../../../libs-for-tests/bytes-equal");
28
+ const obj1 = test_utils_1.msg.msgObjs[0];
29
+ const obj2 = test_utils_1.msg.msgObjs[1];
30
+ exports.specs = {
31
+ description: `Request to get message object`
32
+ };
33
+ function checkReplyExpectation(rep, obj, headerPresent, expectedSegsBytes) {
34
+ // status
35
+ expect(rep.status).withContext('status for returned bytes').toBe(retrieval_1.msgObj.SC.ok);
36
+ // object's header length http header
37
+ const headerLen = obj.header.length;
38
+ if (headerPresent) {
39
+ expect(parseInt(rep.headers.get(retrieval_1.HTTP_HEADER.objHeaderLength))).withContext('object header size must be given in the reply header').toBe(headerLen);
40
+ }
41
+ // segments length header
42
+ expect(parseInt(rep.headers.get(retrieval_1.HTTP_HEADER.objSegmentsLength))).withContext('object segments size must be given in the reply header').toBe(obj.segs.length);
43
+ // check body
44
+ if (headerPresent) {
45
+ expect((0, bytes_equal_1.bytesEqual)(rep.data.subarray(0, headerLen), obj.header)).withContext('reply should have header bytes at the front').toBe(true);
46
+ expect((0, bytes_equal_1.bytesEqual)(rep.data.subarray(headerLen), expectedSegsBytes)).withContext('reply should have proper segments bytes, following header bytes').toBe(true);
47
+ }
48
+ else {
49
+ expect((0, bytes_equal_1.bytesEqual)(rep.data, expectedSegsBytes)).withContext('reply should have proper segments bytes').toBe(true);
50
+ }
51
+ }
52
+ exports.specs.definition = (setup) => (() => {
53
+ let asmailServer;
54
+ let retrievalUrl;
55
+ let deliveryUrl;
56
+ let user1;
57
+ let reqOpts;
58
+ let msgId;
59
+ (0, async_jasmine_1.beforeEachAsync)(async () => {
60
+ asmailServer = setup().asmailServer;
61
+ retrievalUrl = await asmailServer.getRetrievalUrl();
62
+ deliveryUrl = await asmailServer.getDeliveryUrl();
63
+ user1 = setup().user1;
64
+ msgId = await (0, test_utils_1.sendMsg)(deliveryUrl, user1.id, test_utils_1.msg);
65
+ const sessionId = await (0, test_utils_1.startSession)(user1, retrievalUrl);
66
+ reqOpts = {
67
+ url: (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj1.objId, { header: true })),
68
+ method: 'GET',
69
+ responseType: 'arraybuffer',
70
+ sessionId,
71
+ responseHeaders: [retrieval_1.HTTP_HEADER.objHeaderLength,
72
+ retrieval_1.HTTP_HEADER.objSegmentsLength]
73
+ };
74
+ });
75
+ (0, async_jasmine_1.itAsync)('fails when message does not exist', async () => {
76
+ const opts = (0, json_copy_1.copy)(reqOpts);
77
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd('unknown-message', 'some-obj'));
78
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
79
+ expect(rep.status).toBe(retrieval_1.msgObj.SC.unknownMsgOrObj);
80
+ });
81
+ (0, async_jasmine_1.itAsync)('fails when object does not exist', async () => {
82
+ const unknownObj = 'unknown-obj';
83
+ const opts = (0, json_copy_1.copy)(reqOpts);
84
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, unknownObj));
85
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
86
+ expect(rep.status).toBe(retrieval_1.msgObj.SC.unknownMsgOrObj);
87
+ });
88
+ (0, async_jasmine_1.itAsync)('will not accept bad parameters', async () => {
89
+ const opts = (0, json_copy_1.copy)(reqOpts);
90
+ const objId = test_utils_1.msg.msgObjs[0].objId;
91
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, objId, { ofs: -34 }));
92
+ let rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
93
+ expect(rep.status).toBe(retrieval_1.ERR_SC.malformed);
94
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, objId, { limit: -34 }));
95
+ rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
96
+ expect(rep.status).toBe(retrieval_1.ERR_SC.malformed);
97
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, objId, { ofs: 10, limit: 0 }));
98
+ rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
99
+ expect(rep.status).toBe(retrieval_1.ERR_SC.malformed);
100
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, objId, { header: true, ofs: 10 }));
101
+ rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
102
+ expect(rep.status).toBe(retrieval_1.ERR_SC.malformed);
103
+ });
104
+ (0, async_jasmine_1.itAsync)('returns header and all segments', async () => {
105
+ const opts = (0, json_copy_1.copy)(reqOpts);
106
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj1.objId, { header: true }));
107
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
108
+ checkReplyExpectation(rep, obj1, true, obj1.segs);
109
+ });
110
+ (0, async_jasmine_1.itAsync)('returns header without segments', async () => {
111
+ const opts = (0, json_copy_1.copy)(reqOpts);
112
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj1.objId, { header: true, limit: 0 }));
113
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
114
+ checkReplyExpectation(rep, obj1, true, new Uint8Array(0));
115
+ });
116
+ (0, async_jasmine_1.itAsync)('returns all segments without header', async () => {
117
+ const opts = (0, json_copy_1.copy)(reqOpts);
118
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj1.objId));
119
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
120
+ checkReplyExpectation(rep, obj1, false, obj1.segs);
121
+ });
122
+ (0, async_jasmine_1.itAsync)('returns chunk, when offset and limit are given', async () => {
123
+ const opts = (0, json_copy_1.copy)(reqOpts);
124
+ // with non-overflowing limit
125
+ for (let offset = 0; offset <= obj2.segs.length; offset += 512) {
126
+ const chunkLen = Math.min(512, obj2.segs.length - offset);
127
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj2.objId, { ofs: offset, limit: chunkLen }));
128
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
129
+ checkReplyExpectation(rep, obj2, false, obj2.segs.subarray(offset, offset + chunkLen));
130
+ }
131
+ // with overflowing limit
132
+ const offset = obj2.segs.length - 100;
133
+ const requestedLen = 300;
134
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj2.objId, { ofs: offset, limit: requestedLen }));
135
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
136
+ checkReplyExpectation(rep, obj2, false, obj2.segs.subarray(offset));
137
+ });
138
+ (0, async_jasmine_1.itAsync)('reads segments from start, when offset is not given', async () => {
139
+ const opts = (0, json_copy_1.copy)(reqOpts);
140
+ // with non-overflowing length
141
+ const chunkLen = 512;
142
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj2.objId, { limit: chunkLen }));
143
+ let rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
144
+ checkReplyExpectation(rep, obj2, false, obj2.segs.subarray(0, chunkLen));
145
+ // with overflowing length
146
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj2.objId, { limit: obj2.segs.length + 300 }));
147
+ rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
148
+ checkReplyExpectation(rep, obj2, false, obj2.segs);
149
+ });
150
+ (0, async_jasmine_1.itAsync)('reads segments to the end, when limit is not given', async () => {
151
+ const opts = (0, json_copy_1.copy)(reqOpts);
152
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj2.objId, { ofs: 1234 }));
153
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
154
+ checkReplyExpectation(rep, obj2, false, obj2.segs.subarray(1234));
155
+ });
156
+ (0, async_jasmine_1.itAsync)('no-bytes read', async () => {
157
+ const opts = (0, json_copy_1.copy)(reqOpts);
158
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.msgObj.genUrlEnd(msgId, obj2.objId, { ofs: obj2.segs.length, limit: 500 }));
159
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
160
+ checkReplyExpectation(rep, obj2, false, new Uint8Array(0));
161
+ });
162
+ (0, async_jasmine_1.itAsync)(`requires open session`, async () => {
163
+ const opts = (0, json_copy_1.copy)(reqOpts);
164
+ await (0, requests_1.expectNonAcceptanceOfBadSessionId)(opts);
165
+ });
166
+ });
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../test-utils';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016 - 2017б 2022 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ const async_jasmine_1 = require("../../../../libs-for-tests/async-jasmine");
21
+ const test_utils_1 = require("../test-utils");
22
+ const url_1 = require("url");
23
+ const retrieval_1 = require("../../../../../lib-common/service-api/asmail/retrieval");
24
+ const xhr_utils_1 = require("../../../../libs-for-tests/xhr-utils");
25
+ const requests_1 = require("../../../../shared-checks/requests");
26
+ const json_copy_1 = require("../../../../libs-for-tests/json-copy");
27
+ const asmail_1 = require("../../../../libs-for-tests/asmail");
28
+ exports.specs = {
29
+ description: `Request to list messages in inbox`
30
+ };
31
+ exports.specs.definition = (setup) => (() => {
32
+ let retrievalUrl;
33
+ let deliveryUrl;
34
+ let user1;
35
+ let reqOpts;
36
+ (0, async_jasmine_1.beforeEachAsync)(async () => {
37
+ retrievalUrl = await setup().asmailServer.getRetrievalUrl();
38
+ deliveryUrl = await setup().asmailServer.getDeliveryUrl();
39
+ user1 = setup().user1;
40
+ const sessionId = await (0, test_utils_1.startSession)(user1, retrievalUrl);
41
+ reqOpts = {
42
+ url: (0, url_1.resolve)(retrievalUrl, retrieval_1.listMsgs.EXPRESS_URL_END),
43
+ method: 'GET',
44
+ responseType: 'json',
45
+ sessionId
46
+ };
47
+ });
48
+ // TODO add to this route time limits for listing
49
+ (0, async_jasmine_1.itAsync)('lists messages in inbox', async () => {
50
+ const opts = (0, json_copy_1.copy)(reqOpts);
51
+ // some number of messages at the start of test
52
+ let rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
53
+ expect(rep.status).withContext('normal status reply').toBe(retrieval_1.listMsgs.SC.ok);
54
+ expect(Array.isArray(rep.data)).toBe(true);
55
+ const initNumOfMsgs = rep.data.length;
56
+ // add one message, and see a change
57
+ const msgId = await (0, test_utils_1.sendMsg)(deliveryUrl, user1.id, test_utils_1.msg);
58
+ rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
59
+ expect(rep.status).withContext('normal status reply').toBe(retrieval_1.listMsgs.SC.ok);
60
+ expect(Array.isArray(rep.data)).toBe(true);
61
+ expect(rep.data).toContain(msgId);
62
+ expect(rep.data.length).toBe(initNumOfMsgs + 1);
63
+ });
64
+ (0, async_jasmine_1.itAsync)(`requires open session`, async () => {
65
+ const opts = (0, json_copy_1.copy)(reqOpts);
66
+ await (0, requests_1.expectNonAcceptanceOfBadSessionId)(opts);
67
+ });
68
+ (0, async_jasmine_1.itAsync)(`doesn't list messages that ain't completely sent`, async () => {
69
+ const opts = (0, json_copy_1.copy)(reqOpts);
70
+ let lst = (await (0, xhr_utils_1.doBodylessRequest)(opts)).data;
71
+ const initMsgNum = lst.length;
72
+ // start prolonged message sending
73
+ const longSending = (0, asmail_1.msgSendingSteps)(deliveryUrl, user1.id, test_utils_1.msg);
74
+ const { value: msgId1 } = (await longSending.next());
75
+ lst = (await (0, xhr_utils_1.doBodylessRequest)(opts)).data;
76
+ expect(lst.length).toBe(initMsgNum);
77
+ expect(lst).not.toContain(msgId1);
78
+ // add one message completely before listing
79
+ const msgId2 = await (0, test_utils_1.sendMsg)(deliveryUrl, user1.id, test_utils_1.msg);
80
+ lst = (await (0, xhr_utils_1.doBodylessRequest)(opts)).data;
81
+ expect(lst.length).toBe(initMsgNum + 1);
82
+ expect(lst).toContain(msgId2);
83
+ let done;
84
+ do {
85
+ done = !!(await longSending.next()).done;
86
+ if (!done) {
87
+ expect((await (0, xhr_utils_1.doBodylessRequest)(opts)).data)
88
+ .not.toContain(msgId1);
89
+ }
90
+ } while (!done);
91
+ // listing message only when it is completely sent
92
+ lst = (await (0, xhr_utils_1.doBodylessRequest)(opts)).data;
93
+ expect(lst.length).toBe(initMsgNum + 2);
94
+ expect(lst).toContain(msgId1);
95
+ });
96
+ });
@@ -0,0 +1,2 @@
1
+ import { SpecDescribe } from '../test-utils';
2
+ export declare const specs: SpecDescribe;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016 - 2017, 2025 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.specs = void 0;
20
+ const async_jasmine_1 = require("../../../../libs-for-tests/async-jasmine");
21
+ const test_utils_1 = require("../test-utils");
22
+ const url_1 = require("url");
23
+ const retrieval_1 = require("../../../../../lib-common/service-api/asmail/retrieval");
24
+ const xhr_utils_1 = require("../../../../libs-for-tests/xhr-utils");
25
+ const requests_1 = require("../../../../shared-checks/requests");
26
+ const json_copy_1 = require("../../../../libs-for-tests/json-copy");
27
+ exports.specs = {
28
+ description: `Request to remove message from inbox`
29
+ };
30
+ exports.specs.definition = (setup) => (() => {
31
+ let asmailServer;
32
+ let retrievalUrl;
33
+ let deliveryUrl;
34
+ let user1;
35
+ let reqOpts;
36
+ (0, async_jasmine_1.beforeEachAsync)(async () => {
37
+ asmailServer = setup().asmailServer;
38
+ retrievalUrl = await asmailServer.getRetrievalUrl();
39
+ deliveryUrl = await asmailServer.getDeliveryUrl();
40
+ user1 = setup().user1;
41
+ const sessionId = await (0, test_utils_1.startSession)(user1, retrievalUrl);
42
+ reqOpts = {
43
+ url: (0, url_1.resolve)(retrievalUrl, retrieval_1.rmMsg.genUrlEnd('some-msg')),
44
+ method: 'DELETE',
45
+ sessionId
46
+ };
47
+ });
48
+ (0, async_jasmine_1.itAsync)('removes messages from inbox', async () => {
49
+ const msgId = await (0, test_utils_1.sendMsg)(deliveryUrl, user1.id, test_utils_1.msg);
50
+ expect(await asmailServer.msgExists(user1.id, msgId, true)).toBeTruthy();
51
+ const opts = (0, json_copy_1.copy)(reqOpts);
52
+ opts.url = (0, url_1.resolve)(retrievalUrl, retrieval_1.rmMsg.genUrlEnd(msgId));
53
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
54
+ expect(rep.status).withContext('status when message was found and removed').toBe(retrieval_1.rmMsg.SC.ok);
55
+ expect(await asmailServer.msgExists(user1.id, msgId, true)).withContext('message should be removed from the server').toBeFalsy();
56
+ });
57
+ (0, async_jasmine_1.itAsync)(`returns an error when message is unknown`, async () => {
58
+ const opts = (0, json_copy_1.copy)(reqOpts);
59
+ const rep = await (0, xhr_utils_1.doBodylessRequest)(opts);
60
+ expect(rep.status).withContext('status for unknown message').toBe(retrieval_1.rmMsg.SC.unknownMsg);
61
+ });
62
+ (0, async_jasmine_1.itAsync)(`requires open session`, async () => {
63
+ const opts = (0, json_copy_1.copy)(reqOpts);
64
+ await (0, requests_1.expectNonAcceptanceOfBadSessionId)(opts);
65
+ });
66
+ });
@@ -0,0 +1,17 @@
1
+ import { ASMailComponent } from '../../../libs-for-tests/server-components/asmail';
2
+ import { User } from '../../../libs-for-tests/mailerid';
3
+ import { GenericSpecDescribe } from '../../../libs-for-tests/spec-assembly';
4
+ import { Msg, Obj } from '../../../libs-for-tests/asmail';
5
+ export { ASMailComponent } from '../../../libs-for-tests/server-components/asmail';
6
+ export { User } from '../../../libs-for-tests/mailerid';
7
+ export { sendMsg, Obj } from '../../../libs-for-tests/asmail';
8
+ export interface TestSetup {
9
+ asmailServer: ASMailComponent;
10
+ user1: User;
11
+ user2: User;
12
+ }
13
+ export type SpecDescribe = GenericSpecDescribe<TestSetup>;
14
+ export declare const obj1: Obj;
15
+ export declare const obj2: Obj;
16
+ export declare const msg: Msg;
17
+ export declare function startSession(user: User, retrievalUrl: string): Promise<string>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2017 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.startSession = exports.msg = exports.obj2 = exports.obj1 = exports.sendMsg = exports.ASMailComponent = void 0;
20
+ const mailerid_1 = require("../../../libs-for-tests/mailerid");
21
+ const random_node_1 = require("../../../../lib-common/random-node");
22
+ const url_1 = require("url");
23
+ const api = require("../../../../lib-common/service-api/asmail/retrieval");
24
+ var asmail_1 = require("../../../libs-for-tests/server-components/asmail");
25
+ Object.defineProperty(exports, "ASMailComponent", { enumerable: true, get: function () { return asmail_1.ASMailComponent; } });
26
+ var asmail_2 = require("../../../libs-for-tests/asmail");
27
+ Object.defineProperty(exports, "sendMsg", { enumerable: true, get: function () { return asmail_2.sendMsg; } });
28
+ exports.obj1 = {
29
+ objId: 'aaaa',
30
+ header: (0, random_node_1.bytesSync)(100),
31
+ segs: (0, random_node_1.bytesSync)(573)
32
+ };
33
+ exports.obj2 = {
34
+ objId: 'bbbb',
35
+ header: (0, random_node_1.bytesSync)(100),
36
+ segs: (0, random_node_1.bytesSync)(20 * 1024 + 7)
37
+ };
38
+ exports.msg = {
39
+ cryptoMeta: { pid: 'xxxx' },
40
+ msgObjs: [exports.obj1, exports.obj2]
41
+ };
42
+ async function startSession(user, retrievalUrl) {
43
+ return await (0, mailerid_1.doMailerIdLogin)((0, url_1.resolve)(retrievalUrl, api.midLogin.MID_URL_PART), user);
44
+ }
45
+ exports.startSession = startSession;
46
+ Object.freeze(exports);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016, 2025 3NSoft Inc.
4
+
5
+ This program is free software: you can redistribute it and/or modify it under
6
+ the terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ This program is distributed in the hope that it will be useful, but
11
+ WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ See the GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License along with
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ const async_jasmine_1 = require("../../libs-for-tests/async-jasmine");
20
+ const asmail_1 = require("../../libs-for-tests/server-components/asmail");
21
+ const xhr_utils_1 = require("../../libs-for-tests/xhr-utils");
22
+ const requests_1 = require("../../shared-checks/requests");
23
+ const check_mid_login_1 = require("../../shared-checks/check-mid-login");
24
+ const url_1 = require("url");
25
+ const api = require("../../../lib-common/service-api/asmail/retrieval");
26
+ const random_node_1 = require("../../../lib-common/random-node");
27
+ const spec_assembly_1 = require("../../libs-for-tests/spec-assembly");
28
+ const path_1 = require("path");
29
+ const test_utils_1 = require("./retrieval/test-utils");
30
+ const SPECS_FOLDER = (0, path_1.join)(__dirname, './retrieval/specs');
31
+ describe('ASMail retrieval service', () => {
32
+ let asmailServer;
33
+ const midServiceDomain = 'localhost';
34
+ const signupDomains = ['company.inc', 'personal.net'];
35
+ let user1;
36
+ let user2;
37
+ let retrievalUrl;
38
+ let deliveryUrl;
39
+ const msg = {
40
+ cryptoMeta: {
41
+ pid: 'ephemeral pair id'
42
+ },
43
+ msgObjs: [{
44
+ objId: 'aaaa',
45
+ header: (0, random_node_1.bytesSync)(100),
46
+ segs: (0, random_node_1.bytesSync)(573)
47
+ }, {
48
+ objId: 'bbbb',
49
+ header: (0, random_node_1.bytesSync)(100),
50
+ segs: (0, random_node_1.bytesSync)(2 * 1024 + 7)
51
+ }]
52
+ };
53
+ (0, async_jasmine_1.beforeAllAsync)(async () => {
54
+ asmailServer = new asmail_1.ASMailComponent(signupDomains, midServiceDomain);
55
+ await asmailServer.start();
56
+ retrievalUrl = await asmailServer.getRetrievalUrl();
57
+ if (!retrievalUrl.endsWith('/')) {
58
+ retrievalUrl += '/';
59
+ }
60
+ deliveryUrl = await asmailServer.getDeliveryUrl();
61
+ if (!deliveryUrl.endsWith('/')) {
62
+ deliveryUrl += '/';
63
+ }
64
+ user1 = await asmailServer.addUser(`Bob Johnson @${signupDomains[0]}`);
65
+ user2 = await asmailServer.addUser(`William Young @${signupDomains[1]}`);
66
+ });
67
+ (0, async_jasmine_1.afterAllAsync)(async () => {
68
+ await asmailServer.stop();
69
+ asmailServer = undefined;
70
+ });
71
+ describe('session', () => {
72
+ describe('MailerId login', (0, check_mid_login_1.midLoginSpecs)(() => (0, url_1.resolve)(retrievalUrl, api.midLogin.MID_URL_PART), () => user1));
73
+ (0, async_jasmine_1.itAsync)('closing session', async () => {
74
+ const sessionId = await (0, test_utils_1.startSession)(user1, retrievalUrl);
75
+ const reqOpts = {
76
+ url: (0, url_1.resolve)(retrievalUrl, api.closeSession.URL_END),
77
+ method: 'POST',
78
+ sessionId
79
+ };
80
+ // normal closing of a session
81
+ let rep = await (0, xhr_utils_1.doBodylessRequest)(reqOpts);
82
+ expect(rep.status).withContext('status for successful closing of session').toBe(200);
83
+ // repeated call should see invalid session response
84
+ rep = await (0, xhr_utils_1.doBodylessRequest)(reqOpts);
85
+ expect(rep.status).toBe(api.ERR_SC.needAuth);
86
+ reqOpts.sessionId = await (0, test_utils_1.startSession)(user1, retrievalUrl);
87
+ await (0, requests_1.expectNonAcceptanceOfNonEmptyBody)(reqOpts);
88
+ await (0, requests_1.expectNonAcceptanceOfBadSessionId)(reqOpts);
89
+ });
90
+ });
91
+ (0, spec_assembly_1.addSpecsFrom)(SPECS_FOLDER, () => ({ asmailServer, user1, user2 }));
92
+ });
@@ -0,0 +1 @@
1
+ export {};