spec-3nweb-server 1.8.5 → 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 (309) 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/mock/tls-options.js +46 -44
  6. package/build/tests/admin-proto/signup.d.ts +1 -0
  7. package/build/tests/admin-proto/signup.js +235 -0
  8. package/build/tests/jasmine.d.ts +1 -0
  9. package/build/tests/jasmine.js +32 -0
  10. package/build/tests/libs-for-tests/3nstorage.d.ts +22 -0
  11. package/build/tests/libs-for-tests/3nstorage.js +123 -0
  12. package/build/tests/libs-for-tests/asmail.d.ts +22 -0
  13. package/build/tests/libs-for-tests/asmail.js +179 -0
  14. package/build/tests/libs-for-tests/assert.d.ts +1 -0
  15. package/build/tests/libs-for-tests/assert.js +26 -0
  16. package/build/tests/libs-for-tests/async-jasmine.d.ts +7 -0
  17. package/build/tests/libs-for-tests/async-jasmine.js +77 -0
  18. package/build/tests/libs-for-tests/bytes-equal.d.ts +1 -0
  19. package/build/tests/libs-for-tests/bytes-equal.js +34 -0
  20. package/build/tests/libs-for-tests/json-copy.d.ts +1 -0
  21. package/build/tests/libs-for-tests/json-copy.js +45 -0
  22. package/build/tests/libs-for-tests/json-equal.d.ts +4 -0
  23. package/build/tests/libs-for-tests/json-equal.js +67 -0
  24. package/build/tests/libs-for-tests/mailerid.d.ts +13 -0
  25. package/build/tests/libs-for-tests/mailerid.js +114 -0
  26. package/build/tests/libs-for-tests/pkl.d.ts +28 -0
  27. package/build/tests/libs-for-tests/pkl.js +89 -0
  28. package/build/tests/libs-for-tests/server-components/3nstorage.d.ts +20 -0
  29. package/build/tests/libs-for-tests/server-components/3nstorage.js +200 -0
  30. package/build/tests/libs-for-tests/server-components/admin.d.ts +6 -0
  31. package/build/tests/libs-for-tests/server-components/admin.js +43 -0
  32. package/build/tests/libs-for-tests/server-components/asmail.d.ts +16 -0
  33. package/build/tests/libs-for-tests/server-components/asmail.js +143 -0
  34. package/build/tests/libs-for-tests/server-components/component.d.ts +13 -0
  35. package/build/tests/libs-for-tests/server-components/component.js +77 -0
  36. package/build/tests/libs-for-tests/server-components/mailerid.d.ts +10 -0
  37. package/build/tests/libs-for-tests/server-components/mailerid.js +103 -0
  38. package/build/tests/libs-for-tests/server-runner.d.ts +15 -0
  39. package/build/tests/libs-for-tests/server-runner.js +69 -0
  40. package/build/tests/libs-for-tests/spec-assembly.d.ts +6 -0
  41. package/build/tests/libs-for-tests/spec-assembly.js +55 -0
  42. package/build/tests/libs-for-tests/ws-utils.d.ts +3 -0
  43. package/build/tests/libs-for-tests/ws-utils.js +59 -0
  44. package/build/tests/libs-for-tests/xhr-utils.d.ts +61 -0
  45. package/build/tests/libs-for-tests/xhr-utils.js +154 -0
  46. package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.d.ts +2 -0
  47. package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.js +84 -0
  48. package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.d.ts +2 -0
  49. package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.js +78 -0
  50. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.d.ts +2 -0
  51. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.js +83 -0
  52. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.d.ts +2 -0
  53. package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.js +77 -0
  54. package/build/tests/protocols/3nstorage/owner/specs/delete-obj.d.ts +2 -0
  55. package/build/tests/protocols/3nstorage/owner/specs/delete-obj.js +75 -0
  56. package/build/tests/protocols/3nstorage/owner/specs/events.d.ts +2 -0
  57. package/build/tests/protocols/3nstorage/owner/specs/events.js +91 -0
  58. package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.d.ts +2 -0
  59. package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.js +269 -0
  60. package/build/tests/protocols/3nstorage/owner/specs/get-current-root.d.ts +2 -0
  61. package/build/tests/protocols/3nstorage/owner/specs/get-current-root.js +262 -0
  62. package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.d.ts +2 -0
  63. package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.js +79 -0
  64. package/build/tests/protocols/3nstorage/owner/specs/get-root-status.d.ts +2 -0
  65. package/build/tests/protocols/3nstorage/owner/specs/get-root-status.js +72 -0
  66. package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.d.ts +2 -0
  67. package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.js +287 -0
  68. package/build/tests/protocols/3nstorage/owner/specs/put-current-root.d.ts +2 -0
  69. package/build/tests/protocols/3nstorage/owner/specs/put-current-root.js +274 -0
  70. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.d.ts +2 -0
  71. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.js +73 -0
  72. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.d.ts +2 -0
  73. package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.js +72 -0
  74. package/build/tests/protocols/3nstorage/owner/test-utils.d.ts +14 -0
  75. package/build/tests/protocols/3nstorage/owner/test-utils.js +54 -0
  76. package/build/tests/protocols/3nstorage/owner.d.ts +1 -0
  77. package/build/tests/protocols/3nstorage/owner.js +138 -0
  78. package/build/tests/protocols/asmail/config.d.ts +1 -0
  79. package/build/tests/protocols/asmail/config.js +117 -0
  80. package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.d.ts +2 -0
  81. package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.js +60 -0
  82. package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.d.ts +2 -0
  83. package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.js +68 -0
  84. package/build/tests/protocols/asmail/delivery/specs/put-metadata.d.ts +2 -0
  85. package/build/tests/protocols/asmail/delivery/specs/put-metadata.js +83 -0
  86. package/build/tests/protocols/asmail/delivery/specs/put-obj.d.ts +2 -0
  87. package/build/tests/protocols/asmail/delivery/specs/put-obj.js +123 -0
  88. package/build/tests/protocols/asmail/delivery/specs/restart-session.d.ts +2 -0
  89. package/build/tests/protocols/asmail/delivery/specs/restart-session.js +79 -0
  90. package/build/tests/protocols/asmail/delivery/specs/start-session.d.ts +2 -0
  91. package/build/tests/protocols/asmail/delivery/specs/start-session.js +64 -0
  92. package/build/tests/protocols/asmail/delivery/test-utils.d.ts +16 -0
  93. package/build/tests/protocols/asmail/delivery/test-utils.js +46 -0
  94. package/build/tests/protocols/asmail/delivery.d.ts +1 -0
  95. package/build/tests/protocols/asmail/delivery.js +46 -0
  96. package/build/tests/protocols/asmail/retrieval/specs/events.d.ts +2 -0
  97. package/build/tests/protocols/asmail/retrieval/specs/events.js +62 -0
  98. package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.d.ts +2 -0
  99. package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.js +70 -0
  100. package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.d.ts +2 -0
  101. package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.js +166 -0
  102. package/build/tests/protocols/asmail/retrieval/specs/list-messages.d.ts +2 -0
  103. package/build/tests/protocols/asmail/retrieval/specs/list-messages.js +96 -0
  104. package/build/tests/protocols/asmail/retrieval/specs/remove-message.d.ts +2 -0
  105. package/build/tests/protocols/asmail/retrieval/specs/remove-message.js +66 -0
  106. package/build/tests/protocols/asmail/retrieval/test-utils.d.ts +17 -0
  107. package/build/tests/protocols/asmail/retrieval/test-utils.js +46 -0
  108. package/build/tests/protocols/asmail/retrieval.d.ts +1 -0
  109. package/build/tests/protocols/asmail/retrieval.js +92 -0
  110. package/build/tests/protocols/mailerid.d.ts +1 -0
  111. package/build/tests/protocols/mailerid.js +210 -0
  112. package/build/tests/shared-checks/check-mid-login.d.ts +2 -0
  113. package/build/tests/shared-checks/check-mid-login.js +131 -0
  114. package/build/tests/shared-checks/requests.d.ts +20 -0
  115. package/build/tests/shared-checks/requests.js +123 -0
  116. package/package.json +1 -1
  117. package/packing/create-deb.sh +57 -0
  118. package/packing/deb/lib/systemd/system/3nweb.service +11 -0
  119. package/packing/deb/postinst +44 -0
  120. package/packing/deb/usr/share/doc/3nweb-server/conf-for-postinstall.yaml +19 -0
  121. package/packing/deb/usr/share/doc/3nweb-server/copyright +22 -0
  122. package/publish-task.sh +10 -0
  123. package/push-to-github.sh +105 -0
  124. package/ts-code/3nstorage/3nstorage-app.ts +99 -0
  125. package/ts-code/3nstorage/owner.ts +178 -0
  126. package/ts-code/3nstorage/resources/sessions.ts +37 -0
  127. package/ts-code/3nstorage/resources/store.ts +896 -0
  128. package/ts-code/3nstorage/resources/users.ts +258 -0
  129. package/ts-code/3nstorage/routes/owner/archive-obj-version.ts +73 -0
  130. package/ts-code/3nstorage/routes/owner/cancel-trans.ts +58 -0
  131. package/ts-code/3nstorage/routes/owner/delete-obj.ts +103 -0
  132. package/ts-code/3nstorage/routes/owner/get-archived-obj-ver.ts +111 -0
  133. package/ts-code/3nstorage/routes/owner/get-current-obj.ts +122 -0
  134. package/ts-code/3nstorage/routes/owner/get-obj-status.ts +55 -0
  135. package/ts-code/3nstorage/routes/owner/param-getter.ts +51 -0
  136. package/ts-code/3nstorage/routes/owner/param-setter.ts +50 -0
  137. package/ts-code/3nstorage/routes/owner/put-current-obj.ts +284 -0
  138. package/ts-code/3nstorage/routes/owner/session-params.ts +49 -0
  139. package/ts-code/3nstorage/shared.ts +43 -0
  140. package/ts-code/asmail/asmail-app.ts +91 -0
  141. package/ts-code/asmail/config.ts +96 -0
  142. package/ts-code/asmail/delivery.ts +94 -0
  143. package/ts-code/asmail/resources/delivery-sessions.ts +118 -0
  144. package/ts-code/asmail/resources/inbox.ts +696 -0
  145. package/ts-code/asmail/resources/recipients.ts +495 -0
  146. package/ts-code/asmail/resources/sessions.ts +37 -0
  147. package/ts-code/asmail/retrieval.ts +96 -0
  148. package/ts-code/asmail/routes/config/param-getter.ts +49 -0
  149. package/ts-code/asmail/routes/config/param-setter.ts +49 -0
  150. package/ts-code/asmail/routes/delivery/finalize-delivery.ts +50 -0
  151. package/ts-code/asmail/routes/delivery/pre-flight.ts +132 -0
  152. package/ts-code/asmail/routes/delivery/provide-recipient-pubkey.ts +58 -0
  153. package/ts-code/asmail/routes/delivery/put-metadata.ts +94 -0
  154. package/ts-code/asmail/routes/delivery/put-obj.ts +166 -0
  155. package/ts-code/asmail/routes/delivery/restart-session.ts +130 -0
  156. package/ts-code/asmail/routes/delivery/sender-authorization.ts +81 -0
  157. package/ts-code/asmail/routes/delivery/start-session.ts +151 -0
  158. package/ts-code/asmail/routes/retrieval/get-message-meta.ts +53 -0
  159. package/ts-code/asmail/routes/retrieval/get-message-obj.ts +109 -0
  160. package/ts-code/asmail/routes/retrieval/list-messages.ts +70 -0
  161. package/ts-code/asmail/routes/retrieval/remove-message.ts +47 -0
  162. package/ts-code/cli/index.ts +82 -0
  163. package/ts-code/cli/run-cmd.ts +81 -0
  164. package/ts-code/cli/show-sample-config.ts +78 -0
  165. package/ts-code/cli/signup-cmd.ts +229 -0
  166. package/ts-code/cli/user-cmd.ts +68 -0
  167. package/ts-code/cli/utils.ts +105 -0
  168. package/ts-code/config/default-confs.ts +22 -0
  169. package/ts-code/config/from-yaml.ts +35 -0
  170. package/ts-code/config/letsencrypt.ts +77 -0
  171. package/ts-code/config/signup.ts +137 -0
  172. package/ts-code/lib-common/admin-api/signup.ts +120 -0
  173. package/ts-code/lib-common/assert.ts +22 -0
  174. package/ts-code/lib-common/async-fs-node.ts +656 -0
  175. package/ts-code/lib-common/buffer-utils.ts +124 -0
  176. package/ts-code/lib-common/byte-streaming/common.ts +166 -0
  177. package/ts-code/lib-common/bytes-equal.ts +25 -0
  178. package/ts-code/lib-common/canonical-address.ts +92 -0
  179. package/ts-code/lib-common/exceptions/error.ts +44 -0
  180. package/ts-code/lib-common/exceptions/file.ts +84 -0
  181. package/ts-code/lib-common/exceptions/http.ts +69 -0
  182. package/ts-code/lib-common/ipc/generic-ipc.ts +750 -0
  183. package/ts-code/lib-common/ipc/ws-ipc.ts +117 -0
  184. package/ts-code/lib-common/json-equal.ts +55 -0
  185. package/ts-code/lib-common/json-utils.ts +130 -0
  186. package/ts-code/lib-common/jwkeys.ts +246 -0
  187. package/ts-code/lib-common/map-of-sets.ts +60 -0
  188. package/ts-code/lib-common/mid-sigs-NaCl-Ed.ts +677 -0
  189. package/ts-code/lib-common/objs-on-disk/file-layout.ts +480 -0
  190. package/ts-code/lib-common/objs-on-disk/obj-file.ts +325 -0
  191. package/ts-code/lib-common/objs-on-disk/utils.ts +201 -0
  192. package/ts-code/lib-common/objs-on-disk/v1-obj-file-format.ts +329 -0
  193. package/ts-code/lib-common/processes.ts +501 -0
  194. package/ts-code/lib-common/random-node.ts +79 -0
  195. package/ts-code/lib-common/service-api/3nstorage/owner.ts +559 -0
  196. package/ts-code/lib-common/service-api/3nstorage/root-route.ts +22 -0
  197. package/ts-code/lib-common/service-api/asmail/config.ts +144 -0
  198. package/ts-code/lib-common/service-api/asmail/delivery.ts +250 -0
  199. package/ts-code/lib-common/service-api/asmail/retrieval.ts +238 -0
  200. package/ts-code/lib-common/service-api/asmail/root-route.ts +22 -0
  201. package/ts-code/lib-common/service-api/ipc-api.ts +44 -0
  202. package/ts-code/lib-common/service-api/locker.ts +44 -0
  203. package/ts-code/lib-common/service-api/mailer-id/login.ts +80 -0
  204. package/ts-code/lib-common/service-api/mailer-id/provisioning.ts +64 -0
  205. package/ts-code/lib-common/service-api/mailer-id/root-route.ts +25 -0
  206. package/ts-code/lib-common/service-api/pub-key-login.ts +75 -0
  207. package/ts-code/lib-common/service-api/web-socket-base.ts +87 -0
  208. package/ts-code/lib-common/session-encryptor.ts +54 -0
  209. package/ts-code/lib-common/time-window-cache.ts +74 -0
  210. package/ts-code/lib-common/transferable.d.ts +30 -0
  211. package/ts-code/lib-server/conf-util.ts +35 -0
  212. package/ts-code/lib-server/mid-access.ts +45 -0
  213. package/ts-code/lib-server/middleware/body-parsers.ts +248 -0
  214. package/ts-code/lib-server/middleware/error-handler.ts +79 -0
  215. package/ts-code/lib-server/pkl-access.ts +46 -0
  216. package/ts-code/lib-server/resources/dns.ts +151 -0
  217. package/ts-code/lib-server/resources/mailerid-authorizer.ts +115 -0
  218. package/ts-code/lib-server/resources/mem-backed-sessions-factory.ts +132 -0
  219. package/ts-code/lib-server/resources/server-data-folders.ts +160 -0
  220. package/ts-code/lib-server/resources/server-key-for-pkl-challenge.ts +41 -0
  221. package/ts-code/lib-server/resources/sessions.ts +232 -0
  222. package/ts-code/lib-server/resources/user-files.ts +147 -0
  223. package/ts-code/lib-server/routes/pub-key-login/complete-exchange.ts +63 -0
  224. package/ts-code/lib-server/routes/pub-key-login/start-exchange.ts +189 -0
  225. package/ts-code/lib-server/routes/sessions/close.ts +27 -0
  226. package/ts-code/lib-server/routes/sessions/mid-auth.ts +77 -0
  227. package/ts-code/lib-server/routes/sessions/start.ts +116 -0
  228. package/ts-code/lib-server/web-sockets/app.ts +339 -0
  229. package/ts-code/lib-server/web-sockets/server-events.ts +63 -0
  230. package/ts-code/lib.ts +29 -0
  231. package/ts-code/locker/locker-app.ts +60 -0
  232. package/ts-code/locker/resources/lockers.ts +17 -0
  233. package/ts-code/locker/resources/sessions.ts +37 -0
  234. package/ts-code/locker/routes/create-locker.ts +47 -0
  235. package/ts-code/mailerId/mailerId-app.ts +107 -0
  236. package/ts-code/mailerId/resources/certifier.ts +181 -0
  237. package/ts-code/mailerId/resources/sessions.ts +44 -0
  238. package/ts-code/mailerId/resources/users.ts +88 -0
  239. package/ts-code/mailerId/routes/certify.ts +68 -0
  240. package/ts-code/main.ts +304 -0
  241. package/ts-code/mock/dns.ts +106 -0
  242. package/ts-code/mock/mock-as-child-proc.ts +130 -0
  243. package/ts-code/mock/node-child-ipc.ts +69 -0
  244. package/ts-code/mock/run-in-proc.ts +111 -0
  245. package/ts-code/mock/tls-options.ts +73 -0
  246. package/ts-code/services.ts +138 -0
  247. package/ts-code/signup/resources/users.ts +429 -0
  248. package/ts-code/signup/routes/add.ts +65 -0
  249. package/ts-code/signup/routes/get-available-addresses.ts +49 -0
  250. package/ts-code/signup/routes/get-available-domains.ts +45 -0
  251. package/ts-code/signup/signup-app.ts +54 -0
  252. package/ts-code/signup/signup-tokens.ts +148 -0
  253. package/ts-code/tests/admin-proto/signup.ts +277 -0
  254. package/ts-code/tests/jasmine.ts +37 -0
  255. package/ts-code/tests/libs-for-tests/3nstorage.ts +144 -0
  256. package/ts-code/tests/libs-for-tests/asmail.ts +220 -0
  257. package/ts-code/tests/libs-for-tests/assert.ts +22 -0
  258. package/ts-code/tests/libs-for-tests/async-jasmine.ts +89 -0
  259. package/ts-code/tests/libs-for-tests/bytes-equal.ts +25 -0
  260. package/ts-code/tests/libs-for-tests/json-copy.ts +38 -0
  261. package/ts-code/tests/libs-for-tests/json-equal.ts +55 -0
  262. package/ts-code/tests/libs-for-tests/mailerid.ts +123 -0
  263. package/ts-code/tests/libs-for-tests/pkl.ts +127 -0
  264. package/ts-code/tests/libs-for-tests/server-components/3nstorage.ts +206 -0
  265. package/ts-code/tests/libs-for-tests/server-components/admin.ts +49 -0
  266. package/ts-code/tests/libs-for-tests/server-components/asmail.ts +152 -0
  267. package/ts-code/tests/libs-for-tests/server-components/component.ts +90 -0
  268. package/ts-code/tests/libs-for-tests/server-components/mailerid.ts +114 -0
  269. package/ts-code/tests/libs-for-tests/server-runner.ts +82 -0
  270. package/ts-code/tests/libs-for-tests/spec-assembly.ts +60 -0
  271. package/ts-code/tests/libs-for-tests/ws-utils.ts +61 -0
  272. package/ts-code/tests/libs-for-tests/xhr-utils.ts +179 -0
  273. package/ts-code/tests/protocols/3nstorage/owner/specs/archive-obj-ver.ts +100 -0
  274. package/ts-code/tests/protocols/3nstorage/owner/specs/archive-root-ver.ts +91 -0
  275. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.ts +99 -0
  276. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.ts +90 -0
  277. package/ts-code/tests/protocols/3nstorage/owner/specs/delete-obj.ts +84 -0
  278. package/ts-code/tests/protocols/3nstorage/owner/specs/events.ts +125 -0
  279. package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-obj.ts +298 -0
  280. package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-root.ts +290 -0
  281. package/ts-code/tests/protocols/3nstorage/owner/specs/get-obj-status.ts +88 -0
  282. package/ts-code/tests/protocols/3nstorage/owner/specs/get-root-status.ts +80 -0
  283. package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-obj.ts +366 -0
  284. package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-root.ts +329 -0
  285. package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel-root.ts +86 -0
  286. package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel.ts +86 -0
  287. package/ts-code/tests/protocols/3nstorage/owner/test-utils.ts +72 -0
  288. package/ts-code/tests/protocols/3nstorage/owner.ts +198 -0
  289. package/ts-code/tests/protocols/asmail/config.ts +172 -0
  290. package/ts-code/tests/protocols/asmail/delivery/specs/finalize-delivery.ts +69 -0
  291. package/ts-code/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.ts +88 -0
  292. package/ts-code/tests/protocols/asmail/delivery/specs/put-metadata.ts +102 -0
  293. package/ts-code/tests/protocols/asmail/delivery/specs/put-obj.ts +156 -0
  294. package/ts-code/tests/protocols/asmail/delivery/specs/restart-session.ts +97 -0
  295. package/ts-code/tests/protocols/asmail/delivery/specs/start-session.ts +79 -0
  296. package/ts-code/tests/protocols/asmail/delivery/test-utils.ts +64 -0
  297. package/ts-code/tests/protocols/asmail/delivery.ts +56 -0
  298. package/ts-code/tests/protocols/asmail/retrieval/specs/events.ts +78 -0
  299. package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-meta.ts +80 -0
  300. package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-obj.ts +197 -0
  301. package/ts-code/tests/protocols/asmail/retrieval/specs/list-messages.ts +110 -0
  302. package/ts-code/tests/protocols/asmail/retrieval/specs/remove-message.ts +74 -0
  303. package/ts-code/tests/protocols/asmail/retrieval/test-utils.ts +60 -0
  304. package/ts-code/tests/protocols/asmail/retrieval.ts +115 -0
  305. package/ts-code/tests/protocols/mailerid.ts +271 -0
  306. package/ts-code/tests/shared-checks/check-mid-login.ts +164 -0
  307. package/ts-code/tests/shared-checks/requests.ts +135 -0
  308. package/ts-code/tsconfig.json +11 -0
  309. package/ts-code/web3n.d.ts +1068 -0
@@ -0,0 +1,50 @@
1
+
2
+ #########
3
+ # Linux #
4
+ #########
5
+
6
+ build for linux:
7
+ extends: build
8
+ rules: [ { when: on_success } ]
9
+ image: node-22
10
+
11
+
12
+ test on linux:
13
+ extends: test
14
+ rules: [ { when: on_success } ]
15
+ needs:
16
+ - build for linux
17
+ image: node-22
18
+
19
+
20
+ pack for linux:
21
+ extends: pack
22
+ rules: [ { when: on_success } ]
23
+ needs:
24
+ - build for linux
25
+ - test on linux
26
+ image: node-22
27
+
28
+
29
+ pack mock for linux:
30
+ extends: pack mock
31
+ rules: [ { when: on_success } ]
32
+ needs:
33
+ - build for linux
34
+ - test on linux
35
+ image: node-22
36
+
37
+
38
+ # pack deb:
39
+ # extends: pack
40
+ # rules: [ { when: on_success } ]
41
+ # needs:
42
+ # - build for linux
43
+ # - test on linux
44
+ # image: node-16
45
+ # script:
46
+ # - npm run pack-deb
47
+ # artifacts:
48
+ # paths:
49
+ # - 3nweb-*.deb
50
+ # expire_in: 3d
@@ -0,0 +1,29 @@
1
+
2
+ #########
3
+ # MacOS #
4
+ #########
5
+
6
+ build for mac:
7
+ extends: build
8
+ rules: [ { when: on_success } ]
9
+ tags:
10
+ - mac-m1
11
+
12
+
13
+ test on mac:
14
+ extends: test
15
+ rules: [ { when: on_success } ]
16
+ needs:
17
+ - build for mac
18
+ tags:
19
+ - mac-m1
20
+
21
+
22
+ pack mock for mac:
23
+ extends: pack mock
24
+ rules: [ { when: on_success } ]
25
+ tags:
26
+ - mac-m1
27
+ needs:
28
+ - build for mac
29
+ - test on mac
@@ -0,0 +1,29 @@
1
+
2
+ ###########
3
+ # Windows #
4
+ ###########
5
+
6
+ build for windows:
7
+ extends: build
8
+ rules: [ { when: on_success } ]
9
+ tags:
10
+ - windows
11
+
12
+
13
+ test on windows:
14
+ extends: test
15
+ rules: [ { when: on_success } ]
16
+ needs:
17
+ - build for windows
18
+ tags:
19
+ - windows
20
+
21
+
22
+ pack mock for windows:
23
+ extends: pack mock
24
+ rules: [ { when: on_success } ]
25
+ tags:
26
+ - windows
27
+ needs:
28
+ - build for windows
29
+ - test on windows
package/.gitlab-ci.yml ADDED
@@ -0,0 +1,63 @@
1
+ stages:
2
+ - build
3
+ - test
4
+ - pack
5
+ - publish
6
+
7
+
8
+ build:
9
+ rules: [ { when: never } ]
10
+ stage: build
11
+ script:
12
+ - npm ci
13
+ - npm run build
14
+ artifacts:
15
+ paths:
16
+ - node_modules/
17
+ - build/
18
+ expire_in: 1h
19
+
20
+
21
+ test:
22
+ rules: [ { when: never } ]
23
+ stage: test
24
+ script:
25
+ - npm run test
26
+
27
+
28
+ pack:
29
+ rules: [ { when: never } ]
30
+ stage: pack
31
+ script:
32
+ - npm run clear-for-packing
33
+ artifacts:
34
+ paths:
35
+ - build/
36
+ - node_modules/
37
+ - LICENSE
38
+ - package-lock.json
39
+ - package.json
40
+ - README.md
41
+ expire_in: 3d
42
+
43
+
44
+ pack mock:
45
+ extends: pack
46
+ script:
47
+ - npm run clear-for-packing-mock
48
+
49
+
50
+ publish to npm:
51
+ stage: publish
52
+ rules:
53
+ - if: '$CI_COMMIT_BRANCH == "master"'
54
+ when: manual
55
+ image: node-22
56
+ script:
57
+ - bash publish-task.sh $NPM_PUBLISH_TOKEN
58
+
59
+
60
+ include:
61
+ - .gitlab-ci-linux.yml
62
+ - .gitlab-ci-windows.yml
63
+ - .gitlab-ci-mac.yml
@@ -19,52 +19,54 @@ Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.sslOpts = void 0;
20
20
  exports.sslOpts = {
21
21
  key: `-----BEGIN PRIVATE KEY-----
22
- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDNSnmGLUwA7Qf9
23
- D2cqOq4fvhRcO07/C5PLjbEzIg311caqfU7bUlit90vBFB7TvHg/cKORTXPJb/SQ
24
- D9pR+Sq2zXKjweScUwdza0f+12D3bAbD1ntHQD+4Fh2QaR34LRP1yaPKI5u2kBwb
25
- 6R0qaAuaj3VQ1ttVz7zEwERBtSWJD8r8kj9TGKqNC82LPdcGsFeNsobNE30K/3z8
26
- uqEyLm+AN6FJ1u9ahLxdA3Fn9kLVtOrmskpFcZY9ECauK+DUwWVYI7t9+37EwCcl
27
- ENsw+i2dPUHoPVPsOqsW2aXAH2meSx0jE2sjdccgFA86nHfuBdx+0o3MoIe12ZbF
28
- /v64nvS9AgMBAAECggEAV0hK0tl/bwVYWCesXTAFyEkwruYoeBecBvd/V5YrCVKS
29
- 3PnaBTXFrnFuK/E6ChwfpBln8edUS1jmSjnzQNcHaiF/lFBjunMyv8flHFzGRWwQ
30
- lEMktu6CKOp+N1/59gJ0chQBJ3hsQ/qReOxsEhOam2RTJMO1DY79W0nDu4whIVxp
31
- wMpn/RlSdOkBwDzVvnazpZPLOFiUDcd+MNfR1Z0gzgMxfwQvvXseHe21x8qwpBFD
32
- L1D6jfu1D8ku03TiKq2MHjS7p8oFKeGFo7p3G8LJG5yrzrP8fqCRE6E5zsunFo48
33
- zgZwt0kuKcM8Fy5X5MSs8q67TS4sWPTULzUG/suaAQKBgQD8dXGHvY47KbB3+4xa
34
- SLrtXry1AQho/iJ8skm02C9XRZLopS6fdzC95GSRTRZa8mAjCOrnxwXKYyjUqWGt
35
- vDJqKRn1IOfwXmvdJ7Wp94N/b0i5WBkxNhR99JXyPmvGt0R7Ym6bDh7YIdGp5Je4
36
- t1oaWizkyr5t3cKxkNaz8tqUrQKBgQDQK6fgTr+UX/GnWu7zom3JxHbN7+BVoJC+
37
- zKCsbiUbzT0qG066J0oJ2qJejDUDwYD2BNevPLppxTFY9WTwSeEqQz4pxHBEfxxc
38
- K129HGnrkQ2s/Ow/DvbFiLO9D7oM3nN0SlpLqFJmZ0cem2FKsAz7oD10tohFJL0t
39
- pDRc0YDSUQKBgQCcxHETUWoY4vJqDxJAnhk1fTbBTzrht63CsROD8Rq0nsdzH9+r
40
- tl/WCxVIBQ50uz1nhAoak0PNQXYBWI0HTW4g7hToWt6sLHXehuIQAVrurzQBo+tA
41
- 28wtysux+YEDjJpB5AW60zHkFFwVm5V7Zp/U7VojWKKXprVXfhFU/OEuoQKBgQCg
42
- ne5rjZcX3mdP30ObS+o10ZZxEvIeX0MPVEdsg5eyOctFn8hArWvc6op5NOj6uuTL
43
- 7bSVCuAyF+oZX03AcOCAgV2HUH/m+cRiATvUXAYFsefBX2zQwrT4eJ9l8qp0n3ap
44
- dWzyDy90v58KKI0K2YdK5rpEQUonP0+P1bBpJWSl4QKBgCs0tN/qzx9IzoOwZwVQ
45
- UASKANPksnyfD7f/YrV82mCHX4GcKtqkf/nneM3kajU0UhR9iZ0lfftIQ4Es0um2
46
- CMvkrvDxiv0YpIOluhCIrEPN/p+yn/uQ2hf5pSuQ4AL78sONub8sKixcutw3V8Gh
47
- ekdV13TrfP1PK28L4KE47V4p
22
+ MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCggRGeSSbXoPby
23
+ CI943Lg80+0XFoJxbinkH+SEbNZ3IpuSQyaoaWTIGqjXH2tIO7D7Htr7XVsqIsQW
24
+ 33K9ZxAGwowuDXduRD/TM2Fnt7OHKbQIOJehD6JZg/pg7IwJvUPRoLHfT7f3Obs9
25
+ i63CQhITxXimDR1MCw/+mwXJabTTibpsdIT74N+V193SRDKS/qcmLld+lLhpR7ya
26
+ 8alY0Hdgpy/8ahmTVdCazQJ69HuOi32mCZevIK/VuWO4bIBAJ9Q0CuL8g3G1/v/F
27
+ 7KRW7893HolkBxbNhQ/sSBfA06jR3JYww/MzUCHTLQ2Si9LuBQDekzcMX2FTthde
28
+ heO54yL/AgMBAAECggEAHOB72f2RRnRIWa1emsEjSJZcbq33FA9c7BUs2QJ354FL
29
+ ehoox14G6tWZEPMvKxTKN7QKc/UM5NzSaMcU7qyvPngcHmD/3s/ap9XzrWRooWXI
30
+ ZT5BUZHthKtxDaUhYNMzc3C079d44rr5TA5oWa3ncLUzirSLU9Ydr5IWjXE+Plyd
31
+ RDgA/JmUOSdZAViXXckujIKoyz0viMRaWT58qIWCItUJouI/CGQiBbC3yyNa36s/
32
+ gQQJnJY6PuCDnh3gAm4Qi5IyxWWiYFUodPZhhrGX8uvDg/GJvvRv0GkcaPaZKxJ4
33
+ 2Ir9Ex2YdAIB7MsD2x9XgNyEy9LCmpcRDlqqo/mo0QKBgQDLAIuu3R0YOs7B3/gb
34
+ +WF/4j6WSJ9XvyHh50qifEaX7wi2pUhhT2TLrKdIkqiB7Hrc9rrNDRQTnmIGDZQR
35
+ NJ/YV6USOkYfGTog71Oh/TRacIqXE4ql+DNHOMmIO+e0dE0CvjkCUI36wFxgnzBc
36
+ 9SjqKdylM67zfiDppy9DAHTyxwKBgQDKaDZzUeIMYdcw55orQt1Y0VEwcNy34XMO
37
+ y91Dobfztwbf0fpQtaQQl9mS1HMDGUevKR592QEmc2wRYZoY7kMz0b4yCPHsdepk
38
+ eEPNgM9wf6ApHto9trlaTTaXSlJ+t9hPqfQ6a5deYZiYp5tzwSpd3yibFo4HXsjh
39
+ m7o37kqWCQKBgQCLF0yd+5K7z09rN3JgeHZ9kR8hCZFkJempRzi0LEKSR43I12bI
40
+ hgWiKCJWb2ZV3xov3D4R0Sw4ZQT08MjLISuEqEjKPHNfS4Gwn0rGax87+HB9Iz6U
41
+ iYNZAWfUmHciBa3ee0fEdj1R2gtxiKEykCgAib5M0yTEYV9buNmBJwb6cQKBgQDJ
42
+ Ueg+wYYF7NceBG6acvI4YlHPzaIrnylS4UDeAR83YKeMvYys9E4QVwkIexk+Tsm3
43
+ Fj4GzG3RceJeU2bzPyFGjGsR10XRfOM7NUezQliRu89wtwg5c+JeSAhxaHIvKesU
44
+ KaYK6XLwZEBkLel3s/zQy6LWxxNTj1pc1AjfkrtLCQKBgQCKW6+tzHMeqksOIuiP
45
+ VOZq0qEpJVutcEt01q1ii0fcq//LlnkWuZnSglc9TpWuUlBuqDSBOsQLMmGPV7mc
46
+ dOov2W7xEXGiQaRSnI4st11y7WDwQRQcy89fGMrmunrblRBbLEbel+bnJAuJLcm5
47
+ WzcbPdutJ6h5LEcAWw/M/T8d0A==
48
48
  -----END PRIVATE KEY-----`,
49
49
  cert: `-----BEGIN CERTIFICATE-----
50
- MIIDRTCCAi2gAwIBAgIJAMt7Y3ydmYQ3MA0GCSqGSIb3DQEBCwUAMDkxCzAJBgNV
51
- BAYTAiAgMQowCAYDVQQIDAEgMQowCAYDVQQKDAEgMRIwEAYDVQQDDAlsb2NhbGhv
52
- c3QwHhcNMTYwNjExMjIwMDE4WhcNMjYwNjA5MjIwMDE4WjA5MQswCQYDVQQGEwIg
53
- IDEKMAgGA1UECAwBIDEKMAgGA1UECgwBIDESMBAGA1UEAwwJbG9jYWxob3N0MIIB
54
- IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzUp5hi1MAO0H/Q9nKjquH74U
55
- XDtO/wuTy42xMyIN9dXGqn1O21JYrfdLwRQe07x4P3CjkU1zyW/0kA/aUfkqts1y
56
- o8HknFMHc2tH/tdg92wGw9Z7R0A/uBYdkGkd+C0T9cmjyiObtpAcG+kdKmgLmo91
57
- UNbbVc+8xMBEQbUliQ/K/JI/UxiqjQvNiz3XBrBXjbKGzRN9Cv98/LqhMi5vgDeh
58
- SdbvWoS8XQNxZ/ZC1bTq5rJKRXGWPRAmrivg1MFlWCO7fft+xMAnJRDbMPotnT1B
59
- 6D1T7DqrFtmlwB9pnksdIxNrI3XHIBQPOpx37gXcftKNzKCHtdmWxf7+uJ70vQID
60
- AQABo1AwTjAdBgNVHQ4EFgQUWi2JgyaWzw0xNLoGjdlzaj1EzAIwHwYDVR0jBBgw
61
- FoAUWi2JgyaWzw0xNLoGjdlzaj1EzAIwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
62
- AQsFAAOCAQEALuiVV78gNhaiDyWuwzDsbRrXVLXd7kOLLXhE/JBEUaQC7pJGKLVe
63
- Vdq8XS41+6/gIPq+Q5EF7Ci9Krct5Zmnvd/6cbvN1CT1E8efjwvMhQFSi3QbUpbT
64
- y/IIkOQk3mqBXced0Wj7V7drqb9Q2U6bRZ5WA/w6jtxMtQctAyvyFdffyaGQBPCe
65
- VMZHQcXuoAdQpr2WKlwIkTx34G7d+0Qv3NpbjBwKmwT56qNwb5cZ0YqMIg+TBoy0
66
- BvLR2f2eEfMj927ACiBdJ6d+1Mdl7+wZJKb+gPQPO3h2T90m+dGuWw+jZ9Qs9XLN
67
- YzorNrzZ9NOKKFrYjXHyXQByeGgoltk/8w==
50
+ MIIDkzCCAnugAwIBAgIUW1eK6qpqDdf8KNVKEQNWToGnYxUwDQYJKoZIhvcNAQEL
51
+ BQAwWTELMAkGA1UEBhMCQ0ExEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
52
+ GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MB4X
53
+ DTI2MDYxMDAxMzUzMloXDTM2MDYwNzAxMzUzMlowWTELMAkGA1UEBhMCQ0ExEzAR
54
+ BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5
55
+ IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
56
+ MIIBCgKCAQEAoIERnkkm16D28giPeNy4PNPtFxaCcW4p5B/khGzWdyKbkkMmqGlk
57
+ yBqo1x9rSDuw+x7a+11bKiLEFt9yvWcQBsKMLg13bkQ/0zNhZ7ezhym0CDiXoQ+i
58
+ WYP6YOyMCb1D0aCx30+39zm7PYutwkISE8V4pg0dTAsP/psFyWm004m6bHSE++Df
59
+ ldfd0kQykv6nJi5XfpS4aUe8mvGpWNB3YKcv/GoZk1XQms0CevR7jot9pgmXryCv
60
+ 1bljuGyAQCfUNAri/INxtf7/xeykVu/Pdx6JZAcWzYUP7EgXwNOo0dyWMMPzM1Ah
61
+ 0y0NkovS7gUA3pM3DF9hU7YXXoXjueMi/wIDAQABo1MwUTAdBgNVHQ4EFgQUK9jG
62
+ K/xw9TJGdYq6u8hYdjqcPvowHwYDVR0jBBgwFoAUK9jGK/xw9TJGdYq6u8hYdjqc
63
+ PvowDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEALe20I+WMlcMW
64
+ GBoryo2OXvJ5Uu4AiImP5RbhgpDXry9FXiARwR/kx/oAY5o1flJ3jY3yO8fETDcD
65
+ G6F6Tf/PKPlMDrWoFv7Vz/s4GjAyPFWPQJe3EiSjarah7x+hbRNPo7Xf+aCYI/p1
66
+ MLsCVUreTeqA8qno2qbdtwUM3FcTEL/mdkA/d2/H0HIHwGV0A2hpyG8d+RpP2na+
67
+ uwDNifryUwZd8bW2n3UoRtsralEW657sReywAa6iunk8220vjRq8LlceJh3952ov
68
+ EEuI+hxj/ikVBSjQX8aFhX8kx4p4q/mKCOA5q3DCbmrr3Cn8fl0zRZZegrk9kfpV
69
+ QGCnHRJ0yQ==
68
70
  -----END CERTIFICATE-----`
69
71
  };
70
72
  Object.freeze(exports);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (C) 2016, 2020 - 2021, 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 admin_1 = require("../libs-for-tests/server-components/admin");
21
+ const xhr_utils_1 = require("../libs-for-tests/xhr-utils");
22
+ const signupApi = require("../../lib-common/admin-api/signup");
23
+ const requests_1 = require("../shared-checks/requests");
24
+ const jwkeys_1 = require("../../lib-common/jwkeys");
25
+ const ecma_nacl_1 = require("ecma-nacl");
26
+ describe('Admin', () => {
27
+ describe('signup subsystem', () => {
28
+ let admin;
29
+ const signupDomains = ['first.org', 'second.org'];
30
+ (0, async_jasmine_1.beforeEachAsync)(async () => {
31
+ admin = new admin_1.AdminComponent(signupDomains);
32
+ await admin.start();
33
+ });
34
+ (0, async_jasmine_1.afterEachAsync)(async () => {
35
+ await admin.stop();
36
+ admin = undefined;
37
+ });
38
+ (0, async_jasmine_1.itAsync)('tells available addresses for a given name', async () => {
39
+ const REQ_SIZE_LIMIT = 1024;
40
+ const name = 'Bob Marley ';
41
+ const reqOpts = {
42
+ url: admin.signupUrl + signupApi.availableAddressesForName.URL_END,
43
+ method: 'POST',
44
+ responseType: 'json'
45
+ };
46
+ // request with ok name
47
+ let req = { name };
48
+ const rep = await (0, xhr_utils_1.doJsonRequest)(reqOpts, req);
49
+ expect(rep.status).withContext('status code for OK reply').toBe(signupApi.availableAddressesForName.SC.ok);
50
+ expect(Array.isArray(rep.data)).withContext('OK reply is an array').toBe(true);
51
+ expect(rep.data.length).withContext('with no users, all domains should used as options for available addresses').toBe(signupDomains.length);
52
+ for (const domain of signupDomains) {
53
+ expect(rep.data).toContain(name + '@' + domain);
54
+ }
55
+ // requests with bad names and with bad json's
56
+ const badNames = [name + '@something',
57
+ 5, null, undefined, {}]; // non-strings
58
+ const badJSONs = [name, 5, null, undefined, [name],
59
+ { a: 1 }];
60
+ for (const badName of badNames) {
61
+ req = { name: badName };
62
+ badJSONs.push(req);
63
+ }
64
+ await (0, requests_1.expectNonAcceptanceOfBadJsonRequest)(reqOpts, REQ_SIZE_LIMIT, badJSONs);
65
+ });
66
+ (0, async_jasmine_1.itAsync)('tells available domains', async () => {
67
+ const REQ_SIZE_LIMIT = 1024;
68
+ const reqOpts = {
69
+ url: admin.signupUrl + signupApi.availableDomains.URL_END,
70
+ method: 'POST',
71
+ responseType: 'json'
72
+ };
73
+ const req = {};
74
+ const rep = await (0, xhr_utils_1.doJsonRequest)(reqOpts, req);
75
+ expect(rep.status).withContext('status code for OK reply').toBe(signupApi.availableDomains.SC.ok);
76
+ expect(Array.isArray(rep.data)).withContext('OK reply is an array').toBe(true);
77
+ expect(rep.data.length).withContext('with no token, all domains should be given as options').toBe(signupDomains.length);
78
+ for (const domain of signupDomains) {
79
+ expect(rep.data).toContain(domain);
80
+ }
81
+ // requests with bad json's
82
+ const badJSONs = [{ signupToken: 4 }];
83
+ await (0, requests_1.expectNonAcceptanceOfBadJsonRequest)(reqOpts, REQ_SIZE_LIMIT, badJSONs);
84
+ });
85
+ async function getAvailableAddressesFor(name) {
86
+ const reqOpts = {
87
+ url: admin.signupUrl + signupApi.availableAddressesForName.URL_END,
88
+ method: 'POST',
89
+ responseType: 'json'
90
+ };
91
+ const req = { name };
92
+ const rep = await (0, xhr_utils_1.doJsonRequest)(reqOpts, req);
93
+ expect(rep.status).toBe(signupApi.availableAddressesForName.SC.ok);
94
+ return rep.data;
95
+ }
96
+ function makeAddUserReq(userId, signupToken) {
97
+ return {
98
+ userId,
99
+ storage: {
100
+ kdParams: {}
101
+ },
102
+ mailerId: {
103
+ defaultPKey: {
104
+ pkey: {
105
+ alg: ecma_nacl_1.box.JWK_ALG_NAME,
106
+ kid: (Buffer.alloc(12)).toString('base64'),
107
+ use: jwkeys_1.use.MID_PKLOGIN,
108
+ k: (Buffer.alloc(ecma_nacl_1.box.KEY_LENGTH)).toString('base64')
109
+ },
110
+ kdParams: {}
111
+ },
112
+ otherPKeys: [{
113
+ alg: ecma_nacl_1.box.JWK_ALG_NAME,
114
+ kid: (Buffer.alloc(12)).toString('base64'),
115
+ use: jwkeys_1.use.MID_PKLOGIN,
116
+ k: (Buffer.alloc(ecma_nacl_1.box.KEY_LENGTH)).toString('base64')
117
+ }]
118
+ },
119
+ signupToken
120
+ };
121
+ }
122
+ function makeBadAddUserReq(goodId) {
123
+ const name = 'Bob Marley';
124
+ const badJSONs = [name, 5, null, undefined, [name],
125
+ { a: 1 }];
126
+ const badIds = ['bad domain str',
127
+ '', ' ', '\t', '\n',
128
+ 5, null, undefined, {}]; // non-strings
129
+ for (const id of badIds) {
130
+ const req = makeAddUserReq(id);
131
+ badJSONs.push(req);
132
+ }
133
+ let req = makeAddUserReq(goodId);
134
+ delete req.userId;
135
+ badJSONs.push(req);
136
+ req = makeAddUserReq(goodId);
137
+ delete req.storage;
138
+ badJSONs.push(req);
139
+ req = makeAddUserReq(goodId);
140
+ delete req.storage.kdParams;
141
+ badJSONs.push(req);
142
+ req = makeAddUserReq(goodId);
143
+ delete req.mailerId;
144
+ badJSONs.push(req);
145
+ req = makeAddUserReq(goodId);
146
+ delete req.mailerId.defaultPKey;
147
+ badJSONs.push(req);
148
+ req = makeAddUserReq(goodId);
149
+ delete req.mailerId.defaultPKey.pkey.alg;
150
+ badJSONs.push(req);
151
+ req = makeAddUserReq(goodId);
152
+ delete req.mailerId.defaultPKey.pkey.k;
153
+ badJSONs.push(req);
154
+ req = makeAddUserReq(goodId);
155
+ delete req.mailerId.defaultPKey.pkey.kid;
156
+ badJSONs.push(req);
157
+ req = makeAddUserReq(goodId);
158
+ delete req.mailerId.defaultPKey.pkey.use;
159
+ badJSONs.push(req);
160
+ req = makeAddUserReq(goodId);
161
+ delete req.mailerId.defaultPKey.kdParams;
162
+ badJSONs.push(req);
163
+ req = makeAddUserReq(goodId);
164
+ delete req.mailerId.otherPKeys;
165
+ badJSONs.push(req);
166
+ req = makeAddUserReq(goodId);
167
+ req.mailerId.otherPKeys.shift();
168
+ badJSONs.push(req);
169
+ req = makeAddUserReq(goodId);
170
+ delete req.mailerId.otherPKeys[0].alg;
171
+ badJSONs.push(req);
172
+ req = makeAddUserReq(goodId);
173
+ delete req.mailerId.otherPKeys[0].k;
174
+ badJSONs.push(req);
175
+ req = makeAddUserReq(goodId);
176
+ delete req.mailerId.otherPKeys[0].kid;
177
+ badJSONs.push(req);
178
+ req = makeAddUserReq(goodId);
179
+ delete req.mailerId.otherPKeys[0].use;
180
+ badJSONs.push(req);
181
+ return badJSONs;
182
+ }
183
+ async function addNewUser(userId, signupToken) {
184
+ const reqOpts = {
185
+ url: admin.signupUrl + signupApi.addUser.URL_END,
186
+ method: 'POST'
187
+ };
188
+ const req = makeAddUserReq(userId, signupToken);
189
+ let rep = await (0, xhr_utils_1.doJsonRequest)(reqOpts, req);
190
+ expect(rep.status).withContext('status when user is added').toBe(signupApi.addUser.SC.ok);
191
+ rep = await (0, xhr_utils_1.doJsonRequest)(reqOpts, req);
192
+ expect(rep.status).withContext('status when user already exists').toBe(signupApi.addUser.SC.userAlreadyExists);
193
+ }
194
+ (0, async_jasmine_1.itAsync)('adds new user', async () => {
195
+ const REQ_SIZE_LIMIT = 4 * 1024;
196
+ const reqOpts = {
197
+ url: admin.signupUrl + signupApi.addUser.URL_END,
198
+ method: 'POST'
199
+ };
200
+ const name = 'Bob Marley ';
201
+ let addresses = await getAvailableAddressesFor(name);
202
+ let numOfAvailableAddresses = addresses.length;
203
+ expect(numOfAvailableAddresses).toBe(signupDomains.length);
204
+ // requests with bad json's
205
+ const badJSONs = makeBadAddUserReq(addresses[0]);
206
+ await (0, requests_1.expectNonAcceptanceOfBadJsonRequest)(reqOpts, REQ_SIZE_LIMIT, badJSONs);
207
+ // normal adding users
208
+ for (const userId of addresses) {
209
+ expect(addresses).toContain(userId);
210
+ await addNewUser(userId);
211
+ numOfAvailableAddresses -= 1;
212
+ addresses = await getAvailableAddressesFor(name);
213
+ expect(addresses.length).toBe(numOfAvailableAddresses);
214
+ expect(addresses).not.toContain(userId);
215
+ }
216
+ });
217
+ (0, async_jasmine_1.itAsync)(`adds new user with token`, async () => {
218
+ const reqOpts = {
219
+ url: admin.signupUrl + signupApi.addUser.URL_END,
220
+ method: 'POST'
221
+ };
222
+ // note that new id has other domain that isn't set anywhere
223
+ const userId = 'Pink Floyd @home.town';
224
+ // let's try to do this without any token
225
+ let req = makeAddUserReq(userId);
226
+ let rep = await (0, xhr_utils_1.doJsonRequest)(reqOpts, req);
227
+ expect(rep.status).withContext('status when no token given').toBe(signupApi.addUser.SC.unauthorized);
228
+ // create token, here setup code uses spec-server specific code
229
+ const token = await admin.createSingleUserSignupTokenFor(userId);
230
+ req = makeAddUserReq(userId, token);
231
+ rep = await (0, xhr_utils_1.doJsonRequest)(reqOpts, req);
232
+ expect(rep.status).withContext('status when user is added').toBe(signupApi.addUser.SC.ok);
233
+ });
234
+ });
235
+ });
@@ -0,0 +1 @@
1
+ declare const jas: any;
@@ -0,0 +1,32 @@
1
+ /*
2
+ Copyright (C) 2016 3NSoft Inc.
3
+
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU General Public License as published by the Free Software
6
+ Foundation, either version 3 of the License, or (at your option) any later
7
+ version.
8
+
9
+ This program is distributed in the hope that it will be useful, but
10
+ WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+ See the GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License along with
15
+ this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+ // NOTE: due to bad definition file, typescript below is not very type-strict.
18
+ const jas = new (require('jasmine'))();
19
+ jas.loadConfig({
20
+ spec_dir: 'build/tests',
21
+ spec_files: [
22
+ 'admin-proto/**/*.js',
23
+ 'protocols/mailerid.js',
24
+ 'protocols/3nstorage/*.js',
25
+ 'protocols/asmail/*.js',
26
+ ],
27
+ random: false
28
+ });
29
+ jas.configureDefaultReporter({
30
+ showColors: true
31
+ });
32
+ jas.execute();
@@ -0,0 +1,22 @@
1
+ import * as api from '../../lib-common/service-api/3nstorage/owner';
2
+ export declare function get3NStorageServiceUrl(storageUrl: string, service: 'owner' | 'shared'): Promise<string>;
3
+ export interface BaseObj {
4
+ objId: string;
5
+ header: Uint8Array;
6
+ segs: Uint8Array;
7
+ }
8
+ export interface Obj extends BaseObj {
9
+ version: number;
10
+ diff?: api.DiffInfo;
11
+ }
12
+ export declare function cancelTransaction(ownerUrl: string, sessionId: string, objId: string, transactionId: string): Promise<void>;
13
+ export declare function getSessionParams(ownerUrl: string, sessionId: string): Promise<api.sessionParams.Reply>;
14
+ /**
15
+ * @param user
16
+ * @param objId is object's id. Null stands for root object.
17
+ * @param ver
18
+ * @param obj
19
+ * @return a promise, resolvable object is writen.
20
+ */
21
+ export declare function saveObj(ownerUrl: string, sessionId: string, objId: string | null, ver: number, obj: Obj): Promise<void>;
22
+ export declare function removeObj(ownerUrl: string, sessionId: string, objId: string): Promise<void>;