@icure/api 8.0.8 → 8.0.9

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 (256) hide show
  1. package/icc-api/model/models.d.ts +1 -0
  2. package/icc-api/model/models.js +1 -0
  3. package/icc-api/model/models.js.map +1 -1
  4. package/icc-x-api/crypto/ExchangeDataManager.js +3 -2
  5. package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
  6. package/icc-x-api/crypto/KeyRecovery.js +5 -4
  7. package/icc-x-api/crypto/KeyRecovery.js.map +1 -1
  8. package/icc-x-api/crypto/RSA.d.ts +4 -1
  9. package/icc-x-api/crypto/RSA.js +6 -1
  10. package/icc-x-api/crypto/RSA.js.map +1 -1
  11. package/icc-x-api/crypto/SecureDelegationsManager.js +2 -1
  12. package/icc-x-api/crypto/SecureDelegationsManager.js.map +1 -1
  13. package/icc-x-api/crypto/TransferKeysManager.js +4 -3
  14. package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
  15. package/icc-x-api/crypto/UserEncryptionKeysManager.js +2 -1
  16. package/icc-x-api/crypto/UserEncryptionKeysManager.js.map +1 -1
  17. package/icc-x-api/crypto/utils.d.ts +1 -4
  18. package/icc-x-api/crypto/utils.js +6 -8
  19. package/icc-x-api/crypto/utils.js.map +1 -1
  20. package/icc-x-api/icc-accesslog-x-api.js +16 -14
  21. package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
  22. package/icc-x-api/icc-calendar-item-x-api.d.ts +2 -2
  23. package/icc-x-api/icc-calendar-item-x-api.js +17 -17
  24. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
  25. package/icc-x-api/icc-classification-x-api.js +12 -11
  26. package/icc-x-api/icc-classification-x-api.js.map +1 -1
  27. package/icc-x-api/icc-contact-x-api.d.ts +2 -2
  28. package/icc-x-api/icc-contact-x-api.js +23 -20
  29. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  30. package/icc-x-api/icc-document-x-api.js +17 -16
  31. package/icc-x-api/icc-document-x-api.js.map +1 -1
  32. package/icc-x-api/icc-form-x-api.js +13 -12
  33. package/icc-x-api/icc-form-x-api.js.map +1 -1
  34. package/icc-x-api/icc-helement-x-api.js +18 -16
  35. package/icc-x-api/icc-helement-x-api.js.map +1 -1
  36. package/icc-x-api/icc-invoice-x-api.js +12 -11
  37. package/icc-x-api/icc-invoice-x-api.js.map +1 -1
  38. package/icc-x-api/icc-maintenance-task-x-api.js +11 -11
  39. package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
  40. package/icc-x-api/icc-message-x-api.js +14 -14
  41. package/icc-x-api/icc-message-x-api.js.map +1 -1
  42. package/icc-x-api/icc-patient-x-api.js +28 -27
  43. package/icc-x-api/icc-patient-x-api.js.map +1 -1
  44. package/icc-x-api/icc-receipt-x-api.js +11 -10
  45. package/icc-x-api/icc-receipt-x-api.js.map +1 -1
  46. package/icc-x-api/icc-recovery-x-api.js +3 -2
  47. package/icc-x-api/icc-recovery-x-api.js.map +1 -1
  48. package/icc-x-api/icc-time-table-x-api.js +9 -8
  49. package/icc-x-api/icc-time-table-x-api.js.map +1 -1
  50. package/icc-x-api/icc-topic-x-api.js +13 -13
  51. package/icc-x-api/icc-topic-x-api.js.map +1 -1
  52. package/icc-x-api/utils/EntityWithDelegationTypeName.d.ts +17 -1
  53. package/icc-x-api/utils/EntityWithDelegationTypeName.js +33 -15
  54. package/icc-x-api/utils/EntityWithDelegationTypeName.js.map +1 -1
  55. package/package.json +1 -1
  56. package/test/icc-api/api/IccAnonymousAccessApi.d.ts +1 -0
  57. package/test/icc-api/api/IccAnonymousAccessApi.js +58 -0
  58. package/test/icc-api/api/IccAnonymousAccessApi.js.map +1 -0
  59. package/test/icc-api/api/IccDocumentApi.d.ts +1 -0
  60. package/test/icc-api/api/IccDocumentApi.js +208 -0
  61. package/test/icc-api/api/IccDocumentApi.js.map +1 -0
  62. package/test/icc-api/api/IccGroupApi.d.ts +1 -0
  63. package/test/icc-api/api/IccGroupApi.js +50 -0
  64. package/test/icc-api/api/IccGroupApi.js.map +1 -0
  65. package/test/icc-api/api/IccRecoveryDataApi.d.ts +1 -0
  66. package/test/icc-api/api/IccRecoveryDataApi.js +95 -0
  67. package/test/icc-api/api/IccRecoveryDataApi.js.map +1 -0
  68. package/test/icc-api/api/IccRoleApi.d.ts +1 -0
  69. package/test/icc-api/api/IccRoleApi.js +34 -0
  70. package/test/icc-api/api/IccRoleApi.js.map +1 -0
  71. package/test/icc-api/api/IccUserApi.d.ts +1 -0
  72. package/test/icc-api/api/IccUserApi.js +96 -0
  73. package/test/icc-api/api/IccUserApi.js.map +1 -0
  74. package/test/icc-api/e2e/IccCalendarItemApi.d.ts +1 -0
  75. package/test/icc-api/e2e/IccCalendarItemApi.js +46 -0
  76. package/test/icc-api/e2e/IccCalendarItemApi.js.map +1 -0
  77. package/test/icc-api/model/modelHelpersTest.d.ts +1 -0
  78. package/test/icc-api/model/modelHelpersTest.js +45 -0
  79. package/test/icc-api/model/modelHelpersTest.js.map +1 -0
  80. package/test/icc-x-api/auth/group-switch-test.d.ts +1 -0
  81. package/test/icc-x-api/auth/group-switch-test.js +81 -0
  82. package/test/icc-x-api/auth/group-switch-test.js.map +1 -0
  83. package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +2 -0
  84. package/test/icc-x-api/auth/jwt-concurrency-test.js +113 -0
  85. package/test/icc-x-api/auth/jwt-concurrency-test.js.map +1 -0
  86. package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +1 -0
  87. package/test/icc-x-api/auth/smart-auth-provider-test.js +224 -0
  88. package/test/icc-x-api/auth/smart-auth-provider-test.js.map +1 -0
  89. package/test/icc-x-api/autofix-anonymity-test.d.ts +1 -0
  90. package/test/icc-x-api/autofix-anonymity-test.js +108 -0
  91. package/test/icc-x-api/autofix-anonymity-test.js.map +1 -0
  92. package/test/icc-x-api/confidential-entities-test.d.ts +1 -0
  93. package/test/icc-x-api/confidential-entities-test.js +110 -0
  94. package/test/icc-x-api/confidential-entities-test.js.map +1 -0
  95. package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +1 -0
  96. package/test/icc-x-api/crud/comprehensive-crud-test.js +276 -0
  97. package/test/icc-x-api/crud/comprehensive-crud-test.js.map +1 -0
  98. package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +16 -0
  99. package/test/icc-x-api/crud/entities-crud-test-interface.js +422 -0
  100. package/test/icc-x-api/crud/entities-crud-test-interface.js.map +1 -0
  101. package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +1 -0
  102. package/test/icc-x-api/crypto/anonymous-delegations-test.js +588 -0
  103. package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +1 -0
  104. package/test/icc-x-api/crypto/concurrency.d.ts +1 -0
  105. package/test/icc-x-api/crypto/concurrency.js +35 -0
  106. package/test/icc-x-api/crypto/concurrency.js.map +1 -0
  107. package/test/icc-x-api/crypto/crypto-utils.d.ts +1 -0
  108. package/test/icc-x-api/crypto/crypto-utils.js +80 -0
  109. package/test/icc-x-api/crypto/crypto-utils.js.map +1 -0
  110. package/test/icc-x-api/crypto/cryptoTest.d.ts +2 -0
  111. package/test/icc-x-api/crypto/cryptoTest.js +302 -0
  112. package/test/icc-x-api/crypto/cryptoTest.js.map +1 -0
  113. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +1 -0
  114. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +166 -0
  115. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +1 -0
  116. package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +1 -0
  117. package/test/icc-x-api/crypto/exchange-data-manager-test.js +690 -0
  118. package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +1 -0
  119. package/test/icc-x-api/crypto/full-crypto-test.d.ts +1 -0
  120. package/test/icc-x-api/crypto/full-crypto-test.js +457 -0
  121. package/test/icc-x-api/crypto/full-crypto-test.js.map +1 -0
  122. package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +1 -0
  123. package/test/icc-x-api/crypto/secure-delegations-manager-test.js +266 -0
  124. package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +1 -0
  125. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.d.ts +1 -0
  126. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js +393 -0
  127. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js.map +1 -0
  128. package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.d.ts +1 -0
  129. package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js +213 -0
  130. package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js.map +1 -0
  131. package/test/icc-x-api/crypto/shamir.d.ts +2 -0
  132. package/test/icc-x-api/crypto/shamir.js +166 -0
  133. package/test/icc-x-api/crypto/shamir.js.map +1 -0
  134. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +1 -0
  135. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +71 -0
  136. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +1 -0
  137. package/test/icc-x-api/crypto/signature-keys-manager-test.d.ts +1 -0
  138. package/test/icc-x-api/crypto/signature-keys-manager-test.js +44 -0
  139. package/test/icc-x-api/crypto/signature-keys-manager-test.js.map +1 -0
  140. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +1 -0
  141. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +246 -0
  142. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +1 -0
  143. package/test/icc-x-api/entity-with-attachments-api-test.d.ts +1 -0
  144. package/test/icc-x-api/entity-with-attachments-api-test.js +142 -0
  145. package/test/icc-x-api/entity-with-attachments-api-test.js.map +1 -0
  146. package/test/icc-x-api/filters/filters.d.ts +1 -0
  147. package/test/icc-x-api/filters/filters.js +49 -0
  148. package/test/icc-x-api/filters/filters.js.map +1 -0
  149. package/test/icc-x-api/icc-accesslog-x-api.d.ts +1 -0
  150. package/test/icc-x-api/icc-accesslog-x-api.js +106 -0
  151. package/test/icc-x-api/icc-accesslog-x-api.js.map +1 -0
  152. package/test/icc-x-api/icc-auth-api.d.ts +1 -0
  153. package/test/icc-x-api/icc-auth-api.js +47 -0
  154. package/test/icc-x-api/icc-auth-api.js.map +1 -0
  155. package/test/icc-x-api/icc-calendar-item-x-api.d.ts +1 -0
  156. package/test/icc-x-api/icc-calendar-item-x-api.js +150 -0
  157. package/test/icc-x-api/icc-calendar-item-x-api.js.map +1 -0
  158. package/test/icc-x-api/icc-contact-x-api.d.ts +1 -0
  159. package/test/icc-x-api/icc-contact-x-api.js +279 -0
  160. package/test/icc-x-api/icc-contact-x-api.js.map +1 -0
  161. package/test/icc-x-api/icc-form-x-api.d.ts +1 -0
  162. package/test/icc-x-api/icc-form-x-api.js +98 -0
  163. package/test/icc-x-api/icc-form-x-api.js.map +1 -0
  164. package/test/icc-x-api/icc-helement-x-api-test.d.ts +1 -0
  165. package/test/icc-x-api/icc-helement-x-api-test.js +153 -0
  166. package/test/icc-x-api/icc-helement-x-api-test.js.map +1 -0
  167. package/test/icc-x-api/icc-invoice-x-api.d.ts +1 -0
  168. package/test/icc-x-api/icc-invoice-x-api.js +99 -0
  169. package/test/icc-x-api/icc-invoice-x-api.js.map +1 -0
  170. package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +1 -0
  171. package/test/icc-x-api/icc-maintenance-task-x-api-test.js +221 -0
  172. package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +1 -0
  173. package/test/icc-x-api/icc-message-x-api.d.ts +1 -0
  174. package/test/icc-x-api/icc-message-x-api.js +328 -0
  175. package/test/icc-x-api/icc-message-x-api.js.map +1 -0
  176. package/test/icc-x-api/icc-patient-x-api-test.d.ts +1 -0
  177. package/test/icc-x-api/icc-patient-x-api-test.js +158 -0
  178. package/test/icc-x-api/icc-patient-x-api-test.js.map +1 -0
  179. package/test/icc-x-api/icc-recovery-x-api.d.ts +1 -0
  180. package/test/icc-x-api/icc-recovery-x-api.js +170 -0
  181. package/test/icc-x-api/icc-recovery-x-api.js.map +1 -0
  182. package/test/icc-x-api/icc-time-table-x-api.d.ts +1 -0
  183. package/test/icc-x-api/icc-time-table-x-api.js +100 -0
  184. package/test/icc-x-api/icc-time-table-x-api.js.map +1 -0
  185. package/test/icc-x-api/icc-topic-x-api.d.ts +1 -0
  186. package/test/icc-x-api/icc-topic-x-api.js +269 -0
  187. package/test/icc-x-api/icc-topic-x-api.js.map +1 -0
  188. package/test/icc-x-api/icc-user-x-api-test.d.ts +1 -0
  189. package/test/icc-x-api/icc-user-x-api-test.js +99 -0
  190. package/test/icc-x-api/icc-user-x-api-test.js.map +1 -0
  191. package/test/icc-x-api/patient-user.d.ts +2 -0
  192. package/test/icc-x-api/patient-user.js +104 -0
  193. package/test/icc-x-api/patient-user.js.map +1 -0
  194. package/test/icc-x-api/storage/storage.d.ts +1 -0
  195. package/test/icc-x-api/storage/storage.js +48 -0
  196. package/test/icc-x-api/storage/storage.js.map +1 -0
  197. package/test/icc-x-api/test-api-no-parent.d.ts +1 -0
  198. package/test/icc-x-api/test-api-no-parent.js +79 -0
  199. package/test/icc-x-api/test-api-no-parent.js.map +1 -0
  200. package/test/icc-x-api/test-legacy-data-support.d.ts +1 -0
  201. package/test/icc-x-api/test-legacy-data-support.js +376 -0
  202. package/test/icc-x-api/test-legacy-data-support.js.map +1 -0
  203. package/test/icc-x-api/utils/graph-test.d.ts +1 -0
  204. package/test/icc-x-api/utils/graph-test.js +54 -0
  205. package/test/icc-x-api/utils/graph-test.js.map +1 -0
  206. package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +1 -0
  207. package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +364 -0
  208. package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +1 -0
  209. package/test/support/CSM-185.d.ts +1 -0
  210. package/test/support/CSM-185.js +124 -0
  211. package/test/support/CSM-185.js.map +1 -0
  212. package/test/support/CSM-243.d.ts +1 -0
  213. package/test/support/CSM-243.js +120 -0
  214. package/test/support/CSM-243.js.map +1 -0
  215. package/test/support/CSM-87.d.ts +0 -0
  216. package/test/support/CSM-87.js +21 -0
  217. package/test/support/CSM-87.js.map +1 -0
  218. package/test/support/CSM-93.d.ts +1 -0
  219. package/test/support/CSM-93.js +112 -0
  220. package/test/support/CSM-93.js.map +1 -0
  221. package/test/utils/FakeDataOwnerApi.d.ts +32 -0
  222. package/test/utils/FakeDataOwnerApi.js +136 -0
  223. package/test/utils/FakeDataOwnerApi.js.map +1 -0
  224. package/test/utils/FakeEncryptionKeysManager.d.ts +35 -0
  225. package/test/utils/FakeEncryptionKeysManager.js +87 -0
  226. package/test/utils/FakeEncryptionKeysManager.js.map +1 -0
  227. package/test/utils/FakeExchangeDataApi.d.ts +30 -0
  228. package/test/utils/FakeExchangeDataApi.js +74 -0
  229. package/test/utils/FakeExchangeDataApi.js.map +1 -0
  230. package/test/utils/FakeExchangeDataManager.d.ts +40 -0
  231. package/test/utils/FakeExchangeDataManager.js +89 -0
  232. package/test/utils/FakeExchangeDataManager.js.map +1 -0
  233. package/test/utils/FakeExchangeDataMapManager.d.ts +12 -0
  234. package/test/utils/FakeExchangeDataMapManager.js +38 -0
  235. package/test/utils/FakeExchangeDataMapManager.js.map +1 -0
  236. package/test/utils/FakeGenericApi.d.ts +16 -0
  237. package/test/utils/FakeGenericApi.js +65 -0
  238. package/test/utils/FakeGenericApi.js.map +1 -0
  239. package/test/utils/FakeSignatureKeysManager.d.ts +16 -0
  240. package/test/utils/FakeSignatureKeysManager.js +54 -0
  241. package/test/utils/FakeSignatureKeysManager.js.map +1 -0
  242. package/test/utils/TestApi.d.ts +3 -0
  243. package/test/utils/TestApi.js +30 -0
  244. package/test/utils/TestApi.js.map +1 -0
  245. package/test/utils/TestCollectionUtils.d.ts +1 -0
  246. package/test/utils/TestCollectionUtils.js +109 -0
  247. package/test/utils/TestCollectionUtils.js.map +1 -0
  248. package/test/utils/TestCryptoStrategies.d.ts +42 -0
  249. package/test/utils/TestCryptoStrategies.js +80 -0
  250. package/test/utils/TestCryptoStrategies.js.map +1 -0
  251. package/test/utils/TestStorage.d.ts +23 -0
  252. package/test/utils/TestStorage.js +61 -0
  253. package/test/utils/TestStorage.js.map +1 -0
  254. package/test/utils/test_utils.d.ts +76 -0
  255. package/test/utils/test_utils.js +419 -0
  256. package/test/utils/test_utils.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IccRecoveryDataApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccRecoveryDataApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { getEnvironmentInitializer, hcp1Username, setLocalStorage } from '../../utils/test_utils'\nimport { IccRecoveryDataApi } from '../../../icc-api/api/internal/IccRecoveryDataApi'\nimport { BasicAuthenticationProvider, ua2b64, utf8_2ua } from '../../../icc-x-api'\nimport 'isomorphic-fetch'\nimport { RecoveryData } from '../../../icc-api/model/internal/RecoveryData'\nimport { randomUUID } from 'crypto'\nimport { expect } from 'chai'\nimport { XHR } from '../../../icc-api/api/XHR'\nimport XHRError = XHR.XHRError\n\nlet env: TestVars\nlet self: string\nlet api: IccRecoveryDataApi\nsetLocalStorage(fetch)\n\ndescribe('Recovery data api', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n const hcp = env.dataOwnerDetails[hcp1Username]\n self = hcp.dataOwnerId\n api = new IccRecoveryDataApi(env.iCureUrl, {}, new BasicAuthenticationProvider(hcp.user, hcp.password), fetch)\n })\n\n function newRecoveryData(type: RecoveryData.Type = RecoveryData.Type.KEYPAIR_RECOVERY): RecoveryData {\n return new RecoveryData({\n id: randomUUID(),\n recipient: self,\n encryptedSelf: ua2b64(utf8_2ua(randomUUID())),\n type,\n })\n }\n\n async function checkDeleted(recoveryDataId: string) {\n await api.getRecoveryData(recoveryDataId).then(\n () => expect.fail('should not be able to retrieve deleted recovery data'),\n (err) => {\n expect(err).to.be.instanceof(XHRError)\n expect(err.statusCode).to.equal(404)\n }\n )\n }\n\n it('should be capable of creating recovery data', async () => {\n const recoveryData = newRecoveryData()\n const created = await api.createRecoveryData(recoveryData)\n expect(created.rev).to.not.be.empty\n expect(created.id).to.equal(recoveryData.id)\n expect(created.recipient).to.equal(recoveryData.recipient)\n expect(created.encryptedSelf).to.equal(recoveryData.encryptedSelf)\n expect(created.type).to.equal(recoveryData.type)\n expect(created.deletionDate).to.be.undefined\n expect(created.expirationInstant).to.be.undefined\n })\n\n it('should be capable of getting recovery data', async () => {\n const created = await api.createRecoveryData(newRecoveryData())\n const retrieved = await api.getRecoveryData(created.id!)\n expect(created).to.deep.equal(retrieved)\n })\n\n it('should be capable of deleting recovery data', async () => {\n const created = await api.createRecoveryData(newRecoveryData())\n await api.deleteRecoveryData(created.id!)\n await checkDeleted(created.id!)\n })\n\n it('should be capable of deleting all recovery data for a recipient', async () => {\n await api.deleteAllRecoveryDataForRecipient(self)\n const created1 = await api.createRecoveryData(newRecoveryData(RecoveryData.Type.KEYPAIR_RECOVERY))\n const created2 = await api.createRecoveryData(newRecoveryData(RecoveryData.Type.EXCHANGE_KEY_RECOVERY))\n const deleted = await api.deleteAllRecoveryDataForRecipient(self)\n await checkDeleted(created1.id!)\n await checkDeleted(created2.id!)\n expect(deleted.numberValue).to.equal(2)\n })\n\n it('should be capable of deleting all recovery data of a type for a recipient', async () => {\n await api.deleteAllRecoveryDataForRecipient(self)\n const created1 = await api.createRecoveryData(newRecoveryData(RecoveryData.Type.KEYPAIR_RECOVERY))\n const created2 = await api.createRecoveryData(newRecoveryData(RecoveryData.Type.EXCHANGE_KEY_RECOVERY))\n const created3 = await api.createRecoveryData(newRecoveryData(RecoveryData.Type.EXCHANGE_KEY_RECOVERY))\n const deleted = await api.deleteAllRecoveryDataOfTypeForRecipient(RecoveryData.Type.EXCHANGE_KEY_RECOVERY, self)\n expect(await api.getRecoveryData(created1.id!)).to.deep.equal(created1)\n await checkDeleted(created2.id!)\n await checkDeleted(created3.id!)\n expect(deleted.numberValue).to.equal(2)\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ import 'isomorphic-fetch';
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ require("isomorphic-fetch");
13
+ const test_utils_1 = require("../../utils/test_utils");
14
+ const chai_1 = require("chai");
15
+ var initMasterApi = test_utils_1.TestUtils.initMasterApi;
16
+ const types_1 = require("@icure/test-setup/types");
17
+ (0, test_utils_1.setLocalStorage)(fetch);
18
+ let env;
19
+ let roleApi;
20
+ (0, test_utils_1.describeNoLite)('IccRoleApi', () => {
21
+ before(function () {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ this.timeout(600000);
24
+ const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
25
+ env = yield initializer.execute((0, types_1.getEnvVariables)());
26
+ roleApi = (yield initMasterApi(env)).roleApi;
27
+ });
28
+ });
29
+ it('should be able of getting all the roles', () => __awaiter(void 0, void 0, void 0, function* () {
30
+ const roles = yield roleApi.getRoles();
31
+ (0, chai_1.expect)(roles.length).to.be.greaterThan(0);
32
+ }));
33
+ });
34
+ //# sourceMappingURL=IccRoleApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IccRoleApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccRoleApi.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAAyB;AACzB,uDAA8G;AAE9G,+BAA6B;AAC7B,IAAO,aAAa,GAAG,sBAAS,CAAC,aAAa,CAAA;AAC9C,mDAAmE;AAEnE,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAA;AAEtB,IAAI,GAAa,CAAA;AACjB,IAAI,OAAmB,CAAA;AAEvB,IAAA,2BAAc,EAAC,YAAY,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC;;YACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACpB,MAAM,WAAW,GAAG,MAAM,IAAA,sCAAyB,GAAE,CAAA;YACrD,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAA,uBAAe,GAAE,CAAC,CAAA;YAClD,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAA;QAC9C,CAAC;KAAA,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAS,EAAE;QACvD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;QACtC,IAAA,aAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import 'isomorphic-fetch'\nimport { describeNoLite, getEnvironmentInitializer, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport { IccRoleApi } from '../../../icc-api/api/IccRoleApi'\nimport { expect } from 'chai'\nimport initMasterApi = TestUtils.initMasterApi\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\nlet roleApi: IccRoleApi\n\ndescribeNoLite('IccRoleApi', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n roleApi = (await initMasterApi(env)).roleApi\n })\n\n it('should be able of getting all the roles', async () => {\n const roles = await roleApi.getRoles()\n expect(roles.length).to.be.greaterThan(0)\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const chai_1 = require("chai");
13
+ const crypto_1 = require("crypto");
14
+ const test_utils_1 = require("../../utils/test_utils");
15
+ var initApi = test_utils_1.TestUtils.initApi;
16
+ const types_1 = require("@icure/test-setup/types");
17
+ const DatabaseInitialisation_1 = require("../../../icc-api/model/DatabaseInitialisation");
18
+ var initMasterApi = test_utils_1.TestUtils.initMasterApi;
19
+ let env;
20
+ (0, test_utils_1.setLocalStorage)(fetch);
21
+ (0, test_utils_1.describeNoLite)('User in group', () => {
22
+ before(function () {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ this.timeout(600000);
25
+ const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
26
+ env = yield initializer.execute((0, types_1.getEnvVariables)());
27
+ });
28
+ });
29
+ it('should be capable of creating a token', () => __awaiter(void 0, void 0, void 0, function* () {
30
+ const { userApi } = yield initApi(env, test_utils_1.hcp1Username);
31
+ const currentUser = yield userApi.getCurrentUser();
32
+ const token = yield userApi.getTokenInGroup(currentUser.groupId, currentUser.id, `e2eTestTS-${(0, crypto_1.randomUUID)()}`, undefined, 3);
33
+ (0, chai_1.expect)(token.match(/[a-fA-F0-9]+/));
34
+ })).timeout(30000);
35
+ it('should be able to add and remove a role to a user', () => __awaiter(void 0, void 0, void 0, function* () {
36
+ var _a, _b, _c, _d, _e, _f, _g, _h;
37
+ const { userApi, roleApi } = yield initMasterApi(env);
38
+ const role = (yield roleApi.getRoles())[0].id;
39
+ const login = `${(0, crypto_1.randomUUID)().substring(0, 6)}-test-user@icure.com`;
40
+ const user = yield userApi.createUser({
41
+ id: (0, crypto_1.randomUUID)(),
42
+ name: (0, crypto_1.randomUUID)(),
43
+ login: login,
44
+ email: login,
45
+ });
46
+ (0, chai_1.expect)((_b = (_a = user.roles) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0).to.be.equal(0);
47
+ const userWithRole = yield userApi.setRoles(user.id, [role]);
48
+ (0, chai_1.expect)((_e = (_d = (_c = userWithRole.systemMetadata) === null || _c === void 0 ? void 0 : _c.roles) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0).to.be.equal(1);
49
+ (0, chai_1.expect)((_f = userWithRole.systemMetadata) === null || _f === void 0 ? void 0 : _f.inheritsRoles).to.be.equal(false);
50
+ (0, chai_1.expect)((_g = userWithRole.systemMetadata) === null || _g === void 0 ? void 0 : _g.roles[0]).to.be.equal(role);
51
+ const userWithoutRole = yield userApi.resetRoles(user.id);
52
+ (0, chai_1.expect)((_h = userWithoutRole.systemMetadata) === null || _h === void 0 ? void 0 : _h.inheritsRoles).to.be.equal(true);
53
+ }));
54
+ it('should be able to add and remove a role to a user in group', () => __awaiter(void 0, void 0, void 0, function* () {
55
+ var _j, _k, _l, _m, _o, _p, _q, _r;
56
+ const { userApi, roleApi, groupApi } = yield initMasterApi(env);
57
+ const role = (yield roleApi.getRoles())[0].id;
58
+ const groupId = (0, crypto_1.randomUUID)();
59
+ const groupName = groupId.substring(0, 5);
60
+ const groupPwd = (0, crypto_1.randomUUID)();
61
+ yield groupApi.createGroup(groupId, groupName, groupPwd, undefined, undefined, undefined, undefined, undefined, new DatabaseInitialisation_1.DatabaseInitialisation({
62
+ users: [],
63
+ healthcareParties: [],
64
+ }));
65
+ const login = `${(0, crypto_1.randomUUID)().substring(0, 6)}-test-user@icure.com`;
66
+ const user = yield userApi.createUserInGroup(groupId, {
67
+ id: (0, crypto_1.randomUUID)(),
68
+ name: (0, crypto_1.randomUUID)(),
69
+ login: login,
70
+ email: login,
71
+ });
72
+ (0, chai_1.expect)((_k = (_j = user.roles) === null || _j === void 0 ? void 0 : _j.length) !== null && _k !== void 0 ? _k : 0).to.be.equal(0);
73
+ const userWithRole = yield userApi.setRolesInGroup(user.id, groupId, [role]);
74
+ (0, chai_1.expect)((_o = (_m = (_l = userWithRole.systemMetadata) === null || _l === void 0 ? void 0 : _l.roles) === null || _m === void 0 ? void 0 : _m.length) !== null && _o !== void 0 ? _o : 0).to.be.equal(1);
75
+ (0, chai_1.expect)((_p = userWithRole.systemMetadata) === null || _p === void 0 ? void 0 : _p.inheritsRoles).to.be.equal(false);
76
+ (0, chai_1.expect)((_q = userWithRole.systemMetadata) === null || _q === void 0 ? void 0 : _q.roles[0]).to.be.equal(role);
77
+ const userWithoutRole = yield userApi.resetRolesInGroup(user.id, groupId);
78
+ (0, chai_1.expect)((_r = userWithoutRole.systemMetadata) === null || _r === void 0 ? void 0 : _r.inheritsRoles).to.be.equal(true);
79
+ }));
80
+ });
81
+ describe('User', () => {
82
+ before(function () {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ this.timeout(600000);
85
+ const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
86
+ env = yield initializer.execute((0, types_1.getEnvVariables)());
87
+ });
88
+ });
89
+ it('should be capable of creating a token', () => __awaiter(void 0, void 0, void 0, function* () {
90
+ const { userApi } = yield initApi(env, test_utils_1.hcp1Username);
91
+ const currentUser = yield userApi.getCurrentUser();
92
+ const token = yield userApi.getToken(currentUser.id, `e2eTestTS-${(0, crypto_1.randomUUID)()}`, 3, undefined);
93
+ (0, chai_1.expect)(token.match(/[a-fA-F0-9]+/));
94
+ })).timeout(30000);
95
+ });
96
+ //# sourceMappingURL=IccUserApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IccUserApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccUserApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { randomUUID } from 'crypto'\nimport { describeNoLite, getEnvironmentInitializer, hcp1Username, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport initApi = TestUtils.initApi\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { DatabaseInitialisation } from '../../../icc-api/model/DatabaseInitialisation'\nimport initMasterApi = TestUtils.initMasterApi\n\nlet env: TestVars\nsetLocalStorage(fetch)\n\ndescribeNoLite('User in group', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it('should be capable of creating a token', async () => {\n const { userApi } = await initApi(env, hcp1Username)\n const currentUser = await userApi.getCurrentUser()\n const token = await userApi.getTokenInGroup(currentUser.groupId!, currentUser.id!, `e2eTestTS-${randomUUID()}`, undefined, 3)\n expect(token.match(/[a-fA-F0-9]+/))\n }).timeout(30000)\n\n it('should be able to add and remove a role to a user', async () => {\n const { userApi, roleApi } = await initMasterApi(env)\n\n const role = (await roleApi.getRoles())[0].id!\n\n const login = `${randomUUID().substring(0, 6)}-test-user@icure.com`\n const user = await userApi.createUser({\n id: randomUUID(),\n name: randomUUID(),\n login: login,\n email: login,\n })\n expect(user.roles?.length ?? 0).to.be.equal(0)\n\n const userWithRole = await userApi.setRoles(user.id!, [role])\n expect(userWithRole.systemMetadata?.roles?.length ?? 0).to.be.equal(1)\n expect(userWithRole.systemMetadata?.inheritsRoles).to.be.equal(false)\n expect(userWithRole.systemMetadata?.roles![0]).to.be.equal(role)\n\n const userWithoutRole = await userApi.resetRoles(user.id!)\n expect(userWithoutRole.systemMetadata?.inheritsRoles).to.be.equal(true)\n })\n\n it('should be able to add and remove a role to a user in group', async () => {\n const { userApi, roleApi, groupApi } = await initMasterApi(env)\n\n const role = (await roleApi.getRoles())[0].id!\n\n const groupId = randomUUID()\n const groupName = groupId.substring(0, 5)\n const groupPwd = randomUUID()\n await groupApi.createGroup(\n groupId,\n groupName,\n groupPwd,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n new DatabaseInitialisation({\n users: [],\n healthcareParties: [],\n })\n )\n\n const login = `${randomUUID().substring(0, 6)}-test-user@icure.com`\n const user = await userApi.createUserInGroup(groupId, {\n id: randomUUID(),\n name: randomUUID(),\n login: login,\n email: login,\n })\n expect(user.roles?.length ?? 0).to.be.equal(0)\n\n const userWithRole = await userApi.setRolesInGroup(user.id!, groupId, [role])\n expect(userWithRole.systemMetadata?.roles?.length ?? 0).to.be.equal(1)\n expect(userWithRole.systemMetadata?.inheritsRoles).to.be.equal(false)\n expect(userWithRole.systemMetadata?.roles![0]).to.be.equal(role)\n\n const userWithoutRole = await userApi.resetRolesInGroup(user.id!, groupId)\n expect(userWithoutRole.systemMetadata?.inheritsRoles).to.be.equal(true)\n })\n})\n\ndescribe('User', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it('should be capable of creating a token', async () => {\n const { userApi } = await initApi(env, hcp1Username)\n const currentUser = await userApi.getCurrentUser()\n const token = await userApi.getToken(currentUser.id!, `e2eTestTS-${randomUUID()}`, 3, undefined)\n expect(token.match(/[a-fA-F0-9]+/))\n }).timeout(30000)\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const icc_x_api_1 = require("../../../icc-x-api");
13
+ const chai_1 = require("chai");
14
+ const crypto_1 = require("crypto");
15
+ const test_utils_1 = require("../../utils/test_utils");
16
+ const SecureDelegation_1 = require("../../../icc-api/model/SecureDelegation");
17
+ const types_1 = require("@icure/test-setup/types");
18
+ var initApi = test_utils_1.TestUtils.initApi;
19
+ var AccessLevel = SecureDelegation_1.SecureDelegation.AccessLevelEnum;
20
+ let env;
21
+ describe('Calendar', () => {
22
+ before(function () {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ this.timeout(600000);
25
+ const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
26
+ env = yield initializer.execute((0, types_1.getEnvVariables)());
27
+ });
28
+ });
29
+ it('should be capable of creating a calendar item', () => __awaiter(void 0, void 0, void 0, function* () {
30
+ const api = yield initApi(env, test_utils_1.patUsername);
31
+ const currentUser = yield api.userApi.getCurrentUser();
32
+ yield api.patientApi.getPatientWithUser(currentUser, currentUser.patientId);
33
+ const hcpApi = yield initApi(env, test_utils_1.hcp1Username);
34
+ const hcp = yield hcpApi.userApi.getCurrentUser();
35
+ const jwk = {
36
+ publicKey: (0, icc_x_api_1.spkiToJwk)((0, icc_x_api_1.hex2ua)(env.dataOwnerDetails[test_utils_1.patUsername].publicKey), icc_x_api_1.ShaVersion.Sha1),
37
+ privateKey: (0, icc_x_api_1.pkcs8ToJwk)((0, icc_x_api_1.hex2ua)(env.dataOwnerDetails[test_utils_1.patUsername].privateKey)),
38
+ };
39
+ yield api.cryptoApi.keyStorage.storeKeyPair(`${currentUser.healthcarePartyId}.${env.dataOwnerDetails[test_utils_1.patUsername].publicKey.slice(-32)}`, jwk);
40
+ const calendarItem = yield api.calendarItemApi.createCalendarItemWithHcParty(currentUser, yield api.calendarItemApi.newInstance(currentUser, { id: (0, crypto_1.randomUUID)(), details: 'Hello' }, {
41
+ additionalDelegates: { [hcp.healthcarePartyId]: AccessLevel.WRITE },
42
+ }));
43
+ (0, chai_1.expect)(calendarItem.id).to.be.not.null;
44
+ }));
45
+ });
46
+ //# sourceMappingURL=IccCalendarItemApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IccCalendarItemApi.js","sourceRoot":"","sources":["../../../../test/icc-api/e2e/IccCalendarItemApi.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,kDAA8E;AAC9E,+BAA6B;AAC7B,mCAAmC;AACnC,uDAAwG;AACxG,8EAA0E;AAC1E,mDAAmE;AACnE,IAAO,OAAO,GAAG,sBAAS,CAAC,OAAO,CAAA;AAClC,IAAO,WAAW,GAAG,mCAAgB,CAAC,eAAe,CAAA;AAErD,IAAI,GAAa,CAAA;AAEjB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,CAAC;;YACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACpB,MAAM,WAAW,GAAG,MAAM,IAAA,sCAAyB,GAAE,CAAA;YACrD,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAA,uBAAe,GAAE,CAAC,CAAA;QACpD,CAAC;KAAA,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;QAC7D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAI,EAAE,wBAAW,CAAC,CAAA;QAC5C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;QACtD,MAAM,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,SAAU,CAAC,CAAA;QAE5E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAI,EAAE,yBAAY,CAAC,CAAA;QAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;QAEjD,MAAM,GAAG,GAAG;YACV,SAAS,EAAE,IAAA,qBAAS,EAAC,IAAA,kBAAM,EAAC,GAAI,CAAC,gBAAgB,CAAC,wBAAW,CAAC,CAAC,SAAS,CAAC,EAAE,sBAAU,CAAC,IAAI,CAAC;YAC3F,UAAU,EAAE,IAAA,sBAAU,EAAC,IAAA,kBAAM,EAAC,GAAI,CAAC,gBAAgB,CAAC,wBAAW,CAAC,CAAC,UAAU,CAAC,CAAC;SAC9E,CAAA;QACD,MAAM,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,iBAAkB,IAAI,GAAI,CAAC,gBAAgB,CAAC,wBAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAEhJ,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,6BAA6B,CAC1E,WAAW,EACX,MAAM,GAAG,CAAC,eAAe,CAAC,WAAW,CACnC,WAAW,EACX,EAAE,EAAE,EAAE,IAAA,mBAAU,GAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EACtC;YACE,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,iBAAkB,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE;SACrE,CACF,CACF,CAAA;QACD,IAAA,aAAM,EAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAA;IACxC,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { hex2ua, pkcs8ToJwk, ShaVersion, spkiToJwk } from '../../../icc-x-api'\nimport { expect } from 'chai'\nimport { randomUUID } from 'crypto'\nimport { getEnvironmentInitializer, hcp1Username, patUsername, TestUtils } from '../../utils/test_utils'\nimport { SecureDelegation } from '../../../icc-api/model/SecureDelegation'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport initApi = TestUtils.initApi\nimport AccessLevel = SecureDelegation.AccessLevelEnum\n\nlet env: TestVars\n\ndescribe('Calendar', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it('should be capable of creating a calendar item', async () => {\n const api = await initApi(env!, patUsername)\n const currentUser = await api.userApi.getCurrentUser()\n await api.patientApi.getPatientWithUser(currentUser, currentUser.patientId!)\n\n const hcpApi = await initApi(env!, hcp1Username)\n const hcp = await hcpApi.userApi.getCurrentUser()\n\n const jwk = {\n publicKey: spkiToJwk(hex2ua(env!.dataOwnerDetails[patUsername].publicKey), ShaVersion.Sha1),\n privateKey: pkcs8ToJwk(hex2ua(env!.dataOwnerDetails[patUsername].privateKey)),\n }\n await api.cryptoApi.keyStorage.storeKeyPair(`${currentUser.healthcarePartyId!}.${env!.dataOwnerDetails[patUsername].publicKey.slice(-32)}`, jwk)\n\n const calendarItem = await api.calendarItemApi.createCalendarItemWithHcParty(\n currentUser,\n await api.calendarItemApi.newInstance(\n currentUser,\n { id: randomUUID(), details: 'Hello' },\n {\n additionalDelegates: { [hcp.healthcarePartyId!]: AccessLevel.WRITE },\n }\n )\n )\n expect(calendarItem.id).to.be.not.null\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ import 'mocha';
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* make node behave */
4
+ const chai_1 = require("chai");
5
+ require("mocha");
6
+ const ModelHelper_1 = require("../../../icc-api/model/ModelHelper");
7
+ function getRaw(size) {
8
+ return 'x'.repeat(size).replace(/./g, () => String.fromCharCode(Math.random() * 256));
9
+ }
10
+ describe('invariants', () => {
11
+ it('should support b64 -> binary and vice versa', () => {
12
+ const raw = getRaw(1024);
13
+ const b64 = (0, ModelHelper_1.b2a)(raw);
14
+ (0, chai_1.expect)((0, ModelHelper_1.a2b)((0, ModelHelper_1.b2a)(raw))).to.equal(raw);
15
+ (0, chai_1.expect)((0, ModelHelper_1.b2a)((0, ModelHelper_1.a2b)(b64))).to.equal(b64);
16
+ });
17
+ it('should support string2ua and vice versa', () => {
18
+ const raw = getRaw(1024);
19
+ const uint8Array = (0, ModelHelper_1.string2ua)(raw);
20
+ (0, chai_1.expect)((0, ModelHelper_1.ua2string)((0, ModelHelper_1.string2ua)(raw))).to.equal(raw);
21
+ (0, chai_1.expect)((0, ModelHelper_1.string2ua)((0, ModelHelper_1.ua2string)(uint8Array))).to.deep.eq(uint8Array);
22
+ });
23
+ it('should support b64 -> ab and vice versa', () => {
24
+ const raw = getRaw(1024);
25
+ const b64 = (0, ModelHelper_1.b2a)(raw);
26
+ const ua = (0, ModelHelper_1.string2ua)(raw);
27
+ (0, chai_1.expect)((0, ModelHelper_1.ua2b64)((0, ModelHelper_1.b64_2ua)(b64))).to.equal(b64);
28
+ (0, chai_1.expect)((0, ModelHelper_1.b64_2ua)((0, ModelHelper_1.ua2b64)(ua))).to.deep.eq(ua);
29
+ });
30
+ it('Cross conversions should work too', () => {
31
+ const raw = getRaw(1024);
32
+ const b64 = (0, ModelHelper_1.b2a)(raw);
33
+ const ua = (0, ModelHelper_1.string2ua)(raw);
34
+ (0, chai_1.expect)((0, ModelHelper_1.b2a)((0, ModelHelper_1.ua2string)((0, ModelHelper_1.b64_2ua)(b64)))).to.equal(b64);
35
+ (0, chai_1.expect)((0, ModelHelper_1.string2ua)((0, ModelHelper_1.a2b)((0, ModelHelper_1.ua2b64)(ua)))).to.deep.eq(ua);
36
+ });
37
+ it('should support b64 -> ab and vice versa for big data set', () => {
38
+ const raw = getRaw(30 * 1024 * 1024);
39
+ const b64 = (0, ModelHelper_1.b2a)(raw);
40
+ const ua = (0, ModelHelper_1.string2ua)(raw);
41
+ (0, chai_1.expect)((0, ModelHelper_1.ua2b64)((0, ModelHelper_1.b64_2ua)(b64))).to.equal(b64);
42
+ (0, chai_1.expect)((0, ModelHelper_1.b64_2ua)((0, ModelHelper_1.ua2b64)(ua))).to.deep.eq(ua);
43
+ }).timeout(120000);
44
+ });
45
+ //# sourceMappingURL=modelHelpersTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelHelpersTest.js","sourceRoot":"","sources":["../../../../test/icc-api/model/modelHelpersTest.ts"],"names":[],"mappings":";;AAAA,sBAAsB;AACtB,+BAA6B;AAC7B,iBAAc;AAEd,oEAAoG;AAEpG,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;AACvF,CAAC;AAED,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,IAAA,iBAAG,EAAC,GAAG,CAAC,CAAA;QAEpB,IAAA,aAAM,EAAC,IAAA,iBAAG,EAAC,IAAA,iBAAG,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACnC,IAAA,aAAM,EAAC,IAAA,iBAAG,EAAC,IAAA,iBAAG,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,UAAU,GAAG,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAA;QAEjC,IAAA,aAAM,EAAC,IAAA,uBAAS,EAAC,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/C,IAAA,aAAM,EAAC,IAAA,uBAAS,EAAC,IAAA,uBAAS,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,IAAA,iBAAG,EAAC,GAAG,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAA;QAEzB,IAAA,aAAM,EAAC,IAAA,oBAAM,EAAC,IAAA,qBAAO,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,IAAA,qBAAO,EAAC,IAAA,oBAAM,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,IAAA,iBAAG,EAAC,GAAG,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAA;QAEzB,IAAA,aAAM,EAAC,IAAA,iBAAG,EAAC,IAAA,uBAAS,EAAC,IAAA,qBAAO,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClD,IAAA,aAAM,EAAC,IAAA,uBAAS,EAAC,IAAA,iBAAG,EAAC,IAAA,oBAAM,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,IAAA,iBAAG,EAAC,GAAG,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,IAAA,uBAAS,EAAC,GAAG,CAAC,CAAA;QAEzB,IAAA,aAAM,EAAC,IAAA,oBAAM,EAAC,IAAA,qBAAO,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,IAAA,qBAAO,EAAC,IAAA,oBAAM,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AACpB,CAAC,CAAC,CAAA","sourcesContent":["/* make node behave */\nimport { expect } from 'chai'\nimport 'mocha'\n\nimport { a2b, b2a, string2ua, ua2string, b64_2ua, ua2b64 } from '../../../icc-api/model/ModelHelper'\n\nfunction getRaw(size: number) {\n return 'x'.repeat(size).replace(/./g, () => String.fromCharCode(Math.random() * 256))\n}\n\ndescribe('invariants', () => {\n it('should support b64 -> binary and vice versa', () => {\n const raw = getRaw(1024)\n const b64 = b2a(raw)\n\n expect(a2b(b2a(raw))).to.equal(raw)\n expect(b2a(a2b(b64))).to.equal(b64)\n })\n\n it('should support string2ua and vice versa', () => {\n const raw = getRaw(1024)\n const uint8Array = string2ua(raw)\n\n expect(ua2string(string2ua(raw))).to.equal(raw)\n expect(string2ua(ua2string(uint8Array))).to.deep.eq(uint8Array)\n })\n\n it('should support b64 -> ab and vice versa', () => {\n const raw = getRaw(1024)\n const b64 = b2a(raw)\n const ua = string2ua(raw)\n\n expect(ua2b64(b64_2ua(b64))).to.equal(b64)\n expect(b64_2ua(ua2b64(ua))).to.deep.eq(ua)\n })\n\n it('Cross conversions should work too', () => {\n const raw = getRaw(1024)\n const b64 = b2a(raw)\n const ua = string2ua(raw)\n\n expect(b2a(ua2string(b64_2ua(b64)))).to.equal(b64)\n expect(string2ua(a2b(ua2b64(ua)))).to.deep.eq(ua)\n })\n\n it('should support b64 -> ab and vice versa for big data set', () => {\n const raw = getRaw(30 * 1024 * 1024)\n const b64 = b2a(raw)\n const ua = string2ua(raw)\n\n expect(ua2b64(b64_2ua(b64))).to.equal(b64)\n expect(b64_2ua(ua2b64(ua))).to.deep.eq(ua)\n }).timeout(120000)\n})\n"]}
@@ -0,0 +1 @@
1
+ import 'isomorphic-fetch';
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("../../utils/test_utils");
13
+ const types_1 = require("@icure/test-setup/types");
14
+ require("isomorphic-fetch");
15
+ const icc_api_1 = require("../../../icc-api");
16
+ const AuthenticationProvider_1 = require("../../../icc-x-api/auth/AuthenticationProvider");
17
+ const chai_1 = require("chai");
18
+ const chaiAsPromised = require("chai-as-promised");
19
+ const SmartAuthProvider_1 = require("../../../icc-x-api/auth/SmartAuthProvider");
20
+ (0, chai_1.use)(chaiAsPromised);
21
+ (0, test_utils_1.setLocalStorage)(fetch);
22
+ let host;
23
+ let userDetails;
24
+ (0, test_utils_1.describeNoLite)('Authentication providers should be able to switch group', function () {
25
+ before(function () {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ this.timeout(600000);
28
+ const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
29
+ const env = yield initializer.execute((0, types_1.getEnvVariables)());
30
+ host = env.iCureUrl;
31
+ userDetails = yield (0, test_utils_1.createUserInMultipleGroups)(env);
32
+ console.log('Users created');
33
+ });
34
+ });
35
+ const authenticationProviders = [
36
+ ['Basic', () => new AuthenticationProvider_1.BasicAuthenticationProvider(userDetails.userLogin, userDetails.userPw12)],
37
+ [
38
+ 'Jwt',
39
+ () => new AuthenticationProvider_1.JwtAuthenticationProvider(new icc_api_1.IccAuthApi(host, {}, new AuthenticationProvider_1.NoAuthenticationProvider(), fetch), userDetails.userLogin, userDetails.userPw12),
40
+ ],
41
+ [
42
+ 'Ensemble',
43
+ () => new AuthenticationProvider_1.EnsembleAuthenticationProvider(new icc_api_1.IccAuthApi(host, {}, new AuthenticationProvider_1.NoAuthenticationProvider(), fetch), userDetails.userLogin, userDetails.userPw12),
44
+ ],
45
+ [
46
+ 'Smart',
47
+ () => SmartAuthProvider_1.SmartAuthProvider.initialise(new icc_api_1.IccAuthApi(host, {}, new AuthenticationProvider_1.NoAuthenticationProvider(), fetch), userDetails.userLogin, {
48
+ getSecret(acceptedSecrets, previousAttempts) {
49
+ (0, chai_1.expect)(acceptedSecrets).to.include(SmartAuthProvider_1.AuthSecretType.PASSWORD);
50
+ return Promise.resolve({ value: userDetails.userPw12, secretType: SmartAuthProvider_1.AuthSecretType.PASSWORD });
51
+ },
52
+ }),
53
+ ],
54
+ ];
55
+ for (const [providerType, providerFactory] of authenticationProviders) {
56
+ it(`should be able to switch to another group if the username-password is the same in the new group (${providerType})`, () => __awaiter(this, void 0, void 0, function* () {
57
+ const provider = providerFactory();
58
+ const initialUserApi = new icc_api_1.IccUserApi(host, {}, provider, fetch);
59
+ const initialUser = yield initialUserApi.getCurrentUser();
60
+ (0, chai_1.expect)(initialUser.id).to.be.oneOf([userDetails.user1.id, userDetails.user2.id]);
61
+ const matches = yield initialUserApi.getMatchingUsers();
62
+ (0, chai_1.expect)(matches.map((x) => x.userId)).to.have.members([userDetails.user1.id, userDetails.user2.id]);
63
+ const switchedToGroup2Provider = yield provider.switchGroup(userDetails.group2.id, matches);
64
+ const userApiGroup2 = new icc_api_1.IccUserApi(host, {}, switchedToGroup2Provider, fetch);
65
+ const userGroup2 = yield userApiGroup2.getCurrentUser();
66
+ (0, chai_1.expect)(userGroup2.id).to.equal(userDetails.user2.id);
67
+ const switchedToGroup1Provider = yield switchedToGroup2Provider.switchGroup(userDetails.group1.id, matches);
68
+ const userApiGroup1 = new icc_api_1.IccUserApi(host, {}, switchedToGroup1Provider, fetch);
69
+ const userGroup1 = yield userApiGroup1.getCurrentUser();
70
+ (0, chai_1.expect)(userGroup1.id).to.equal(userDetails.user1.id);
71
+ }));
72
+ it(`should not be able to switch to another group if the username-password is different in the new group (${providerType})`, () => __awaiter(this, void 0, void 0, function* () {
73
+ const provider = providerFactory();
74
+ const initialUserApi = new icc_api_1.IccUserApi(host, {}, provider, fetch);
75
+ const matches = yield initialUserApi.getMatchingUsers();
76
+ (0, chai_1.expect)(matches.map((x) => x.userId)).to.not.contain(userDetails.user3.id);
77
+ yield (0, chai_1.expect)(provider.switchGroup(userDetails.group3.id, matches)).to.be.rejected;
78
+ }));
79
+ }
80
+ });
81
+ //# sourceMappingURL=group-switch-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-switch-test.js","sourceRoot":"","sources":["../../../../test/icc-x-api/auth/group-switch-test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createUserInMultipleGroups,\n describeNoLite,\n getEnvironmentInitializer,\n setLocalStorage,\n UserInManyGroupsDetails,\n} from '../../utils/test_utils'\nimport { getEnvVariables } from '@icure/test-setup/types'\nimport 'isomorphic-fetch'\nimport { IccAuthApi, IccUserApi } from '../../../icc-api'\nimport {\n AuthenticationProvider,\n BasicAuthenticationProvider,\n EnsembleAuthenticationProvider,\n JwtAuthenticationProvider,\n NoAuthenticationProvider,\n} from '../../../icc-x-api/auth/AuthenticationProvider'\nimport { expect, use as chaiUse } from 'chai'\nimport * as chaiAsPromised from 'chai-as-promised'\nimport { AuthSecretDetails, AuthSecretType, SmartAuthProvider } from '../../../icc-x-api/auth/SmartAuthProvider'\n\nchaiUse(chaiAsPromised)\n\nsetLocalStorage(fetch)\n\nlet host: string\nlet userDetails: UserInManyGroupsDetails\n\ndescribeNoLite('Authentication providers should be able to switch group', function () {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n const env = await initializer.execute(getEnvVariables())\n host = env.iCureUrl\n userDetails = await createUserInMultipleGroups(env)\n console.log('Users created')\n })\n\n const authenticationProviders: [string, () => AuthenticationProvider][] = [\n ['Basic', () => new BasicAuthenticationProvider(userDetails.userLogin, userDetails.userPw12)],\n [\n 'Jwt',\n () =>\n new JwtAuthenticationProvider(new IccAuthApi(host, {}, new NoAuthenticationProvider(), fetch), userDetails.userLogin, userDetails.userPw12),\n ],\n [\n 'Ensemble',\n () =>\n new EnsembleAuthenticationProvider(\n new IccAuthApi(host, {}, new NoAuthenticationProvider(), fetch),\n userDetails.userLogin,\n userDetails.userPw12\n ),\n ],\n [\n 'Smart',\n () =>\n SmartAuthProvider.initialise(new IccAuthApi(host, {}, new NoAuthenticationProvider(), fetch), userDetails.userLogin, {\n getSecret(acceptedSecrets: AuthSecretType[], previousAttempts: AuthSecretDetails[]): Promise<AuthSecretDetails> {\n expect(acceptedSecrets).to.include(AuthSecretType.PASSWORD)\n return Promise.resolve({ value: userDetails.userPw12, secretType: AuthSecretType.PASSWORD })\n },\n }),\n ],\n ]\n\n for (const [providerType, providerFactory] of authenticationProviders) {\n it(`should be able to switch to another group if the username-password is the same in the new group (${providerType})`, async () => {\n const provider = providerFactory()\n const initialUserApi = new IccUserApi(host, {}, provider, fetch)\n const initialUser = await initialUserApi.getCurrentUser()\n expect(initialUser.id).to.be.oneOf([userDetails.user1.id, userDetails.user2.id])\n const matches = await initialUserApi.getMatchingUsers()\n expect(matches.map((x) => x.userId)).to.have.members([userDetails.user1.id, userDetails.user2.id])\n const switchedToGroup2Provider = await provider.switchGroup(userDetails.group2.id!, matches)\n const userApiGroup2 = new IccUserApi(host, {}, switchedToGroup2Provider, fetch)\n const userGroup2 = await userApiGroup2.getCurrentUser()\n expect(userGroup2.id).to.equal(userDetails.user2.id)\n const switchedToGroup1Provider = await switchedToGroup2Provider.switchGroup(userDetails.group1.id!, matches)\n const userApiGroup1 = new IccUserApi(host, {}, switchedToGroup1Provider, fetch)\n const userGroup1 = await userApiGroup1.getCurrentUser()\n expect(userGroup1.id).to.equal(userDetails.user1.id)\n })\n\n it(`should not be able to switch to another group if the username-password is different in the new group (${providerType})`, async () => {\n const provider = providerFactory()\n const initialUserApi = new IccUserApi(host, {}, provider, fetch)\n const matches = await initialUserApi.getMatchingUsers()\n expect(matches.map((x) => x.userId)).to.not.contain(userDetails.user3.id)\n await expect(provider.switchGroup(userDetails.group3.id!, matches)).to.be.rejected\n })\n }\n})\n"]}
@@ -0,0 +1,2 @@
1
+ import 'isomorphic-fetch';
2
+ export declare function sleep(ms: number): Promise<any>;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.sleep = void 0;
13
+ require("isomorphic-fetch");
14
+ const mocha_1 = require("mocha");
15
+ const test_utils_1 = require("../../utils/test_utils");
16
+ const TestApi_1 = require("../../utils/TestApi");
17
+ const icc_x_api_1 = require("../../../icc-x-api");
18
+ const crypto_1 = require("crypto");
19
+ const chai_1 = require("chai");
20
+ const icc_api_1 = require("../../../icc-api");
21
+ const AuthenticationProvider_1 = require("../../../icc-x-api/auth/AuthenticationProvider");
22
+ const types_1 = require("@icure/test-setup/types");
23
+ (0, test_utils_1.setLocalStorage)(fetch);
24
+ let env;
25
+ function sleep(ms) {
26
+ return new Promise((resolve) => setTimeout(resolve, ms));
27
+ }
28
+ exports.sleep = sleep;
29
+ describe('Jwt authentication concurrency test', () => {
30
+ (0, mocha_1.before)(function () {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ this.timeout(600000);
33
+ const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
34
+ env = yield initializer.execute((0, types_1.getEnvVariables)());
35
+ });
36
+ });
37
+ it('Can login simultaneously with the same user', () => __awaiter(void 0, void 0, void 0, function* () {
38
+ const api = yield (0, TestApi_1.TestApi)(env.iCureUrl, env.dataOwnerDetails[test_utils_1.hcp1Username].user, env.dataOwnerDetails[test_utils_1.hcp1Username].password, crypto_1.webcrypto);
39
+ const users = yield Promise.all([...Array(5)].map(() => __awaiter(void 0, void 0, void 0, function* () {
40
+ return yield api.userApi.getCurrentUser();
41
+ })));
42
+ users.forEach((u) => {
43
+ (0, chai_1.expect)(u.login).to.be.equal(env.dataOwnerDetails[test_utils_1.hcp1Username].user);
44
+ });
45
+ }));
46
+ it('After logging in, can make requests asynchronously', () => __awaiter(void 0, void 0, void 0, function* () {
47
+ const api = yield (0, TestApi_1.TestApi)(env.iCureUrl, env.dataOwnerDetails[test_utils_1.hcp1Username].user, env.dataOwnerDetails[test_utils_1.hcp1Username].password, crypto_1.webcrypto);
48
+ yield api.userApi.getCurrentUser();
49
+ const users = yield Promise.all([...Array(5)].map(() => __awaiter(void 0, void 0, void 0, function* () {
50
+ return yield api.userApi.getCurrentUser();
51
+ })));
52
+ users.forEach((u) => {
53
+ (0, chai_1.expect)(u.login).to.be.equal(env.dataOwnerDetails[test_utils_1.hcp1Username].user);
54
+ });
55
+ }));
56
+ it('It can refresh the token asynchronously', function () {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ if (!process.env.TEST_ENVIRONMENT || process.env.TEST_ENVIRONMENT === 'acceptance') {
59
+ this.skip();
60
+ }
61
+ const api = yield (0, TestApi_1.TestApi)(env.iCureUrl, env.dataOwnerDetails[test_utils_1.hcp1Username].user, env.dataOwnerDetails[test_utils_1.hcp1Username].password, crypto_1.webcrypto);
62
+ yield api.userApi.getCurrentUser();
63
+ yield sleep(20000);
64
+ const users = yield Promise.all([...Array(5)].map(() => __awaiter(this, void 0, void 0, function* () {
65
+ return yield api.userApi.getCurrentUser();
66
+ })));
67
+ users.forEach((u) => {
68
+ (0, chai_1.expect)(u.login).to.be.equal(env.dataOwnerDetails[test_utils_1.hcp1Username].user);
69
+ });
70
+ });
71
+ });
72
+ it('Can instantiate a x-api without provider and get a 401', () => __awaiter(void 0, void 0, void 0, function* () {
73
+ const xUserApi = new icc_x_api_1.IccUserXApi(env.iCureUrl, {}, new AuthenticationProvider_1.NoAuthenticationProvider(), null);
74
+ xUserApi
75
+ .getCurrentUser()
76
+ .then(() => {
77
+ (0, chai_1.expect)(false).to.be.eq(true, 'I should not get here');
78
+ })
79
+ .catch((e) => {
80
+ (0, chai_1.expect)(e.statusCode).to.be.eq(401);
81
+ });
82
+ }));
83
+ it('Can instantiate a user-x-api with JWT provider and make requests', () => __awaiter(void 0, void 0, void 0, function* () {
84
+ const authApi = new icc_api_1.IccAuthApi(env.iCureUrl, {});
85
+ const provider = new AuthenticationProvider_1.JwtAuthenticationProvider(authApi, env.dataOwnerDetails[test_utils_1.hcp1Username].user, env.dataOwnerDetails[test_utils_1.hcp1Username].password);
86
+ const xUserApi = new icc_x_api_1.IccUserXApi(env.iCureUrl, {}, provider, null);
87
+ const users = yield Promise.all([...Array(5)].map(() => __awaiter(void 0, void 0, void 0, function* () {
88
+ return yield xUserApi.getCurrentUser();
89
+ })));
90
+ users.forEach((u) => {
91
+ (0, chai_1.expect)(u.login).to.be.equal(env.dataOwnerDetails[test_utils_1.hcp1Username].user);
92
+ });
93
+ const tokens = yield provider.getIcureTokens();
94
+ (0, chai_1.expect)(tokens).to.not.be.undefined;
95
+ const tokenOnlyProvider = new AuthenticationProvider_1.JwtAuthenticationProvider(authApi, undefined, undefined, undefined, tokens);
96
+ const xUserApiTokenOnly = new icc_x_api_1.IccUserXApi(env.iCureUrl, {}, tokenOnlyProvider, null);
97
+ const usersTokenOnly = yield Promise.all([...Array(5)].map(() => __awaiter(void 0, void 0, void 0, function* () {
98
+ return yield xUserApiTokenOnly.getCurrentUser();
99
+ })));
100
+ usersTokenOnly.forEach((u) => {
101
+ (0, chai_1.expect)(u.login).to.be.equal(env.dataOwnerDetails[test_utils_1.hcp1Username].user);
102
+ });
103
+ }));
104
+ it('Can instantiate a user-x-api with Basic provider and make requests', () => __awaiter(void 0, void 0, void 0, function* () {
105
+ const a = new AuthenticationProvider_1.BasicAuthenticationProvider(env.dataOwnerDetails[test_utils_1.hcp1Username].user, env.dataOwnerDetails[test_utils_1.hcp1Username].password);
106
+ const xUserApi = new icc_x_api_1.IccUserXApi(env.iCureUrl, {}, a, null);
107
+ const currentUser = yield xUserApi.getCurrentUser();
108
+ (0, chai_1.expect)(currentUser.login).to.be.equal(env.dataOwnerDetails[test_utils_1.hcp1Username].user);
109
+ const fetchedUser = yield xUserApi.getUser(currentUser.id);
110
+ (0, chai_1.expect)(fetchedUser.id).to.be.equal(currentUser.id);
111
+ }));
112
+ });
113
+ //# sourceMappingURL=jwt-concurrency-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-concurrency-test.js","sourceRoot":"","sources":["../../../../test/icc-x-api/auth/jwt-concurrency-test.ts"],"names":[],"mappings":"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","sourcesContent":["import 'isomorphic-fetch'\nimport { before } from 'mocha'\nimport { getEnvironmentInitializer, hcp1Username, setLocalStorage } from '../../utils/test_utils'\nimport { TestApi } from '../../utils/TestApi'\nimport { IccUserXApi } from '../../../icc-x-api'\nimport { webcrypto } from 'crypto'\nimport { expect } from 'chai'\nimport { XHR } from '../../../icc-api/api/XHR'\nimport XHRError = XHR.XHRError\nimport { IccAuthApi } from '../../../icc-api'\nimport { NoAuthenticationProvider, BasicAuthenticationProvider, JwtAuthenticationProvider } from '../../../icc-x-api/auth/AuthenticationProvider'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\n\nsetLocalStorage(fetch)\nlet env: TestVars\n\nexport function sleep(ms: number): Promise<any> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\ndescribe('Jwt authentication concurrency test', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it('Can login simultaneously with the same user', async () => {\n const api = await TestApi(\n env.iCureUrl,\n env.dataOwnerDetails[hcp1Username].user,\n env.dataOwnerDetails[hcp1Username].password,\n webcrypto as unknown as Crypto\n )\n const users = await Promise.all(\n [...Array<number>(5)].map(async () => {\n return await api.userApi.getCurrentUser()\n })\n )\n users.forEach((u) => {\n expect(u.login).to.be.equal(env.dataOwnerDetails[hcp1Username].user)\n })\n })\n\n it('After logging in, can make requests asynchronously', async () => {\n const api = await TestApi(\n env.iCureUrl,\n env.dataOwnerDetails[hcp1Username].user,\n env.dataOwnerDetails[hcp1Username].password,\n webcrypto as unknown as Crypto\n )\n\n await api.userApi.getCurrentUser()\n\n const users = await Promise.all(\n [...Array<number>(5)].map(async () => {\n return await api.userApi.getCurrentUser()\n })\n )\n users.forEach((u) => {\n expect(u.login).to.be.equal(env.dataOwnerDetails[hcp1Username].user)\n })\n })\n\n it('It can refresh the token asynchronously', async function () {\n if (!process.env.TEST_ENVIRONMENT || process.env.TEST_ENVIRONMENT === 'acceptance') {\n this.skip()\n }\n const api = await TestApi(\n env.iCureUrl,\n env.dataOwnerDetails[hcp1Username].user,\n env.dataOwnerDetails[hcp1Username].password,\n webcrypto as unknown as Crypto\n )\n await api.userApi.getCurrentUser()\n\n await sleep(20000)\n\n const users = await Promise.all(\n [...Array<number>(5)].map(async () => {\n return await api.userApi.getCurrentUser()\n })\n )\n users.forEach((u) => {\n expect(u.login).to.be.equal(env.dataOwnerDetails[hcp1Username].user)\n })\n })\n\n it('Can instantiate a x-api without provider and get a 401', async () => {\n const xUserApi = new IccUserXApi(env.iCureUrl, {}, new NoAuthenticationProvider(), null as any)\n xUserApi\n .getCurrentUser()\n .then(() => {\n expect(false).to.be.eq(true, 'I should not get here')\n })\n .catch((e: XHRError) => {\n expect(e.statusCode).to.be.eq(401)\n })\n })\n\n it('Can instantiate a user-x-api with JWT provider and make requests', async () => {\n const authApi = new IccAuthApi(env.iCureUrl, {})\n const provider = new JwtAuthenticationProvider(authApi, env.dataOwnerDetails[hcp1Username].user, env.dataOwnerDetails[hcp1Username].password)\n const xUserApi = new IccUserXApi(env.iCureUrl, {}, provider, null as any)\n\n const users = await Promise.all(\n [...Array<number>(5)].map(async () => {\n return await xUserApi.getCurrentUser()\n })\n )\n users.forEach((u) => {\n expect(u.login).to.be.equal(env.dataOwnerDetails[hcp1Username].user)\n })\n\n const tokens = await provider.getIcureTokens()\n expect(tokens).to.not.be.undefined\n const tokenOnlyProvider = new JwtAuthenticationProvider(authApi, undefined, undefined, undefined, tokens)\n const xUserApiTokenOnly = new IccUserXApi(env.iCureUrl, {}, tokenOnlyProvider, null as any)\n\n const usersTokenOnly = await Promise.all(\n [...Array<number>(5)].map(async () => {\n return await xUserApiTokenOnly.getCurrentUser()\n })\n )\n usersTokenOnly.forEach((u) => {\n expect(u.login).to.be.equal(env.dataOwnerDetails[hcp1Username].user)\n })\n })\n\n it('Can instantiate a user-x-api with Basic provider and make requests', async () => {\n const a = new BasicAuthenticationProvider(env.dataOwnerDetails[hcp1Username].user, env.dataOwnerDetails[hcp1Username].password)\n const xUserApi = new IccUserXApi(env.iCureUrl, {}, a, null as any)\n\n const currentUser = await xUserApi.getCurrentUser()\n expect(currentUser.login).to.be.equal(env.dataOwnerDetails[hcp1Username].user)\n\n const fetchedUser = await xUserApi.getUser(currentUser.id!)\n expect(fetchedUser.id).to.be.equal(currentUser.id)\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ import 'isomorphic-fetch';