@lifeready/core 1.0.1 → 1.0.2

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 (380) hide show
  1. package/README.md +62 -62
  2. package/bundles/lifeready-core.umd.js +15939 -0
  3. package/bundles/lifeready-core.umd.js.map +1 -0
  4. package/bundles/lifeready-core.umd.min.js +16 -0
  5. package/bundles/lifeready-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/_common/ast.js +40 -0
  7. package/esm2015/lib/_common/deferred-promise.js +24 -0
  8. package/esm2015/lib/_common/exceptions.js +157 -0
  9. package/esm2015/lib/_common/queries.gql.js +190 -0
  10. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  11. package/esm2015/lib/_common/types.js +1 -0
  12. package/esm2015/lib/_common/utils.js +44 -0
  13. package/esm2015/lib/api/contact-card.gql.js +79 -0
  14. package/esm2015/lib/api/contact-card.service.js +154 -0
  15. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  16. package/esm2015/lib/api/contact-card2.service.js +103 -0
  17. package/esm2015/lib/api/file.service.js +74 -0
  18. package/esm2015/lib/api/item2.gql.js +110 -0
  19. package/esm2015/lib/api/item2.service.js +311 -0
  20. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  21. package/esm2015/lib/api/key-exchange.service.js +442 -0
  22. package/esm2015/lib/api/key-exchange.types.js +18 -0
  23. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  24. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  25. package/esm2015/lib/api/lock.gql.js +40 -0
  26. package/esm2015/lib/api/lock.service.js +64 -0
  27. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  28. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  29. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  30. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  32. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  33. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  34. package/esm2015/lib/api/message.service.js +138 -0
  35. package/esm2015/lib/api/persist.service.js +181 -0
  36. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  37. package/esm2015/lib/api/query-processor/index.js +3 -0
  38. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  39. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  40. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  41. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  42. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  43. package/esm2015/lib/api/time.service.js +146 -0
  44. package/esm2015/lib/api/types/graphql.types.js +7 -0
  45. package/esm2015/lib/api/types/index.js +3 -0
  46. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  47. package/esm2015/lib/auth/auth.config.js +57 -0
  48. package/esm2015/lib/auth/auth.gql.js +48 -0
  49. package/esm2015/lib/auth/auth.types.js +27 -0
  50. package/esm2015/lib/auth/idle.service.js +168 -0
  51. package/esm2015/lib/auth/idle.types.js +7 -0
  52. package/esm2015/lib/auth/lbop.service.js +355 -0
  53. package/esm2015/lib/auth/life-ready-auth.service.js +500 -0
  54. package/esm2015/lib/auth/password.service.js +320 -0
  55. package/esm2015/lib/auth/register.service.js +172 -0
  56. package/esm2015/lib/auth/two-factor.service.js +74 -0
  57. package/esm2015/lib/category/category-meta.service.js +99 -0
  58. package/esm2015/lib/category/category.gql.js +406 -0
  59. package/esm2015/lib/category/category.service.js +390 -0
  60. package/esm2015/lib/category/category.types.js +29 -0
  61. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  62. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  63. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  64. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  65. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  66. package/esm2015/lib/cryptography/key.service.js +124 -0
  67. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  68. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  69. package/esm2015/lib/life-ready.config.js +84 -0
  70. package/esm2015/lib/life-ready.module.js +74 -0
  71. package/esm2015/lib/plan/plan.gql.js +123 -0
  72. package/esm2015/lib/plan/plan.service.js +149 -0
  73. package/esm2015/lib/plan/plan.types.js +11 -0
  74. package/esm2015/lib/record/record-attachment.service.js +101 -0
  75. package/esm2015/lib/record/record.gql.js +179 -0
  76. package/esm2015/lib/record/record.service.js +206 -0
  77. package/esm2015/lib/record/record.types.js +15 -0
  78. package/esm2015/lib/record-type/record-type.service.js +75 -0
  79. package/esm2015/lib/record-type/record-type.types.js +28 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  82. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  85. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  88. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  89. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  90. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  91. package/esm2015/lib/scenario/scenario.service.js +611 -0
  92. package/esm2015/lib/scenario/scenario.types.js +64 -0
  93. package/esm2015/lib/search/search.gql.js +62 -0
  94. package/esm2015/lib/search/search.service.js +156 -0
  95. package/esm2015/lib/search/search.types.js +6 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -0
  98. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -0
  99. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -0
  100. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +299 -0
  101. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -0
  102. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -0
  103. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -0
  104. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -0
  105. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -0
  106. package/esm2015/lib/users/profile-details.service.js +214 -0
  107. package/esm2015/lib/users/profile.gql.js +97 -0
  108. package/esm2015/lib/users/profile.service.js +169 -0
  109. package/esm2015/lib/users/profile.types.js +34 -0
  110. package/esm2015/lib/users/user.gql.js +60 -0
  111. package/esm2015/lib/users/user.service.js +79 -0
  112. package/esm2015/lib/users/user.types.js +5 -0
  113. package/esm2015/lifeready-core.js +10 -0
  114. package/esm2015/public-api.js +81 -0
  115. package/fesm2015/lifeready-core.js +13314 -0
  116. package/fesm2015/lifeready-core.js.map +1 -0
  117. package/lib/_common/ast.d.ts +11 -0
  118. package/lib/_common/deferred-promise.d.ts +12 -0
  119. package/lib/_common/exceptions.d.ts +109 -0
  120. package/lib/_common/queries.gql.d.ts +10 -0
  121. package/lib/_common/run-outside-angular.d.ts +14 -0
  122. package/{src/lib/_common/types.ts → lib/_common/types.d.ts} +10 -13
  123. package/lib/_common/utils.d.ts +3 -0
  124. package/lib/api/contact-card.gql.d.ts +7 -0
  125. package/lib/api/contact-card.service.d.ts +52 -0
  126. package/lib/api/contact-card2.gql.d.ts +34 -0
  127. package/lib/api/contact-card2.service.d.ts +49 -0
  128. package/lib/api/file.service.d.ts +18 -0
  129. package/lib/api/item2.gql.d.ts +96 -0
  130. package/lib/api/item2.service.d.ts +177 -0
  131. package/lib/api/key-exchange.gql.d.ts +9 -0
  132. package/lib/api/key-exchange.service.d.ts +39 -0
  133. package/lib/api/key-exchange.types.d.ts +196 -0
  134. package/lib/api/key-exchange2.gql.d.ts +125 -0
  135. package/lib/api/key-exchange2.service.d.ts +187 -0
  136. package/lib/api/lock.gql.d.ts +27 -0
  137. package/lib/api/lock.service.d.ts +25 -0
  138. package/lib/api/lr-apollo.service.d.ts +15 -0
  139. package/{src/lib/api/lr-graphql/index.ts → lib/api/lr-graphql/index.d.ts} +5 -5
  140. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -0
  141. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  142. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  143. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  144. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  145. package/lib/api/message.service.d.ts +58 -0
  146. package/lib/api/persist.service.d.ts +31 -0
  147. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  148. package/{src/lib/api/query-processor/index.ts → lib/api/query-processor/index.d.ts} +2 -2
  149. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  150. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  151. package/lib/api/shared-contact-card.service.d.ts +33 -0
  152. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  153. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  154. package/lib/api/time.service.d.ts +16 -0
  155. package/lib/api/types/graphql.types.d.ts +29 -0
  156. package/{src/lib/api/types/index.ts → lib/api/types/index.d.ts} +2 -2
  157. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  158. package/lib/auth/auth.config.d.ts +5 -0
  159. package/lib/auth/auth.gql.d.ts +15 -0
  160. package/lib/auth/auth.types.d.ts +66 -0
  161. package/lib/auth/idle.service.d.ts +40 -0
  162. package/lib/auth/idle.types.d.ts +10 -0
  163. package/lib/auth/lbop.service.d.ts +91 -0
  164. package/lib/auth/life-ready-auth.service.d.ts +59 -0
  165. package/lib/auth/password.service.d.ts +78 -0
  166. package/lib/auth/register.service.d.ts +25 -0
  167. package/lib/auth/two-factor.service.d.ts +15 -0
  168. package/lib/category/category-meta.service.d.ts +23 -0
  169. package/lib/category/category.gql.d.ts +45 -0
  170. package/lib/category/category.service.d.ts +67 -0
  171. package/lib/category/category.types.d.ts +79 -0
  172. package/lib/cryptography/cryptography.types.d.ts +83 -0
  173. package/lib/cryptography/encryption.service.d.ts +41 -0
  174. package/lib/cryptography/key-factory.service.d.ts +38 -0
  175. package/lib/cryptography/key-graph.service.d.ts +33 -0
  176. package/lib/cryptography/key-meta.service.d.ts +44 -0
  177. package/lib/cryptography/key.service.d.ts +36 -0
  178. package/lib/cryptography/slip39.service.d.ts +43 -0
  179. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  180. package/lib/life-ready.config.d.ts +14 -0
  181. package/lib/life-ready.module.d.ts +5 -0
  182. package/lib/plan/plan.gql.d.ts +11 -0
  183. package/lib/plan/plan.service.d.ts +33 -0
  184. package/lib/plan/plan.types.d.ts +31 -0
  185. package/lib/record/record-attachment.service.d.ts +16 -0
  186. package/lib/record/record.gql.d.ts +14 -0
  187. package/lib/record/record.service.d.ts +25 -0
  188. package/lib/record/record.types.d.ts +57 -0
  189. package/lib/record-type/record-type.service.d.ts +11 -0
  190. package/lib/record-type/record-type.types.d.ts +50 -0
  191. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  192. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  193. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  194. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  195. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  196. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  197. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  198. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  199. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  200. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  201. package/lib/scenario/scenario.gql.d.ts +34 -0
  202. package/lib/scenario/scenario.service.d.ts +58 -0
  203. package/lib/scenario/scenario.types.d.ts +217 -0
  204. package/lib/search/search.gql.d.ts +1 -0
  205. package/lib/search/search.service.d.ts +25 -0
  206. package/lib/search/search.types.d.ts +20 -0
  207. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  208. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -0
  209. package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -0
  210. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  211. package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -0
  212. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  213. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  214. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  215. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  216. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  217. package/lib/users/profile-details.service.d.ts +21 -0
  218. package/lib/users/profile.gql.d.ts +11 -0
  219. package/lib/users/profile.service.d.ts +35 -0
  220. package/lib/users/profile.types.d.ts +96 -0
  221. package/lib/users/user.gql.d.ts +9 -0
  222. package/lib/users/user.service.d.ts +12 -0
  223. package/lib/users/user.types.d.ts +23 -0
  224. package/lifeready-core.d.ts +9 -0
  225. package/lifeready-core.metadata.json +1 -0
  226. package/package.json +29 -21
  227. package/{src/public-api.ts → public-api.d.ts} +77 -96
  228. package/karma.conf.js +0 -32
  229. package/ng-package.json +0 -26
  230. package/src/lib/_common/ast.ts +0 -75
  231. package/src/lib/_common/deferred-promise.ts +0 -35
  232. package/src/lib/_common/exceptions.ts +0 -189
  233. package/src/lib/_common/queries.gql.ts +0 -200
  234. package/src/lib/_common/run-outside-angular.ts +0 -125
  235. package/src/lib/_common/tests.ts +0 -82
  236. package/src/lib/_common/utils.ts +0 -57
  237. package/src/lib/api/api-mutation.spec.ts +0 -547
  238. package/src/lib/api/api-query.spec.ts +0 -40
  239. package/src/lib/api/contact-card.gql.ts +0 -85
  240. package/src/lib/api/contact-card.service.spec.ts +0 -249
  241. package/src/lib/api/contact-card.service.ts +0 -228
  242. package/src/lib/api/contact-card2.gql.ts +0 -93
  243. package/src/lib/api/contact-card2.service.spec.ts +0 -297
  244. package/src/lib/api/contact-card2.service.ts +0 -139
  245. package/src/lib/api/file.service.spec.ts +0 -14
  246. package/src/lib/api/file.service.ts +0 -81
  247. package/src/lib/api/item2.gql.ts +0 -211
  248. package/src/lib/api/item2.service.spec.ts +0 -1043
  249. package/src/lib/api/item2.service.ts +0 -481
  250. package/src/lib/api/key-exchange.gql.ts +0 -196
  251. package/src/lib/api/key-exchange.service.spec.ts +0 -470
  252. package/src/lib/api/key-exchange.service.ts +0 -731
  253. package/src/lib/api/key-exchange.types.ts +0 -235
  254. package/src/lib/api/key-exchange2.gql.ts +0 -310
  255. package/src/lib/api/key-exchange2.service.spec.ts +0 -892
  256. package/src/lib/api/key-exchange2.service.ts +0 -875
  257. package/src/lib/api/lock.gql.ts +0 -67
  258. package/src/lib/api/lock.service.spec.ts +0 -549
  259. package/src/lib/api/lock.service.ts +0 -57
  260. package/src/lib/api/lr-apollo.service.spec.ts +0 -27
  261. package/src/lib/api/lr-apollo.service.ts +0 -43
  262. package/src/lib/api/lr-graphql/lr-graphql.service.ts +0 -313
  263. package/src/lib/api/lr-graphql/lr-merged-mutation.ts +0 -377
  264. package/src/lib/api/lr-graphql/lr-mutation-base.ts +0 -67
  265. package/src/lib/api/lr-graphql/lr-mutation.ts +0 -74
  266. package/src/lib/api/lr-graphql/lr.service.ts +0 -28
  267. package/src/lib/api/message.service.spec.ts +0 -20
  268. package/src/lib/api/message.service.ts +0 -210
  269. package/src/lib/api/persist.service.spec.ts +0 -209
  270. package/src/lib/api/persist.service.ts +0 -220
  271. package/src/lib/api/query-processor/common-processors.service.ts +0 -148
  272. package/src/lib/api/query-processor/query-processor.service.ts +0 -240
  273. package/src/lib/api/query-processor/tp-password-reset-processor.service.ts +0 -177
  274. package/src/lib/api/shared-contact-card.service.ts +0 -156
  275. package/src/lib/api/shared-contact-card2.gql.ts +0 -76
  276. package/src/lib/api/shared-contact-card2.service.ts +0 -154
  277. package/src/lib/api/time.service.spec.ts +0 -48
  278. package/src/lib/api/time.service.ts +0 -155
  279. package/src/lib/api/types/graphql.types.ts +0 -48
  280. package/src/lib/api/types/lr-graphql.types.ts +0 -467
  281. package/src/lib/auth/auth.config.ts +0 -83
  282. package/src/lib/auth/auth.gql.ts +0 -62
  283. package/src/lib/auth/auth.types.ts +0 -79
  284. package/src/lib/auth/idle.service.spec.ts +0 -119
  285. package/src/lib/auth/idle.service.ts +0 -208
  286. package/src/lib/auth/idle.types.ts +0 -11
  287. package/src/lib/auth/lbop.service.spec.ts +0 -56
  288. package/src/lib/auth/lbop.service.ts +0 -539
  289. package/src/lib/auth/life-ready-auth.service.spec.ts +0 -70
  290. package/src/lib/auth/life-ready-auth.service.ts +0 -454
  291. package/src/lib/auth/password.service.spec.ts +0 -51
  292. package/src/lib/auth/password.service.ts +0 -438
  293. package/src/lib/auth/register.service.spec.ts +0 -31
  294. package/src/lib/auth/register.service.ts +0 -181
  295. package/src/lib/auth/two-factor.service.spec.ts +0 -21
  296. package/src/lib/auth/two-factor.service.ts +0 -69
  297. package/src/lib/category/category-meta.service.spec.ts +0 -28
  298. package/src/lib/category/category-meta.service.ts +0 -125
  299. package/src/lib/category/category.gql.ts +0 -449
  300. package/src/lib/category/category.service.spec.ts +0 -26
  301. package/src/lib/category/category.service.ts +0 -498
  302. package/src/lib/category/category.types.ts +0 -89
  303. package/src/lib/cryptography/cryptography.types.ts +0 -108
  304. package/src/lib/cryptography/encryption.service.spec.ts +0 -125
  305. package/src/lib/cryptography/encryption.service.ts +0 -243
  306. package/src/lib/cryptography/key-factory.service.spec.ts +0 -15
  307. package/src/lib/cryptography/key-factory.service.ts +0 -303
  308. package/src/lib/cryptography/key-graph.service.spec.ts +0 -16
  309. package/src/lib/cryptography/key-graph.service.ts +0 -354
  310. package/src/lib/cryptography/key-meta.service.spec.ts +0 -40
  311. package/src/lib/cryptography/key-meta.service.ts +0 -254
  312. package/src/lib/cryptography/key.service.spec.ts +0 -16
  313. package/src/lib/cryptography/key.service.ts +0 -154
  314. package/src/lib/cryptography/slip39.service.spec.ts +0 -44
  315. package/src/lib/cryptography/slip39.service.ts +0 -204
  316. package/src/lib/cryptography/web-crypto.service.ts +0 -22
  317. package/src/lib/life-ready.config.ts +0 -127
  318. package/src/lib/life-ready.module.ts +0 -81
  319. package/src/lib/plan/plan.gql.ts +0 -133
  320. package/src/lib/plan/plan.service.spec.ts +0 -294
  321. package/src/lib/plan/plan.service.ts +0 -198
  322. package/src/lib/plan/plan.types.ts +0 -37
  323. package/src/lib/record/record-attachment.service.spec.ts +0 -31
  324. package/src/lib/record/record-attachment.service.ts +0 -101
  325. package/src/lib/record/record.gql.ts +0 -192
  326. package/src/lib/record/record.service.spec.ts +0 -598
  327. package/src/lib/record/record.service.ts +0 -236
  328. package/src/lib/record/record.types.ts +0 -86
  329. package/src/lib/record-type/record-type.service.spec.ts +0 -16
  330. package/src/lib/record-type/record-type.service.ts +0 -71
  331. package/src/lib/record-type/record-type.types.ts +0 -58
  332. package/src/lib/scenario/approvals/scenario-approval.gql.ts +0 -112
  333. package/src/lib/scenario/approvals/scenario-approval.types.ts +0 -85
  334. package/src/lib/scenario/approvals/scenario-approver.service.spec.ts +0 -16
  335. package/src/lib/scenario/approvals/scenario-approver.service.ts +0 -422
  336. package/src/lib/scenario/claimants/scenario-claimant.gql.ts +0 -56
  337. package/src/lib/scenario/claimants/scenario-claimant.service.spec.ts +0 -16
  338. package/src/lib/scenario/claimants/scenario-claimant.service.ts +0 -100
  339. package/src/lib/scenario/claimants/scenario-claimant.types.ts +0 -21
  340. package/src/lib/scenario/receivers/scenario-receiver.gql.ts +0 -157
  341. package/src/lib/scenario/receivers/scenario-receiver.service.spec.ts +0 -16
  342. package/src/lib/scenario/receivers/scenario-receiver.service.ts +0 -278
  343. package/src/lib/scenario/receivers/scenario-receiver.types.ts +0 -66
  344. package/src/lib/scenario/scenario-setup.service.spec.ts +0 -22
  345. package/src/lib/scenario/scenario-setup.service.ts +0 -369
  346. package/src/lib/scenario/scenario.gql.ts +0 -404
  347. package/src/lib/scenario/scenario.service.spec.ts +0 -1586
  348. package/src/lib/scenario/scenario.service.ts +0 -811
  349. package/src/lib/scenario/scenario.types.ts +0 -258
  350. package/src/lib/search/search.gql.ts +0 -62
  351. package/src/lib/search/search.service.spec.ts +0 -57
  352. package/src/lib/search/search.service.ts +0 -174
  353. package/src/lib/search/search.types.ts +0 -24
  354. package/src/lib/trusted-parties/tp-password-reset-request.service.ts +0 -140
  355. package/src/lib/trusted-parties/tp-password-reset-user.service.ts +0 -359
  356. package/src/lib/trusted-parties/tp-password-reset.gql.ts +0 -453
  357. package/src/lib/trusted-parties/tp-password-reset.service.spec.ts +0 -602
  358. package/src/lib/trusted-parties/tp-password-reset.service.ts +0 -482
  359. package/src/lib/trusted-parties/trusted-party.gql.ts +0 -159
  360. package/src/lib/trusted-parties/trusted-party.service.spec.ts +0 -1008
  361. package/src/lib/trusted-parties/trusted-party.service.ts +0 -394
  362. package/src/lib/trusted-parties/trusted-party.types.ts +0 -119
  363. package/src/lib/trusted-parties/trusted-party2.gql.ts +0 -165
  364. package/src/lib/trusted-parties/trusted-party2.service.spec.ts +0 -1782
  365. package/src/lib/trusted-parties/trusted-party2.service.ts +0 -272
  366. package/src/lib/users/profile-details.service.spec.ts +0 -45
  367. package/src/lib/users/profile-details.service.ts +0 -278
  368. package/src/lib/users/profile.gql.ts +0 -108
  369. package/src/lib/users/profile.service.spec.ts +0 -97
  370. package/src/lib/users/profile.service.ts +0 -224
  371. package/src/lib/users/profile.types.ts +0 -101
  372. package/src/lib/users/user.gql.ts +0 -69
  373. package/src/lib/users/user.service.spec.ts +0 -161
  374. package/src/lib/users/user.service.ts +0 -72
  375. package/src/lib/users/user.types.ts +0 -27
  376. package/src/test.ts +0 -21
  377. package/tsconfig.lib.json +0 -21
  378. package/tsconfig.lib.prod.json +0 -6
  379. package/tsconfig.spec.json +0 -10
  380. package/tslint.json +0 -17
@@ -1,892 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { environment } from 'projects/lr-auth-app/src/environments/environment';
3
- import {
4
- loginTestUser,
5
- logoutUser,
6
- } from '../auth/life-ready-auth.service.spec';
7
- import {
8
- deleteAllTps2,
9
- getTp2,
10
- } from '../trusted-parties/trusted-party2.service.spec';
11
- import { ProfileService } from '../users/profile.service';
12
- import { LrExpiredCodeException } from '../_common/exceptions';
13
- import {
14
- lrConfigureTestingModule,
15
- lrExpectAsyncThrow,
16
- lrExpectGqlErrorCodes,
17
- lrit,
18
- } from '../_common/tests';
19
- import { KeyExchangeFragment } from './key-exchange2.gql';
20
- import {
21
- KeyExchange2Service,
22
- SendContactCardInput,
23
- } from './key-exchange2.service';
24
- import { LrGraphQLService, LrMergedMutation } from './lr-graphql';
25
- import { MessageService } from './message.service';
26
-
27
- const TIMEOUT = 1000 * 60 * 10;
28
-
29
- export async function cancelAllKeyExchanges(username, password) {
30
- const keyExchange2 = TestBed.inject(KeyExchange2Service);
31
- const lrGraphQL = TestBed.inject(LrGraphQLService);
32
-
33
- await loginTestUser(username, password);
34
-
35
- const kes = await keyExchange2.getKeyExchanges({
36
- state: 'IN_PROGRESS',
37
- });
38
-
39
- const mutations = kes.map((ke) =>
40
- ke.isInitiator
41
- ? keyExchange2.cancelKeyExchangeMutation(ke.id)
42
- : keyExchange2.declineKeyExchangeMutation(ke.id, ke.token)
43
- );
44
-
45
- return lrGraphQL.lrMutate(LrMergedMutation.create(mutations));
46
- }
47
-
48
- // export async function completeAllKeyExchanges(username, password) {
49
- // const keyExchange2 = TestBed.inject(KeyExchange2Service);
50
- // const lrGraphQL = TestBed.inject(LrGraphQLService);
51
-
52
- // await loginTestUser(username, password);
53
-
54
- // const kes = await keyExchange2.getKeyExchanges({
55
- // state: 'IN_PROGRESS',
56
- // });
57
-
58
- // return Promise.all(
59
- // kes.map(
60
- // (ke) =>
61
- // ke.state == 'IN_PROGRESS' &&
62
- // lrGraphQL.lrMutate<any>(
63
- // ke.isInitiator
64
- // ? keyExchange2.cancelKeyExchange(ke.id)
65
- // : keyExchange2.declineKeyExchange(ke.id, ke.token)
66
- // )
67
- // )
68
- // );
69
- // }
70
-
71
- const scc1: SendContactCardInput = {
72
- ownerCipherDataClearJson: {
73
- data: 'User 1 private data', // use this to store the references to the fields in the master CC
74
- },
75
- sharedCipherDataClearJson: {
76
- name: { name: 'User 1 CC info to be shared with user 2' },
77
- phones: [{ label: 'null', value: '0432 123 456' }],
78
- },
79
- ownerPlainDataJson: {
80
- name: {
81
- name: '1 First Last',
82
- firstName: '1 First',
83
- lastName: '1 Last ',
84
- title: '1 Dr',
85
- },
86
- },
87
- };
88
- const scc2: SendContactCardInput = {
89
- ownerCipherDataClearJson: {
90
- data: 'User 2 private data', // use this to store the references to the fields in the master CC
91
- },
92
- sharedCipherDataClearJson: {
93
- name: { name: 'User 2 CC info to be shared with user 1' },
94
- phones: [{ label: 'null', value: '+61 1111 222 333' }],
95
- },
96
- ownerPlainDataJson: {
97
- name: {
98
- name: '2 First Last',
99
- firstName: '2 First',
100
- lastName: '2 Last ',
101
- title: '2 Dr',
102
- },
103
- },
104
- };
105
-
106
- describe('KeyExchange2Service', () => {
107
- let keyExchange2: KeyExchange2Service;
108
- let messageService: MessageService;
109
- let profileService: ProfileService;
110
- // let userService: UserService;
111
- // let trustedPartyService: TrustedPartyService;
112
- // let sccService: SharedContactCardService;
113
- let lrGraphQL: LrGraphQLService;
114
-
115
- beforeEach(async () => {
116
- lrConfigureTestingModule();
117
- keyExchange2 = TestBed.inject(KeyExchange2Service);
118
- profileService = TestBed.inject(ProfileService);
119
- messageService = TestBed.inject(MessageService);
120
- lrGraphQL = TestBed.inject(LrGraphQLService);
121
- }, TIMEOUT);
122
-
123
- lrit(
124
- 'should exchange keys and send messages',
125
- async () => {
126
- if (!environment.test) {
127
- return;
128
- }
129
-
130
- const {
131
- username: username1,
132
- password: password1,
133
- } = environment.test.users[0];
134
- const {
135
- username: username2,
136
- password: password2,
137
- } = environment.test.users[1];
138
-
139
- // ------------------------------------------------------
140
- // Prepare
141
- // ------------------------------------------------------
142
- await cancelAllKeyExchanges(username1, password1);
143
- await cancelAllKeyExchanges(username2, password2);
144
- await deleteAllTps2(username1, password1);
145
- await deleteAllTps2(username2, password2);
146
-
147
- // ------------------------------------------------------
148
- // Test User 1
149
- // ------------------------------------------------------
150
- await loginTestUser(username1, password1);
151
-
152
- const msg1 = 'from initiator';
153
- const {
154
- lrMutation: initiatedLrMutation,
155
- otKeyK: initiatedOtKeyK,
156
- } = await keyExchange2.initiateOtk({ message: msg1, contactCard: scc1 });
157
-
158
- const { initiateKeyExchangeOtk: initiated } = await lrGraphQL.lrMutate(
159
- initiatedLrMutation
160
- );
161
-
162
- expect(initiated.keyExchange.responderEmailAddress).toBeNull();
163
- expect(initiatedOtKeyK).toBeTruthy();
164
- expect(initiated.keyExchange.id).toBeTruthy();
165
-
166
- let ke: KeyExchangeFragment;
167
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id);
168
-
169
- expect(ke.id).toBeTruthy();
170
- expect(ke.token).toBeTruthy();
171
- expect(ke.initiatorActionRequired).toBe(false);
172
- expect(ke.responderActionRequired).toBe(true);
173
- expect(ke.state).toEqual('IN_PROGRESS');
174
- expect(ke.otk.state).toEqual('OTK_INITIATED');
175
-
176
- const {
177
- lrMutation: cancelledMutation,
178
- otKeyK: cancelledOtKeyK,
179
- } = await keyExchange2.initiateOtk({
180
- message: 'to be cancelled by initiator',
181
- contactCard: scc1,
182
- });
183
- const { initiateKeyExchangeOtk: cancelled } = await lrGraphQL.lrMutate(
184
- cancelledMutation
185
- );
186
-
187
- const {
188
- lrMutation: declinedMutation,
189
- otKeyK: declinedOtKeyK,
190
- } = await keyExchange2.initiateOtk({
191
- message: 'to be declined by responder',
192
- contactCard: scc1,
193
- });
194
- const { initiateKeyExchangeOtk: declined } = await lrGraphQL.lrMutate(
195
- declinedMutation
196
- );
197
-
198
- const {
199
- lrMutation: declinedAfterAcceptMutation,
200
- otKeyK: declinedAfterAcceptOtKeyK,
201
- } = await keyExchange2.initiateOtk({
202
- message: 'to be declined by responder after accepting',
203
- contactCard: scc1,
204
- });
205
- const {
206
- initiateKeyExchangeOtk: declinedAfterAccept,
207
- } = await lrGraphQL.lrMutate(declinedAfterAcceptMutation);
208
-
209
- // Initiator cancels
210
- await lrGraphQL.lrMutate(
211
- keyExchange2.cancelKeyExchange(cancelled.keyExchange.id)
212
- );
213
-
214
- ke = await keyExchange2.getKeyExchange(cancelled.keyExchange.id);
215
- expect(ke.state).toEqual('CANCELLED');
216
-
217
- console.log('----------------------------------------------------------');
218
- console.log(JSON.stringify(ke, null, 2));
219
-
220
- // ------------------------------------------------------
221
- // Logout
222
- // ------------------------------------------------------
223
- await logoutUser();
224
-
225
- // Responder declines
226
- await lrGraphQL.lrMutate(
227
- await keyExchange2.declineKeyExchange(
228
- declined.keyExchange.id,
229
- declined.keyExchange.token
230
- ),
231
- {
232
- includeKeyGraph: false,
233
- }
234
- );
235
-
236
- ke = await keyExchange2.getKeyExchange(declined.keyExchange.id, {
237
- token: declined.keyExchange.token,
238
- otKeyK: declinedOtKeyK,
239
- });
240
- expect(ke.state).toEqual('DECLINED');
241
-
242
- console.log('----------------------------------------------------------');
243
- console.log(JSON.stringify(ke, null, 2));
244
-
245
- // Responder declines again should fail
246
- (
247
- await lrExpectAsyncThrow(
248
- lrGraphQL.lrMutate(
249
- keyExchange2.declineKeyExchange(
250
- declined.keyExchange.id,
251
- declined.keyExchange.token
252
- )
253
- )
254
- )
255
- ).toBeTruthy();
256
-
257
- // Check message can be extract pre auth
258
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id, {
259
- token: initiated.keyExchange.token,
260
- otKeyK: initiatedOtKeyK,
261
- });
262
- expect(ke.otk.otKeyCipherClearJson.initiator.message).toEqual(msg1);
263
-
264
- // ------------------------------------------------------
265
- // Test User 2
266
- // ------------------------------------------------------
267
- await loginTestUser(username2, password2);
268
-
269
- // Responder accepts then declines
270
- // Note that declining a key exchange will always invalidate the current shared key. So make
271
- // sure to do this first before the next test that accepts the exchange.
272
- ke = await keyExchange2.getKeyExchange(
273
- declinedAfterAccept.keyExchange.id,
274
- {
275
- token: declinedAfterAccept.keyExchange.token,
276
- otKeyK: declinedAfterAcceptOtKeyK,
277
- }
278
- );
279
-
280
- await lrGraphQL.lrMutate(
281
- keyExchange2.respondOtk({
282
- keyExchangeId: ke.id,
283
- token: ke.token,
284
- decryptedOtk: {
285
- otKeyCipherClearJson: ke.otk.otKeyCipherClearJson,
286
- otKey: ke.otk.otKey,
287
- },
288
- message: { message: 'will be declined after accepting' },
289
- responderContactCard: scc2,
290
- initiatorContactCard: {
291
- receiverCipherDataClearJson:
292
- ke.otk.otKeyCipherClearJson.initiator.contactCard
293
- .sharedCipherDataClearJson,
294
- },
295
- })
296
- );
297
-
298
- await lrGraphQL.lrMutate(
299
- keyExchange2.declineKeyExchange(
300
- declinedAfterAccept.keyExchange.id,
301
- declinedAfterAccept.keyExchange.token
302
- )
303
- );
304
-
305
- ke = await keyExchange2.getKeyExchange(
306
- declinedAfterAccept.keyExchange.id
307
- );
308
- expect(ke.state).toEqual('DECLINED');
309
-
310
- // Declining again throws error
311
- (
312
- await lrExpectAsyncThrow(
313
- lrGraphQL.lrMutate(
314
- keyExchange2.declineKeyExchange(
315
- declinedAfterAccept.keyExchange.id,
316
- declinedAfterAccept.keyExchange.token
317
- )
318
- )
319
- )
320
- ).toBeTruthy();
321
-
322
- // Accept
323
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id, {
324
- token: initiated.keyExchange.token,
325
- otKeyK: initiatedOtKeyK,
326
- });
327
-
328
- const msg2 = 'from responder';
329
- const accepted = (
330
- await lrGraphQL.lrMutate(
331
- keyExchange2.respondOtk({
332
- keyExchangeId: ke.id,
333
- token: ke.token,
334
- decryptedOtk: {
335
- otKeyCipherClearJson: ke.otk.otKeyCipherClearJson,
336
- otKey: ke.otk.otKey,
337
- },
338
- message: msg2,
339
- responderContactCard: scc2,
340
- initiatorContactCard: {
341
- receiverCipherDataClearJson:
342
- ke.otk.otKeyCipherClearJson.initiator.contactCard
343
- .sharedCipherDataClearJson,
344
- },
345
- })
346
- )
347
- ).respondKeyExchangeOtk;
348
- expect(accepted.keyExchange.initiatorActionRequired).toBe(true);
349
- expect(accepted.keyExchange.responderActionRequired).toBe(false);
350
- expect(accepted.keyExchange.state).toEqual('IN_PROGRESS');
351
- expect(accepted.keyExchange.otk.state).toEqual('OTK_ACCEPTED');
352
-
353
- // Send message from User 2 to User 1 using username
354
- const plainMessageJson2to1 = {
355
- plain: 'plain message from test user 2 to test user 1',
356
- };
357
- const plainCipherMessageJson2to1 =
358
- 'cipher message from test user 2 to test user 1';
359
- const message2to1 = await messageService.sendMessage({
360
- username: username1,
361
- plainMessageJson: plainMessageJson2to1,
362
- plainCipherMessageJson: plainCipherMessageJson2to1,
363
- });
364
-
365
- // ------------------------------------------------------
366
- // Test User 1
367
- // ------------------------------------------------------
368
- await loginTestUser(username1, password1);
369
-
370
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id);
371
-
372
- const completed = (
373
- await lrGraphQL.lrMutate(
374
- keyExchange2.completeOtk({
375
- keyExchangeId: ke.id,
376
- initiatorRootKeyCipher: ke.initiatorRootKeyCipher,
377
- initiatorOneTimePbkCipher: ke.otk.initiatorOneTimePbkCipher,
378
- responderContactCard: {
379
- receiverCipherDataClearJson:
380
- ke.otk.initiatorOneTimePbkCipherClearJson.responder.contactCard
381
- .sharedCipherDataClearJson,
382
- },
383
- })
384
- )
385
- ).completeKeyExchangeOtk;
386
- expect(completed.keyExchange.initiatorActionRequired).toBe(false);
387
- expect(completed.keyExchange.responderActionRequired).toBe(false);
388
- expect(completed.keyExchange.state).toEqual('COMPLETED');
389
- expect(completed.keyExchange.otk.state).toEqual('OTK_COMPLETED');
390
-
391
- const userSharedKey = (
392
- await keyExchange2.getCurrentUserSharedKey({
393
- username: username2,
394
- })
395
- ).currentUserSharedKey.userSharedKey;
396
-
397
- expect(userSharedKey.sharedKey.id).toEqual(
398
- completed.userSharedKey.sharedKey.id,
399
- 'Current user shared key not set to the new one just shared.'
400
- );
401
-
402
- // Get message from user 2
403
- const message2to1Copy = await messageService.getMessage(
404
- message2to1.message.id
405
- );
406
- expect(JSON.stringify(message2to1Copy.plainMessageJson)).toEqual(
407
- JSON.stringify(plainMessageJson2to1)
408
- );
409
- expect(
410
- JSON.stringify(message2to1Copy.plainSignedCipherMessageJson)
411
- ).toEqual(JSON.stringify(plainCipherMessageJson2to1));
412
-
413
- // Send message from User 1 to User 2 using userId
414
- const plainMessageJson1to2 = {
415
- plain: 'plain message from test user 1 to test user 2',
416
- };
417
- const plainCipherMessageJson1to2 =
418
- 'cipher message from test user 1 to test user 2';
419
- const message1to2 = await messageService.sendMessage({
420
- username: username2,
421
- plainMessageJson: plainMessageJson1to2,
422
- plainCipherMessageJson: plainCipherMessageJson1to2,
423
- });
424
-
425
- // ------------------------------------------------------
426
- // Test User 2
427
- // ------------------------------------------------------
428
- await loginTestUser(username2, password2);
429
- const message1to2Copy = await messageService.getMessage(
430
- message1to2.message.id
431
- );
432
- expect(JSON.stringify(message1to2Copy.plainMessageJson)).toEqual(
433
- JSON.stringify(plainMessageJson1to2)
434
- );
435
- expect(
436
- JSON.stringify(message1to2Copy.plainSignedCipherMessageJson)
437
- ).toEqual(JSON.stringify(plainCipherMessageJson1to2));
438
- },
439
- TIMEOUT
440
- );
441
-
442
- lrit(
443
- 'should exchange keys with specific user',
444
- async () => {
445
- if (!environment.test) {
446
- return;
447
- }
448
-
449
- const {
450
- username: username1,
451
- password: password1,
452
- email: email1,
453
- } = environment.test.users[0];
454
- const {
455
- username: username2,
456
- password: password2,
457
- email: email2,
458
- } = environment.test.users[1];
459
- const {
460
- username: username3,
461
- password: password3,
462
- email: email3,
463
- } = environment.test.users[2];
464
-
465
- // ------------------------------------------------------
466
- // Prepare
467
- // ------------------------------------------------------
468
- await cancelAllKeyExchanges(username1, password1);
469
- await cancelAllKeyExchanges(username2, password2);
470
- await cancelAllKeyExchanges(username3, password3);
471
- await deleteAllTps2(username1, password1);
472
- await deleteAllTps2(username2, password2);
473
- await deleteAllTps2(username3, password3);
474
-
475
- // ------------------------------------------------------
476
- // Test User 1
477
- // ------------------------------------------------------
478
- const msg1 = 'from initiator';
479
- let ke: KeyExchangeFragment;
480
-
481
- await loginTestUser(username1, password1);
482
-
483
- const {
484
- lrMutation: initiatedLrMutation,
485
- otKeyK: initiatedOtKeyK,
486
- } = await keyExchange2.initiateOtk({
487
- email: email2,
488
- message: msg1,
489
- contactCard: scc1,
490
- upgrade: true,
491
- });
492
-
493
- const { initiateKeyExchangeOtk: initiated } = await lrGraphQL.lrMutate(
494
- initiatedLrMutation
495
- );
496
-
497
- expect(initiated.keyExchange.responderEmailAddress).toEqual(email2);
498
-
499
- // ------------------------------------------------------
500
- // Not signed in
501
- // ------------------------------------------------------
502
- await logoutUser();
503
- (
504
- await lrExpectAsyncThrow(
505
- keyExchange2.getKeyExchange(initiated.keyExchange.id)
506
- )
507
- ).toBeTruthy();
508
-
509
- // ------------------------------------------------------
510
- // Test User 3
511
- // ------------------------------------------------------
512
- await loginTestUser(username3, password3);
513
- // No access since not targeted at User3
514
- (
515
- await lrExpectAsyncThrow(
516
- keyExchange2.getKeyExchange(initiated.keyExchange.id)
517
- )
518
- ).toBeTruthy();
519
- // But can still access via the direct link
520
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id, {
521
- token: initiated.keyExchange.token,
522
- otKeyK: initiatedOtKeyK,
523
- });
524
- // Can not accept because it's sent to user2.
525
- (
526
- await lrExpectAsyncThrow(
527
- lrGraphQL.lrMutate(
528
- keyExchange2.respondOtk({
529
- keyExchangeId: ke.id,
530
- token: ke.token,
531
- decryptedOtk: {
532
- otKey: ke.otk.otKey,
533
- otKeyCipherClearJson: ke.otk.otKeyCipherClearJson,
534
- },
535
- message: {
536
- message: 'can not accept because it is targeted to user2',
537
- },
538
- responderContactCard: scc2,
539
- initiatorContactCard: {
540
- receiverCipherDataClearJson:
541
- ke.otk.otKeyCipherClearJson.initiator.contactCard
542
- .sharedCipherDataClearJson,
543
- },
544
- })
545
- )
546
- )
547
- ).toBeTruthy();
548
-
549
- // ------------------------------------------------------
550
- // Test User 2
551
- // ------------------------------------------------------
552
- await loginTestUser(username2, password2);
553
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id);
554
- const accepted = (
555
- await lrGraphQL.lrMutate(
556
- keyExchange2.respondOtk({
557
- keyExchangeId: ke.id,
558
- token: ke.token,
559
- decryptedOtk: {
560
- otKey: ke.otk.otKey,
561
- otKeyCipherClearJson: ke.otk.otKeyCipherClearJson,
562
- },
563
- message: { message: 'user2 can accept' },
564
- responderContactCard: scc2,
565
- initiatorContactCard: {
566
- receiverCipherDataClearJson:
567
- ke.otk.otKeyCipherClearJson.initiator.contactCard
568
- .sharedCipherDataClearJson,
569
- },
570
- })
571
- )
572
- ).respondKeyExchangeOtk;
573
- expect(accepted.userSharedKey).toBeTruthy();
574
- expect(accepted.keyExchange.initiatorActionRequired).toBe(true);
575
- expect(accepted.keyExchange.responderActionRequired).toBe(false);
576
- expect(accepted.keyExchange.state).toEqual('IN_PROGRESS');
577
- expect(accepted.keyExchange.otk.state).toEqual('OTK_ACCEPTED');
578
-
579
- // ------------------------------------------------------
580
- // Test User 1
581
- // ------------------------------------------------------
582
- await loginTestUser(username1, password1);
583
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id);
584
-
585
- const completed = (
586
- await lrGraphQL.lrMutate(
587
- keyExchange2.completeOtk({
588
- keyExchangeId: ke.id,
589
- initiatorRootKeyCipher: ke.initiatorRootKeyCipher,
590
- initiatorOneTimePbkCipher: ke.otk.initiatorOneTimePbkCipher,
591
- responderContactCard: {
592
- receiverCipherDataClearJson:
593
- ke.otk.initiatorOneTimePbkCipherClearJson.responder.contactCard
594
- .sharedCipherDataClearJson,
595
- },
596
- })
597
- )
598
- ).completeKeyExchangeOtk;
599
- expect(completed.userSharedKey).toBeTruthy();
600
- expect(completed.keyExchange.initiatorActionRequired).toBe(false);
601
- expect(completed.keyExchange.responderActionRequired).toBe(false);
602
- expect(completed.keyExchange.state).toEqual('COMPLETED');
603
- expect(completed.keyExchange.otk.state).toEqual('OTK_COMPLETED');
604
- },
605
- TIMEOUT
606
- );
607
-
608
- lrit(
609
- 'should create shared contact cards',
610
- async () => {
611
- const {
612
- username: username1,
613
- password: password1,
614
- } = environment.test.users[0];
615
- const {
616
- username: username2,
617
- password: password2,
618
- } = environment.test.users[1];
619
-
620
- // ------------------------------------------------------
621
- // Prepare
622
- // ------------------------------------------------------
623
- await cancelAllKeyExchanges(username1, password1);
624
- await cancelAllKeyExchanges(username2, password2);
625
- await deleteAllTps2(username1, password1);
626
- await deleteAllTps2(username2, password2);
627
-
628
- let ke: KeyExchangeFragment;
629
-
630
- // ------------------------------------------------------
631
- // Test User 1
632
- // ------------------------------------------------------
633
- await loginTestUser(username1, password1);
634
- const msg1 = 'from initiator';
635
-
636
- const {
637
- lrMutation: initiatedLrMutation,
638
- otKeyK: initiatedOtKeyK,
639
- } = await keyExchange2.initiateOtk({
640
- message: msg1,
641
- contactCard: scc1,
642
- });
643
-
644
- const { initiateKeyExchangeOtk: initiated } = await lrGraphQL.lrMutate(
645
- initiatedLrMutation
646
- );
647
-
648
- expect(initiated.keyExchange.responderEmailAddress).toBeNull();
649
-
650
- // ------------------------------------------------------
651
- // Test User 2
652
- // ------------------------------------------------------
653
- await loginTestUser(username2, password2);
654
-
655
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id, {
656
- token: initiated.keyExchange.token,
657
- otKeyK: initiatedOtKeyK,
658
- });
659
-
660
- const { respondKeyExchangeOtk: accepted } = await lrGraphQL.lrMutate(
661
- keyExchange2.respondOtk({
662
- keyExchangeId: ke.id,
663
- token: ke.token,
664
- decryptedOtk: {
665
- otKey: ke.otk.otKey,
666
- otKeyCipherClearJson: ke.otk.otKeyCipherClearJson,
667
- },
668
- message: 'user2 can accept',
669
- responderContactCard: scc2,
670
- initiatorContactCard: {
671
- receiverCipherDataClearJson:
672
- ke.otk.otKeyCipherClearJson.initiator.contactCard
673
- .sharedCipherDataClearJson,
674
- },
675
- })
676
- );
677
-
678
- // ------------------------------------------------------
679
- // Test User 1
680
- // ------------------------------------------------------
681
- await loginTestUser(username1, password1);
682
-
683
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id);
684
-
685
- expect(
686
- ke.initiatorRootKeyCipherClearJson.initiatorContactCard
687
- .sharedCipherDataClearJson
688
- ).toEqual(scc1.sharedCipherDataClearJson);
689
-
690
- expect(
691
- ke.otk.initiatorOneTimePbkCipherClearJson.responder.contactCard
692
- .sharedCipherDataClearJson
693
- ).toEqual(scc2.sharedCipherDataClearJson);
694
-
695
- const { completeKeyExchangeOtk: completed } = await lrGraphQL.lrMutate(
696
- keyExchange2.completeOtk({
697
- keyExchangeId: ke.id,
698
- initiatorRootKeyCipher: ke.initiatorRootKeyCipher,
699
- initiatorOneTimePbkCipher: ke.otk.initiatorOneTimePbkCipher,
700
- responderContactCard: {
701
- receiverCipherDataClearJson:
702
- ke.otk.initiatorOneTimePbkCipherClearJson.responder.contactCard
703
- .sharedCipherDataClearJson,
704
- },
705
- })
706
- );
707
- },
708
- TIMEOUT
709
- );
710
-
711
- lrit(
712
- 'should invite existing user via email',
713
- async () => {
714
- const {
715
- username: username1,
716
- password: password1,
717
- email: email1,
718
- } = environment.test.users[0];
719
- const {
720
- username: username2,
721
- password: password2,
722
- email: email2,
723
- } = environment.test.users[1];
724
- const {
725
- username: username3,
726
- password: password3,
727
- email: email3,
728
- } = environment.test.users[2];
729
-
730
- // ------------------------------------------------------
731
- // Prepare
732
- // ------------------------------------------------------
733
- await cancelAllKeyExchanges(username1, password1);
734
- await cancelAllKeyExchanges(username2, password2);
735
- await cancelAllKeyExchanges(username3, password3);
736
- await deleteAllTps2(username1, password1);
737
- await deleteAllTps2(username2, password2);
738
- await deleteAllTps2(username3, password3);
739
-
740
- let ke: KeyExchangeFragment;
741
-
742
- // ------------------------------------------------------
743
- // Test User 1
744
- // ------------------------------------------------------
745
- await loginTestUser(username1, password1);
746
- const msg1 = 'from initiator';
747
-
748
- const {
749
- lrMutation: initiatedLrMutation,
750
- otKeyK: initiatedOtKeyK,
751
- } = await keyExchange2.initiateOtk({
752
- message: msg1,
753
- contactCard: scc1,
754
- email: email2,
755
- upgrade: true,
756
- });
757
-
758
- const { initiateKeyExchangeOtk: initiated } = await lrGraphQL.lrMutate(
759
- initiatedLrMutation
760
- );
761
-
762
- expect(initiated.keyExchange.responder).toBeNull(
763
- 'Initiator can not access responder information unless responder accepts invite.'
764
- );
765
-
766
- // ------------------------------------------------------
767
- // No user
768
- // ------------------------------------------------------
769
- await logoutUser();
770
-
771
- // Unauthenticated users need to have the token and the raw otKey in order to access the invite.
772
- ke = await keyExchange2.getKeyExchange(initiated.keyExchange.id, {
773
- token: initiated.keyExchange.token,
774
- otKeyK: initiatedOtKeyK,
775
- });
776
-
777
- // Can read the invite. This is so that the responder can get some more information about
778
- // the invite before needing to login.
779
- expect(ke.otk.otKeyCipherClearJson.initiator.message).toEqual(msg1);
780
-
781
- // ------------------------------------------------------
782
- // Test User 3
783
- // ------------------------------------------------------
784
- // but can not accept it as a user3 because the email has been upgraded to invite the
785
- // existing user2.
786
- await loginTestUser(username3, password3);
787
-
788
- (
789
- await lrExpectGqlErrorCodes(
790
- lrGraphQL.lrMutate(
791
- keyExchange2.respondOtk({
792
- keyExchangeId: ke.id,
793
- token: ke.token,
794
- decryptedOtk: {
795
- otKeyCipherClearJson: ke.otk.otKeyCipherClearJson,
796
- otKey: ke.otk.otKey,
797
- },
798
- responderContactCard: scc2,
799
- initiatorContactCard: {
800
- receiverCipherDataClearJson:
801
- ke.otk.otKeyCipherClearJson.initiator.contactCard
802
- .sharedCipherDataClearJson,
803
- },
804
- })
805
- )
806
- )
807
- ).toContain('BAD_ARGUMENT');
808
-
809
- // ------------------------------------------------------
810
- // Test User 2
811
- // ------------------------------------------------------
812
- await loginTestUser(username2, password2);
813
-
814
- // The invite is to the existing user 2, so user 2 should be able to list it.
815
- // And since we cancelled all the invites at the start of this test, there should
816
- // be only one invite for user 2.
817
- let kes = await keyExchange2.getKeyExchanges({ state: 'IN_PROGRESS' });
818
- expect(kes.length).toBe(1);
819
- ke = kes[0];
820
- expect(ke.otk.otKeyCipherClearJson.initiator.message).toEqual(msg1);
821
-
822
- ke = (
823
- await lrGraphQL.lrMutate(
824
- keyExchange2.respondOtk({
825
- keyExchangeId: ke.id,
826
- token: ke.token,
827
- decryptedOtk: {
828
- otKeyCipherClearJson: ke.otk.otKeyCipherClearJson,
829
- otKey: ke.otk.otKey,
830
- },
831
- responderContactCard: scc2,
832
- initiatorContactCard: {
833
- receiverCipherDataClearJson:
834
- ke.otk.otKeyCipherClearJson.initiator.contactCard
835
- .sharedCipherDataClearJson,
836
- },
837
- })
838
- )
839
- ).respondKeyExchangeOtk.keyExchange;
840
-
841
- expect(ke.responder).toBeDefined(
842
- 'Responder can access responder information now that key exchange has been responded to.'
843
- );
844
- console.log('ke', ke);
845
-
846
- // ------------------------------------------------------
847
- // Test User 1
848
- // ------------------------------------------------------
849
- await loginTestUser(username1, password1);
850
-
851
- kes = await keyExchange2.getKeyExchanges({ state: 'IN_PROGRESS' });
852
- expect(kes.length).toBe(1);
853
- ke = kes[0];
854
- expect(ke.otk.otKeyCipher).toBeNull(
855
- 'Should have been deleted because data is no longer useful'
856
- );
857
- expect(ke.responder).toBeDefined(
858
- 'Initiator can access responder information now that key exchange has been responded to.'
859
- );
860
-
861
- const ownerCipherDataClearJson2 =
862
- 'User 1 private data modified in completeOtk';
863
-
864
- const completed = (
865
- await lrGraphQL.lrMutate(
866
- keyExchange2.completeOtk({
867
- keyExchangeId: ke.id,
868
- initiatorRootKeyCipher: ke.initiatorRootKeyCipher,
869
- initiatorOneTimePbkCipher: ke.otk.initiatorOneTimePbkCipher,
870
- responderContactCard: {
871
- receiverCipherDataClearJson:
872
- ke.otk.initiatorOneTimePbkCipherClearJson.responder.contactCard
873
- .sharedCipherDataClearJson,
874
- },
875
- initiatorContactCard: {
876
- ownerCipherDataClearJson: ownerCipherDataClearJson2,
877
- },
878
- })
879
- )
880
- ).completeKeyExchangeOtk;
881
-
882
- expect(completed.keyExchange.state).toEqual('COMPLETED');
883
- expect(completed.keyExchange.otk.state).toEqual('OTK_COMPLETED');
884
-
885
- const U1_TP_U2 = await getTp2(completed.tp.id);
886
- expect(U1_TP_U2.myContactCard.ownerCipherDataClearJson).toEqual(
887
- ownerCipherDataClearJson2
888
- );
889
- },
890
- TIMEOUT
891
- );
892
- });