@icure/api 8.11.0 → 8.13.0
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.
- package/icc-api/api/IccUserApi.d.ts +1 -1
- package/icc-api/api/IccUserApi.js +2 -2
- package/icc-api/api/IccUserApi.js.map +1 -1
- package/icc-api/model/HealthElement.d.ts +11 -0
- package/icc-api/model/HealthElement.js.map +1 -1
- package/icc-api/model/HealthElementAsserter.d.ts +33 -0
- package/icc-api/model/HealthElementAsserter.js +28 -0
- package/icc-api/model/HealthElementAsserter.js.map +1 -0
- package/icc-api/model/HealthElementQualifiedLink.d.ts +31 -0
- package/icc-api/model/HealthElementQualifiedLink.js +26 -0
- package/icc-api/model/HealthElementQualifiedLink.js.map +1 -0
- package/icc-api/model/models.d.ts +2 -0
- package/icc-api/model/models.js +2 -0
- package/icc-api/model/models.js.map +1 -1
- package/icc-x-api/filters/HealthElementByAssociationIdFilter.d.ts +23 -0
- package/icc-x-api/filters/HealthElementByAssociationIdFilter.js +30 -0
- package/icc-x-api/filters/HealthElementByAssociationIdFilter.js.map +1 -0
- package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.d.ts +24 -0
- package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.js +30 -0
- package/icc-x-api/filters/HealthElementByQualifiedLinkFilter.js.map +1 -0
- package/icc-x-api/filters/filters.d.ts +2 -0
- package/icc-x-api/filters/filters.js +2 -0
- package/icc-x-api/filters/filters.js.map +1 -1
- package/icc-x-api/index.js +1 -1
- package/icc-x-api/index.js.map +1 -1
- package/package.json +1 -1
- package/test/benchmarks/lzma-benchmark.spec.d.ts +0 -1
- package/test/benchmarks/lzma-benchmark.spec.js +0 -131
- package/test/benchmarks/lzma-benchmark.spec.js.map +0 -1
- package/test/benchmarks/lzma-compat.spec.d.ts +0 -1
- package/test/benchmarks/lzma-compat.spec.js +0 -187
- package/test/benchmarks/lzma-compat.spec.js.map +0 -1
- package/test/benchmarks/playwright.config.d.ts +0 -2
- package/test/benchmarks/playwright.config.js +0 -18
- package/test/benchmarks/playwright.config.js.map +0 -1
- package/test/icc-api/api/IccAgendaApi.d.ts +0 -1
- package/test/icc-api/api/IccAgendaApi.js +0 -64
- package/test/icc-api/api/IccAgendaApi.js.map +0 -1
- package/test/icc-api/api/IccAnonymousAccessApi.d.ts +0 -1
- package/test/icc-api/api/IccAnonymousAccessApi.js +0 -58
- package/test/icc-api/api/IccAnonymousAccessApi.js.map +0 -1
- package/test/icc-api/api/IccCalendarItemApi.d.ts +0 -1
- package/test/icc-api/api/IccCalendarItemApi.js +0 -67
- package/test/icc-api/api/IccCalendarItemApi.js.map +0 -1
- package/test/icc-api/api/IccCalendarItemTypeApi.d.ts +0 -1
- package/test/icc-api/api/IccCalendarItemTypeApi.js +0 -96
- package/test/icc-api/api/IccCalendarItemTypeApi.js.map +0 -1
- package/test/icc-api/api/IccCodeApi.d.ts +0 -1
- package/test/icc-api/api/IccCodeApi.js +0 -38
- package/test/icc-api/api/IccCodeApi.js.map +0 -1
- package/test/icc-api/api/IccDocumentApi.d.ts +0 -1
- package/test/icc-api/api/IccDocumentApi.js +0 -199
- package/test/icc-api/api/IccDocumentApi.js.map +0 -1
- package/test/icc-api/api/IccGroupApi.d.ts +0 -1
- package/test/icc-api/api/IccGroupApi.js +0 -50
- package/test/icc-api/api/IccGroupApi.js.map +0 -1
- package/test/icc-api/api/IccKeywordApi.d.ts +0 -1
- package/test/icc-api/api/IccKeywordApi.js +0 -64
- package/test/icc-api/api/IccKeywordApi.js.map +0 -1
- package/test/icc-api/api/IccMedicalLocationApi.d.ts +0 -1
- package/test/icc-api/api/IccMedicalLocationApi.js +0 -64
- package/test/icc-api/api/IccMedicalLocationApi.js.map +0 -1
- package/test/icc-api/api/IccPlaceApi.d.ts +0 -1
- package/test/icc-api/api/IccPlaceApi.js +0 -64
- package/test/icc-api/api/IccPlaceApi.js.map +0 -1
- package/test/icc-api/api/IccRecoveryDataApi.d.ts +0 -1
- package/test/icc-api/api/IccRecoveryDataApi.js +0 -95
- package/test/icc-api/api/IccRecoveryDataApi.js.map +0 -1
- package/test/icc-api/api/IccRoleApi.d.ts +0 -1
- package/test/icc-api/api/IccRoleApi.js +0 -34
- package/test/icc-api/api/IccRoleApi.js.map +0 -1
- package/test/icc-api/api/IccUserApi.d.ts +0 -1
- package/test/icc-api/api/IccUserApi.js +0 -96
- package/test/icc-api/api/IccUserApi.js.map +0 -1
- package/test/icc-api/e2e/IccCalendarItemApi.d.ts +0 -1
- package/test/icc-api/e2e/IccCalendarItemApi.js +0 -46
- package/test/icc-api/e2e/IccCalendarItemApi.js.map +0 -1
- package/test/icc-api/model/modelHelpersTest.d.ts +0 -1
- package/test/icc-api/model/modelHelpersTest.js +0 -45
- package/test/icc-api/model/modelHelpersTest.js.map +0 -1
- package/test/icc-x-api/auth/group-switch-test.d.ts +0 -1
- package/test/icc-x-api/auth/group-switch-test.js +0 -81
- package/test/icc-x-api/auth/group-switch-test.js.map +0 -1
- package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +0 -2
- package/test/icc-x-api/auth/jwt-concurrency-test.js +0 -112
- package/test/icc-x-api/auth/jwt-concurrency-test.js.map +0 -1
- package/test/icc-x-api/auth/jwt-provider-test.d.ts +0 -1
- package/test/icc-x-api/auth/jwt-provider-test.js +0 -197
- package/test/icc-x-api/auth/jwt-provider-test.js.map +0 -1
- package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +0 -1
- package/test/icc-x-api/auth/smart-auth-provider-test.js +0 -224
- package/test/icc-x-api/auth/smart-auth-provider-test.js.map +0 -1
- package/test/icc-x-api/autofix-anonymity-test.d.ts +0 -1
- package/test/icc-x-api/autofix-anonymity-test.js +0 -122
- package/test/icc-x-api/autofix-anonymity-test.js.map +0 -1
- package/test/icc-x-api/confidential-entities-test.d.ts +0 -1
- package/test/icc-x-api/confidential-entities-test.js +0 -168
- package/test/icc-x-api/confidential-entities-test.js.map +0 -1
- package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +0 -1
- package/test/icc-x-api/crud/comprehensive-crud-test.js +0 -276
- package/test/icc-x-api/crud/comprehensive-crud-test.js.map +0 -1
- package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +0 -16
- package/test/icc-x-api/crud/entities-crud-test-interface.js +0 -407
- package/test/icc-x-api/crud/entities-crud-test-interface.js.map +0 -1
- package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +0 -1
- package/test/icc-x-api/crypto/anonymous-delegations-test.js +0 -587
- package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +0 -1
- package/test/icc-x-api/crypto/concurrency.d.ts +0 -1
- package/test/icc-x-api/crypto/concurrency.js +0 -35
- package/test/icc-x-api/crypto/concurrency.js.map +0 -1
- package/test/icc-x-api/crypto/crypto-utils.d.ts +0 -1
- package/test/icc-x-api/crypto/crypto-utils.js +0 -79
- package/test/icc-x-api/crypto/crypto-utils.js.map +0 -1
- package/test/icc-x-api/crypto/cryptoTest.d.ts +0 -2
- package/test/icc-x-api/crypto/cryptoTest.js +0 -402
- package/test/icc-x-api/crypto/cryptoTest.js.map +0 -1
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +0 -1
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +0 -166
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +0 -1
- package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/exchange-data-manager-test.js +0 -674
- package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +0 -1
- package/test/icc-x-api/crypto/full-crypto-test.d.ts +0 -1
- package/test/icc-x-api/crypto/full-crypto-test.js +0 -454
- package/test/icc-x-api/crypto/full-crypto-test.js.map +0 -1
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.d.ts +0 -1
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.js +0 -379
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +0 -1
- package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js +0 -278
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +0 -1
- package/test/icc-x-api/crypto/shamir.d.ts +0 -2
- package/test/icc-x-api/crypto/shamir.js +0 -167
- package/test/icc-x-api/crypto/shamir.js.map +0 -1
- package/test/icc-x-api/crypto/share-deduplication-test.d.ts +0 -1
- package/test/icc-x-api/crypto/share-deduplication-test.js +0 -250
- package/test/icc-x-api/crypto/share-deduplication-test.js.map +0 -1
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +0 -1
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +0 -71
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +0 -1
- package/test/icc-x-api/crypto/soft-deleted-data-owners.d.ts +0 -2
- package/test/icc-x-api/crypto/soft-deleted-data-owners.js +0 -113
- package/test/icc-x-api/crypto/soft-deleted-data-owners.js.map +0 -1
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +0 -246
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +0 -1
- package/test/icc-x-api/entity-with-attachments-api-test.d.ts +0 -1
- package/test/icc-x-api/entity-with-attachments-api-test.js +0 -142
- package/test/icc-x-api/entity-with-attachments-api-test.js.map +0 -1
- package/test/icc-x-api/filters/filters.d.ts +0 -1
- package/test/icc-x-api/filters/filters.js +0 -49
- package/test/icc-x-api/filters/filters.js.map +0 -1
- package/test/icc-x-api/filters/healthelement.d.ts +0 -1
- package/test/icc-x-api/filters/healthelement.js +0 -333
- package/test/icc-x-api/filters/healthelement.js.map +0 -1
- package/test/icc-x-api/icc-accesslog-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-accesslog-x-api.js +0 -106
- package/test/icc-x-api/icc-accesslog-x-api.js.map +0 -1
- package/test/icc-x-api/icc-application-settings-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-application-settings-x-api.js +0 -91
- package/test/icc-x-api/icc-application-settings-x-api.js.map +0 -1
- package/test/icc-x-api/icc-auth-api.d.ts +0 -1
- package/test/icc-x-api/icc-auth-api.js +0 -47
- package/test/icc-x-api/icc-auth-api.js.map +0 -1
- package/test/icc-x-api/icc-calendar-item-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-calendar-item-x-api.js +0 -150
- package/test/icc-x-api/icc-calendar-item-x-api.js.map +0 -1
- package/test/icc-x-api/icc-code-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-code-x-api-test.js +0 -74
- package/test/icc-x-api/icc-code-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-contact-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-contact-x-api.js +0 -355
- package/test/icc-x-api/icc-contact-x-api.js.map +0 -1
- package/test/icc-x-api/icc-document-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-document-x-api.js +0 -76
- package/test/icc-x-api/icc-document-x-api.js.map +0 -1
- package/test/icc-x-api/icc-form-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-form-x-api.js +0 -413
- package/test/icc-x-api/icc-form-x-api.js.map +0 -1
- package/test/icc-x-api/icc-hcparty-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-hcparty-x-api-test.js +0 -43
- package/test/icc-x-api/icc-hcparty-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-helement-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-helement-x-api-test.js +0 -155
- package/test/icc-x-api/icc-helement-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-invoice-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-invoice-x-api.js +0 -99
- package/test/icc-x-api/icc-invoice-x-api.js.map +0 -1
- package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js +0 -222
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-message-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-message-x-api.js +0 -54
- package/test/icc-x-api/icc-message-x-api.js.map +0 -1
- package/test/icc-x-api/icc-patient-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-patient-x-api-test.js +0 -209
- package/test/icc-x-api/icc-patient-x-api-test.js.map +0 -1
- package/test/icc-x-api/icc-recovery-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-recovery-x-api.js +0 -175
- package/test/icc-x-api/icc-recovery-x-api.js.map +0 -1
- package/test/icc-x-api/icc-topic-x-api.d.ts +0 -1
- package/test/icc-x-api/icc-topic-x-api.js +0 -269
- package/test/icc-x-api/icc-topic-x-api.js.map +0 -1
- package/test/icc-x-api/icc-user-x-api-test.d.ts +0 -1
- package/test/icc-x-api/icc-user-x-api-test.js +0 -99
- package/test/icc-x-api/icc-user-x-api-test.js.map +0 -1
- package/test/icc-x-api/keyless-api.d.ts +0 -1
- package/test/icc-x-api/keyless-api.js +0 -125
- package/test/icc-x-api/keyless-api.js.map +0 -1
- package/test/icc-x-api/patient-user.d.ts +0 -2
- package/test/icc-x-api/patient-user.js +0 -103
- package/test/icc-x-api/patient-user.js.map +0 -1
- package/test/icc-x-api/storage/storage.d.ts +0 -1
- package/test/icc-x-api/storage/storage.js +0 -48
- package/test/icc-x-api/storage/storage.js.map +0 -1
- package/test/icc-x-api/test-api-no-parent.d.ts +0 -1
- package/test/icc-x-api/test-api-no-parent.js +0 -79
- package/test/icc-x-api/test-api-no-parent.js.map +0 -1
- package/test/icc-x-api/test-legacy-data-support.d.ts +0 -1
- package/test/icc-x-api/test-legacy-data-support.js +0 -375
- package/test/icc-x-api/test-legacy-data-support.js.map +0 -1
- package/test/icc-x-api/utils/date-encode-test.d.ts +0 -1
- package/test/icc-x-api/utils/date-encode-test.js +0 -150
- package/test/icc-x-api/utils/date-encode-test.js.map +0 -1
- package/test/icc-x-api/utils/graph-test.d.ts +0 -1
- package/test/icc-x-api/utils/graph-test.js +0 -54
- package/test/icc-x-api/utils/graph-test.js.map +0 -1
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +0 -1
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +0 -364
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +0 -1
- package/test/icc-x-api/utils/lzma-benchmark-test.d.ts +0 -1
- package/test/icc-x-api/utils/lzma-benchmark-test.js +0 -132
- package/test/icc-x-api/utils/lzma-benchmark-test.js.map +0 -1
- package/test/icc-x-api/utils/lzma-compat-test.d.ts +0 -1
- package/test/icc-x-api/utils/lzma-compat-test.js +0 -218
- package/test/icc-x-api/utils/lzma-compat-test.js.map +0 -1
- package/test/icc-x-api/utils/mutex-test.d.ts +0 -1
- package/test/icc-x-api/utils/mutex-test.js +0 -114
- package/test/icc-x-api/utils/mutex-test.js.map +0 -1
- package/test/icc-x-api/utils/to-moment-test.d.ts +0 -1
- package/test/icc-x-api/utils/to-moment-test.js +0 -110
- package/test/icc-x-api/utils/to-moment-test.js.map +0 -1
- package/test/support/CSM-185.d.ts +0 -1
- package/test/support/CSM-185.js +0 -124
- package/test/support/CSM-185.js.map +0 -1
- package/test/support/CSM-243.d.ts +0 -1
- package/test/support/CSM-243.js +0 -120
- package/test/support/CSM-243.js.map +0 -1
- package/test/support/CSM-543.d.ts +0 -1
- package/test/support/CSM-543.js +0 -164
- package/test/support/CSM-543.js.map +0 -1
- package/test/support/CSM-729.d.ts +0 -1
- package/test/support/CSM-729.js +0 -225
- package/test/support/CSM-729.js.map +0 -1
- package/test/support/CSM-814.d.ts +0 -1
- package/test/support/CSM-814.js +0 -475
- package/test/support/CSM-814.js.map +0 -1
- package/test/support/CSM-87.d.ts +0 -0
- package/test/support/CSM-87.js +0 -21
- package/test/support/CSM-87.js.map +0 -1
- package/test/support/CSM-93.d.ts +0 -1
- package/test/support/CSM-93.js +0 -112
- package/test/support/CSM-93.js.map +0 -1
- package/test/utils/FakeDataOwnerApi.d.ts +0 -32
- package/test/utils/FakeDataOwnerApi.js +0 -136
- package/test/utils/FakeDataOwnerApi.js.map +0 -1
- package/test/utils/FakeEncryptionKeysManager.d.ts +0 -36
- package/test/utils/FakeEncryptionKeysManager.js +0 -97
- package/test/utils/FakeEncryptionKeysManager.js.map +0 -1
- package/test/utils/FakeExchangeDataApi.d.ts +0 -32
- package/test/utils/FakeExchangeDataApi.js +0 -92
- package/test/utils/FakeExchangeDataApi.js.map +0 -1
- package/test/utils/FakeExchangeDataManager.d.ts +0 -48
- package/test/utils/FakeExchangeDataManager.js +0 -82
- package/test/utils/FakeExchangeDataManager.js.map +0 -1
- package/test/utils/FakeExchangeDataMapManager.d.ts +0 -12
- package/test/utils/FakeExchangeDataMapManager.js +0 -38
- package/test/utils/FakeExchangeDataMapManager.js.map +0 -1
- package/test/utils/FakeGenericApi.d.ts +0 -16
- package/test/utils/FakeGenericApi.js +0 -65
- package/test/utils/FakeGenericApi.js.map +0 -1
- package/test/utils/KeylessCryptoStrategies.d.ts +0 -23
- package/test/utils/KeylessCryptoStrategies.js +0 -26
- package/test/utils/KeylessCryptoStrategies.js.map +0 -1
- package/test/utils/TestApi.d.ts +0 -3
- package/test/utils/TestApi.js +0 -30
- package/test/utils/TestApi.js.map +0 -1
- package/test/utils/TestCollectionUtils.d.ts +0 -1
- package/test/utils/TestCollectionUtils.js +0 -310
- package/test/utils/TestCollectionUtils.js.map +0 -1
- package/test/utils/TestCryptoStrategies.d.ts +0 -42
- package/test/utils/TestCryptoStrategies.js +0 -80
- package/test/utils/TestCryptoStrategies.js.map +0 -1
- package/test/utils/TestStorage.d.ts +0 -23
- package/test/utils/TestStorage.js +0 -61
- package/test/utils/TestStorage.js.map +0 -1
- package/test/utils/roles.d.ts +0 -14
- package/test/utils/roles.js +0 -345
- package/test/utils/roles.js.map +0 -1
- package/test/utils/test_utils.d.ts +0 -87
- package/test/utils/test_utils.js +0 -452
- package/test/utils/test_utils.js.map +0 -1
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const mocha_1 = require("mocha");
|
|
4
|
-
const chai_1 = require("chai");
|
|
5
|
-
const formatting_util_1 = require("../../../icc-x-api/utils/formatting-util");
|
|
6
|
-
(0, mocha_1.describe)('toMoment', () => {
|
|
7
|
-
(0, mocha_1.it)('should return undefined for undefined/null/NaN input', () => {
|
|
8
|
-
(0, chai_1.expect)((0, formatting_util_1.toMoment)(undefined)).to.be.undefined;
|
|
9
|
-
(0, chai_1.expect)((0, formatting_util_1.toMoment)(null)).to.be.undefined;
|
|
10
|
-
(0, chai_1.expect)((0, formatting_util_1.toMoment)(NaN)).to.be.undefined;
|
|
11
|
-
});
|
|
12
|
-
(0, mocha_1.it)('should handle 0 as a valid epoch timestamp', () => {
|
|
13
|
-
const result = (0, formatting_util_1.toMoment)(0);
|
|
14
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
15
|
-
(0, chai_1.expect)(result.format('YYYY')).to.equal('1970');
|
|
16
|
-
});
|
|
17
|
-
(0, mocha_1.it)('should parse YYYYMMDD long calendar dates', () => {
|
|
18
|
-
const result = (0, formatting_util_1.toMoment)(19850315);
|
|
19
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
20
|
-
(0, chai_1.expect)(result.format('YYYY-MM-DD')).to.equal('1985-03-15');
|
|
21
|
-
});
|
|
22
|
-
(0, mocha_1.it)('should parse YYYYMMDD at the lower boundary (18000101)', () => {
|
|
23
|
-
const result = (0, formatting_util_1.toMoment)(18000101);
|
|
24
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
25
|
-
(0, chai_1.expect)(result.format('YYYY-MM-DD')).to.equal('1800-01-01');
|
|
26
|
-
});
|
|
27
|
-
(0, mocha_1.it)('should parse YYYYMMDD at the upper boundary (25399999)', () => {
|
|
28
|
-
const result = (0, formatting_util_1.toMoment)(25391231);
|
|
29
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
30
|
-
(0, chai_1.expect)(result.format('YYYY-MM-DD')).to.equal('2539-12-31');
|
|
31
|
-
});
|
|
32
|
-
(0, mocha_1.it)('should parse YYYYMMDDHHmmss long calendar datetimes', () => {
|
|
33
|
-
const result = (0, formatting_util_1.toMoment)(20230415143022);
|
|
34
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
35
|
-
(0, chai_1.expect)(result.format('YYYY-MM-DD HH:mm:ss')).to.equal('2023-04-15 14:30:22');
|
|
36
|
-
});
|
|
37
|
-
(0, mocha_1.it)('should parse epoch timestamps in milliseconds', () => {
|
|
38
|
-
const epoch = new Date(2023, 0, 15, 12, 0, 0).getTime();
|
|
39
|
-
const result = (0, formatting_util_1.toMoment)(epoch);
|
|
40
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
41
|
-
(0, chai_1.expect)(result.format('YYYY-MM-DD')).to.equal('2023-01-15');
|
|
42
|
-
(0, chai_1.expect)(result.format('HH')).to.equal('12');
|
|
43
|
-
});
|
|
44
|
-
(0, mocha_1.it)('should treat small numbers (< 18000101) as epoch timestamps', () => {
|
|
45
|
-
const result = (0, formatting_util_1.toMoment)(1000);
|
|
46
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
47
|
-
(0, chai_1.expect)(result.format('YYYY')).to.equal('1970');
|
|
48
|
-
});
|
|
49
|
-
(0, mocha_1.it)('should support various moment format strings', () => {
|
|
50
|
-
const result = (0, formatting_util_1.toMoment)(20001225);
|
|
51
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
52
|
-
(0, chai_1.expect)(result.format('DD/MM/YYYY')).to.equal('25/12/2000');
|
|
53
|
-
(0, chai_1.expect)(result.format('MM-DD-YYYY')).to.equal('12-25-2000');
|
|
54
|
-
(0, chai_1.expect)(result.format('YYYY')).to.equal('2000');
|
|
55
|
-
});
|
|
56
|
-
(0, mocha_1.it)('should support 12-hour clock with AM/PM (moment A/a)', () => {
|
|
57
|
-
const result = (0, formatting_util_1.toMoment)(20230415143022);
|
|
58
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
59
|
-
(0, chai_1.expect)(result.format('h:mm A')).to.equal('2:30 PM');
|
|
60
|
-
(0, chai_1.expect)(result.format('h:mm a')).to.equal('2:30 pm');
|
|
61
|
-
});
|
|
62
|
-
(0, mocha_1.it)('should support bracketed literals', () => {
|
|
63
|
-
const result = (0, formatting_util_1.toMoment)(20230415);
|
|
64
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
65
|
-
(0, chai_1.expect)(result.format('[Year:] YYYY')).to.equal('Year: 2023');
|
|
66
|
-
});
|
|
67
|
-
(0, mocha_1.it)('should support weekday names', () => {
|
|
68
|
-
// 2023-04-15 was a Saturday
|
|
69
|
-
const result = (0, formatting_util_1.toMoment)(20230415);
|
|
70
|
-
(0, chai_1.expect)(result).to.not.be.null;
|
|
71
|
-
(0, chai_1.expect)(result.format('dddd')).to.equal('Saturday');
|
|
72
|
-
(0, chai_1.expect)(result.format('ddd')).to.equal('Sat');
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
(0, mocha_1.describe)('momentFormatToDateFnsFormat', () => {
|
|
76
|
-
(0, mocha_1.it)('converts year tokens', () => {
|
|
77
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('YYYY')).to.equal('yyyy');
|
|
78
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('YY')).to.equal('yy');
|
|
79
|
-
});
|
|
80
|
-
(0, mocha_1.it)('converts day-of-month tokens (D → d, DD → dd)', () => {
|
|
81
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('DD')).to.equal('dd');
|
|
82
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('D')).to.equal('d');
|
|
83
|
-
});
|
|
84
|
-
(0, mocha_1.it)('passes through month/hour/minute/second tokens unchanged', () => {
|
|
85
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('MM HH mm ss')).to.equal('MM HH mm ss');
|
|
86
|
-
});
|
|
87
|
-
(0, mocha_1.it)('converts AM/PM tokens', () => {
|
|
88
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('A')).to.equal('a');
|
|
89
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('a')).to.equal('aaa');
|
|
90
|
-
});
|
|
91
|
-
(0, mocha_1.it)('converts weekday tokens', () => {
|
|
92
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('dddd')).to.equal('EEEE');
|
|
93
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('ddd')).to.equal('EEE');
|
|
94
|
-
});
|
|
95
|
-
(0, mocha_1.it)('preserves bracketed literals as date-fns single-quoted literals', () => {
|
|
96
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('[YYYY]')).to.equal("'YYYY'");
|
|
97
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('[at] HH:mm')).to.equal("'at' HH:mm");
|
|
98
|
-
});
|
|
99
|
-
(0, mocha_1.it)('escapes stray alphabetic characters that would be date-fns tokens', () => {
|
|
100
|
-
// 't' is a date-fns token (unix timestamp) but a literal in moment.
|
|
101
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('YYYY foo')).to.equal("yyyy 'foo'");
|
|
102
|
-
});
|
|
103
|
-
(0, mocha_1.it)('escapes single quotes in the input format', () => {
|
|
104
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)("[o'clock]")).to.equal("'o''clock'");
|
|
105
|
-
});
|
|
106
|
-
(0, mocha_1.it)('handles a full common moment format', () => {
|
|
107
|
-
(0, chai_1.expect)((0, formatting_util_1.momentFormatToDateFnsFormat)('YYYY-MM-DD HH:mm:ss')).to.equal('yyyy-MM-dd HH:mm:ss');
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
//# sourceMappingURL=to-moment-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-moment-test.js","sourceRoot":"","sources":["../../../../test/icc-x-api/utils/to-moment-test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it } from 'mocha'\nimport { expect } from 'chai'\nimport { momentFormatToDateFnsFormat, toMoment } from '../../../icc-x-api/utils/formatting-util'\n\ndescribe('toMoment', () => {\n it('should return undefined for undefined/null/NaN input', () => {\n expect(toMoment(undefined)).to.be.undefined\n expect(toMoment(null)).to.be.undefined\n expect(toMoment(NaN)).to.be.undefined\n })\n\n it('should handle 0 as a valid epoch timestamp', () => {\n const result = toMoment(0)\n expect(result).to.not.be.null\n expect(result!.format('YYYY')).to.equal('1970')\n })\n\n it('should parse YYYYMMDD long calendar dates', () => {\n const result = toMoment(19850315)\n expect(result).to.not.be.null\n expect(result!.format('YYYY-MM-DD')).to.equal('1985-03-15')\n })\n\n it('should parse YYYYMMDD at the lower boundary (18000101)', () => {\n const result = toMoment(18000101)\n expect(result).to.not.be.null\n expect(result!.format('YYYY-MM-DD')).to.equal('1800-01-01')\n })\n\n it('should parse YYYYMMDD at the upper boundary (25399999)', () => {\n const result = toMoment(25391231)\n expect(result).to.not.be.null\n expect(result!.format('YYYY-MM-DD')).to.equal('2539-12-31')\n })\n\n it('should parse YYYYMMDDHHmmss long calendar datetimes', () => {\n const result = toMoment(20230415143022)\n expect(result).to.not.be.null\n expect(result!.format('YYYY-MM-DD HH:mm:ss')).to.equal('2023-04-15 14:30:22')\n })\n\n it('should parse epoch timestamps in milliseconds', () => {\n const epoch = new Date(2023, 0, 15, 12, 0, 0).getTime()\n const result = toMoment(epoch)\n expect(result).to.not.be.null\n expect(result!.format('YYYY-MM-DD')).to.equal('2023-01-15')\n expect(result!.format('HH')).to.equal('12')\n })\n\n it('should treat small numbers (< 18000101) as epoch timestamps', () => {\n const result = toMoment(1000)\n expect(result).to.not.be.null\n expect(result!.format('YYYY')).to.equal('1970')\n })\n\n it('should support various moment format strings', () => {\n const result = toMoment(20001225)\n expect(result).to.not.be.null\n expect(result!.format('DD/MM/YYYY')).to.equal('25/12/2000')\n expect(result!.format('MM-DD-YYYY')).to.equal('12-25-2000')\n expect(result!.format('YYYY')).to.equal('2000')\n })\n\n it('should support 12-hour clock with AM/PM (moment A/a)', () => {\n const result = toMoment(20230415143022)\n expect(result).to.not.be.null\n expect(result!.format('h:mm A')).to.equal('2:30 PM')\n expect(result!.format('h:mm a')).to.equal('2:30 pm')\n })\n\n it('should support bracketed literals', () => {\n const result = toMoment(20230415)\n expect(result).to.not.be.null\n expect(result!.format('[Year:] YYYY')).to.equal('Year: 2023')\n })\n\n it('should support weekday names', () => {\n // 2023-04-15 was a Saturday\n const result = toMoment(20230415)\n expect(result).to.not.be.null\n expect(result!.format('dddd')).to.equal('Saturday')\n expect(result!.format('ddd')).to.equal('Sat')\n })\n})\n\ndescribe('momentFormatToDateFnsFormat', () => {\n it('converts year tokens', () => {\n expect(momentFormatToDateFnsFormat('YYYY')).to.equal('yyyy')\n expect(momentFormatToDateFnsFormat('YY')).to.equal('yy')\n })\n\n it('converts day-of-month tokens (D → d, DD → dd)', () => {\n expect(momentFormatToDateFnsFormat('DD')).to.equal('dd')\n expect(momentFormatToDateFnsFormat('D')).to.equal('d')\n })\n\n it('passes through month/hour/minute/second tokens unchanged', () => {\n expect(momentFormatToDateFnsFormat('MM HH mm ss')).to.equal('MM HH mm ss')\n })\n\n it('converts AM/PM tokens', () => {\n expect(momentFormatToDateFnsFormat('A')).to.equal('a')\n expect(momentFormatToDateFnsFormat('a')).to.equal('aaa')\n })\n\n it('converts weekday tokens', () => {\n expect(momentFormatToDateFnsFormat('dddd')).to.equal('EEEE')\n expect(momentFormatToDateFnsFormat('ddd')).to.equal('EEE')\n })\n\n it('preserves bracketed literals as date-fns single-quoted literals', () => {\n expect(momentFormatToDateFnsFormat('[YYYY]')).to.equal(\"'YYYY'\")\n expect(momentFormatToDateFnsFormat('[at] HH:mm')).to.equal(\"'at' HH:mm\")\n })\n\n it('escapes stray alphabetic characters that would be date-fns tokens', () => {\n // 't' is a date-fns token (unix timestamp) but a literal in moment.\n expect(momentFormatToDateFnsFormat('YYYY foo')).to.equal(\"yyyy 'foo'\")\n })\n\n it('escapes single quotes in the input format', () => {\n expect(momentFormatToDateFnsFormat(\"[o'clock]\")).to.equal(\"'o''clock'\")\n })\n\n it('handles a full common moment format', () => {\n expect(momentFormatToDateFnsFormat('YYYY-MM-DD HH:mm:ss')).to.equal('yyyy-MM-dd HH:mm:ss')\n })\n})\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|
package/test/support/CSM-185.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
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 icc_x_api_1 = require("../../icc-x-api");
|
|
14
|
-
const crypto_1 = require("crypto");
|
|
15
|
-
const chai_1 = require("chai");
|
|
16
|
-
require("isomorphic-fetch");
|
|
17
|
-
const MaintenanceTask_1 = require("../../icc-api/model/MaintenanceTask");
|
|
18
|
-
const Service_1 = require("../../icc-api/model/Service");
|
|
19
|
-
const types_1 = require("@icure/test-setup/types");
|
|
20
|
-
var initApi = test_utils_1.TestUtils.initApi;
|
|
21
|
-
const TestCryptoStrategies_1 = require("../utils/TestCryptoStrategies");
|
|
22
|
-
const TestStorage_1 = require("../utils/TestStorage");
|
|
23
|
-
const MaintenanceTaskByHcPartyAndTypeFilter_1 = require("../../icc-x-api/filters/MaintenanceTaskByHcPartyAndTypeFilter");
|
|
24
|
-
(0, test_utils_1.setLocalStorage)(fetch);
|
|
25
|
-
let env;
|
|
26
|
-
// Uses WebSocket
|
|
27
|
-
(0, test_utils_1.describeNoLite)('CSM-185', function () {
|
|
28
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
before(function () {
|
|
30
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
this.timeout(600000);
|
|
32
|
-
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
33
|
-
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
it('An HCP should be able to listen to MaintenanceTask from a patient that lost their keys', function () {
|
|
37
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
const hcpApis = yield initApi(env, test_utils_1.hcp1Username);
|
|
39
|
-
const hcpUser = yield hcpApis.userApi.getCurrentUser();
|
|
40
|
-
const patApis = yield initApi(env, test_utils_1.patUsername);
|
|
41
|
-
const patUser = yield patApis.userApi.getCurrentUser();
|
|
42
|
-
const patientNote = 'Some secret note';
|
|
43
|
-
const p2 = yield hcpApis.patientApi.createPatientWithUser(hcpUser, yield hcpApis.patientApi.newInstance(hcpUser, {
|
|
44
|
-
firstName: 'John',
|
|
45
|
-
lastName: 'Doe',
|
|
46
|
-
note: patientNote,
|
|
47
|
-
}, { additionalDelegates: { [patUser.patientId]: 'WRITE' } }));
|
|
48
|
-
const heNote = 'Another secret note';
|
|
49
|
-
yield patApis.cryptoApi.forceReload();
|
|
50
|
-
const he = yield patApis.healthcareElementApi.createHealthElementWithUser(patUser, yield patApis.healthcareElementApi.newInstance(patUser, p2, { note: heNote }, { additionalDelegates: { [hcpUser.healthcarePartyId]: 'WRITE' } }));
|
|
51
|
-
const ctcData = 'Some data';
|
|
52
|
-
const ctcDescr = 'Some description';
|
|
53
|
-
const ctc = yield hcpApis.contactApi.createContactWithUser(hcpUser, yield hcpApis.contactApi.newInstance(hcpUser, p2, {
|
|
54
|
-
services: [new Service_1.Service({ label: 'svc', content: { fr: { stringValue: ctcData } } })],
|
|
55
|
-
descr: ctcDescr,
|
|
56
|
-
}, { additionalDelegates: { [patUser.patientId]: 'WRITE' } }));
|
|
57
|
-
function checkContactDecrypted(ctc) {
|
|
58
|
-
var _a, _b, _c, _d;
|
|
59
|
-
(0, chai_1.expect)((_d = (_c = (_b = (_a = ctc.services) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.fr) === null || _d === void 0 ? void 0 : _d.stringValue).to.equal(ctcData);
|
|
60
|
-
(0, chai_1.expect)(ctc.descr).to.equal(ctcDescr);
|
|
61
|
-
}
|
|
62
|
-
function checkContactEncrypted(ctc) {
|
|
63
|
-
var _a, _b;
|
|
64
|
-
(0, chai_1.expect)((_a = ctc.services) === null || _a === void 0 ? void 0 : _a[0]).to.not.be.undefined;
|
|
65
|
-
(0, chai_1.expect)(Object.keys((_b = ctc.services[0].content) !== null && _b !== void 0 ? _b : {})).to.be.empty;
|
|
66
|
-
(0, chai_1.expect)(ctc.descr).to.be.undefined;
|
|
67
|
-
}
|
|
68
|
-
(0, chai_1.expect)((yield hcpApis.patientApi.getPatientWithUser(hcpUser, p2.id)).note).to.equal(patientNote);
|
|
69
|
-
(0, chai_1.expect)((yield patApis.patientApi.getPatientWithUser(patUser, p2.id)).note).to.equal(patientNote);
|
|
70
|
-
(0, chai_1.expect)((yield hcpApis.healthcareElementApi.getHealthElementWithUser(hcpUser, he.id)).note).to.equal(heNote);
|
|
71
|
-
(0, chai_1.expect)((yield patApis.healthcareElementApi.getHealthElementWithUser(patUser, he.id)).note).to.equal(heNote);
|
|
72
|
-
checkContactDecrypted(yield hcpApis.contactApi.getContactWithUser(hcpUser, ctc.id));
|
|
73
|
-
checkContactDecrypted(yield patApis.contactApi.getContactWithUser(patUser, ctc.id));
|
|
74
|
-
const events = [];
|
|
75
|
-
const statuses = [];
|
|
76
|
-
let eventReceivedPromiseResolve;
|
|
77
|
-
let eventReceivedPromiseReject;
|
|
78
|
-
const eventReceivedPromise = new Promise((res, rej) => {
|
|
79
|
-
eventReceivedPromiseResolve = res;
|
|
80
|
-
eventReceivedPromiseReject = rej;
|
|
81
|
-
});
|
|
82
|
-
const connection = yield hcpApis.maintenanceTaskApi.subscribeToMaintenanceTaskEvents(['CREATE'], new MaintenanceTaskByHcPartyAndTypeFilter_1.MaintenanceTaskByHcPartyAndTypeFilter({
|
|
83
|
-
healthcarePartyId: hcpUser.healthcarePartyId,
|
|
84
|
-
type: MaintenanceTask_1.MaintenanceTask.TaskTypeEnum.KeyPairUpdate,
|
|
85
|
-
}), (task) => __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
events.push(task);
|
|
87
|
-
eventReceivedPromiseResolve();
|
|
88
|
-
}), {
|
|
89
|
-
debug: true,
|
|
90
|
-
});
|
|
91
|
-
connection
|
|
92
|
-
.onConnected(() => __awaiter(this, void 0, void 0, function* () {
|
|
93
|
-
statuses.push('connected');
|
|
94
|
-
yield (0, icc_x_api_1.sleep)(2000);
|
|
95
|
-
const newPair = yield patApis.cryptoApi.primitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha256);
|
|
96
|
-
const patApisLost = yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: env.dataOwnerDetails[test_utils_1.patUsername].user, password: env.dataOwnerDetails[test_utils_1.patUsername].password }, new TestCryptoStrategies_1.TestCryptoStrategies(newPair), crypto_1.webcrypto, fetch, {
|
|
97
|
-
createMaintenanceTasksOnNewKey: true,
|
|
98
|
-
storage: new TestStorage_1.TestStorage(),
|
|
99
|
-
keyStorage: new TestStorage_1.TestKeyStorage(),
|
|
100
|
-
});
|
|
101
|
-
const retrievedPatientLost = yield patApisLost.patientApi.getPatientWithUser(patUser, p2.id);
|
|
102
|
-
const retrievedHeLost = yield patApisLost.healthcareElementApi.getHealthElementWithUser(patUser, he.id);
|
|
103
|
-
(0, chai_1.expect)(retrievedPatientLost).to.not.be.undefined;
|
|
104
|
-
(0, chai_1.expect)(retrievedHeLost).to.not.be.undefined;
|
|
105
|
-
(0, chai_1.expect)(retrievedPatientLost.note).to.be.undefined;
|
|
106
|
-
(0, chai_1.expect)(retrievedHeLost.note).to.be.undefined;
|
|
107
|
-
yield (0, icc_x_api_1.sleep)(2000);
|
|
108
|
-
}))
|
|
109
|
-
.onClosed(() => __awaiter(this, void 0, void 0, function* () {
|
|
110
|
-
statuses.push('closed');
|
|
111
|
-
yield (0, icc_x_api_1.sleep)(2000);
|
|
112
|
-
}));
|
|
113
|
-
const timeout = setTimeout(eventReceivedPromiseReject, 20000);
|
|
114
|
-
yield eventReceivedPromise.then(() => clearTimeout(timeout)).catch(() => { });
|
|
115
|
-
connection.close();
|
|
116
|
-
yield (0, icc_x_api_1.sleep)(3000);
|
|
117
|
-
(0, chai_1.expect)(statuses).to.deep.equal(['connected', 'closed']);
|
|
118
|
-
(0, chai_1.expect)(events.length).to.be.equal(1);
|
|
119
|
-
(0, chai_1.expect)(events[0].taskType).to.equal(MaintenanceTask_1.MaintenanceTask.TaskTypeEnum.KeyPairUpdate);
|
|
120
|
-
});
|
|
121
|
-
}).timeout(60000);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
//# sourceMappingURL=CSM-185.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CSM-185.js","sourceRoot":"","sources":["../../../test/support/CSM-185.ts"],"names":[],"mappings":"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","sourcesContent":["import { describeNoLite, getEnvironmentInitializer, hcp1Username, patUsername, setLocalStorage, TestUtils } from '../utils/test_utils'\nimport { IcureApi, ShaVersion, sleep } from '../../icc-x-api'\nimport { webcrypto } from 'crypto'\nimport { expect } from 'chai'\nimport 'isomorphic-fetch'\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { Service } from '../../icc-api/model/Service'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport initApi = TestUtils.initApi\nimport { TestCryptoStrategies } from '../utils/TestCryptoStrategies'\nimport { TestKeyStorage, TestStorage } from '../utils/TestStorage'\nimport { MaintenanceTaskByHcPartyAndTypeFilter } from '../../icc-x-api/filters/MaintenanceTaskByHcPartyAndTypeFilter'\nsetLocalStorage(fetch)\n\nlet env: TestVars\n\n// Uses WebSocket\ndescribeNoLite('CSM-185', async function () {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it('An HCP should be able to listen to MaintenanceTask from a patient that lost their keys', async function () {\n const hcpApis = await initApi(env, hcp1Username)\n const hcpUser = await hcpApis.userApi.getCurrentUser()\n const patApis = await initApi(env, patUsername)\n const patUser = await patApis.userApi.getCurrentUser()\n const patientNote = 'Some secret note'\n const p2 = await hcpApis.patientApi.createPatientWithUser(\n hcpUser,\n await hcpApis.patientApi.newInstance(\n hcpUser,\n {\n firstName: 'John',\n lastName: 'Doe',\n note: patientNote,\n },\n { additionalDelegates: { [patUser.patientId!]: 'WRITE' } }\n )\n )\n const heNote = 'Another secret note'\n await patApis.cryptoApi.forceReload()\n const he = await patApis.healthcareElementApi.createHealthElementWithUser(\n patUser,\n await patApis.healthcareElementApi.newInstance(\n patUser,\n p2,\n { note: heNote },\n { additionalDelegates: { [hcpUser.healthcarePartyId!]: 'WRITE' } }\n )\n )\n const ctcData = 'Some data'\n const ctcDescr = 'Some description'\n const ctc = await hcpApis.contactApi.createContactWithUser(\n hcpUser,\n await hcpApis.contactApi.newInstance(\n hcpUser,\n p2,\n {\n services: [new Service({ label: 'svc', content: { fr: { stringValue: ctcData } } })],\n descr: ctcDescr,\n },\n { additionalDelegates: { [patUser.patientId!]: 'WRITE' } }\n )\n )\n function checkContactDecrypted(ctc: Contact) {\n expect(ctc.services?.[0]?.content?.fr?.stringValue).to.equal(ctcData)\n expect(ctc.descr).to.equal(ctcDescr)\n }\n function checkContactEncrypted(ctc: Contact) {\n expect(ctc.services?.[0]).to.not.be.undefined\n expect(Object.keys(ctc.services![0].content ?? {})).to.be.empty\n expect(ctc.descr).to.be.undefined\n }\n expect((await hcpApis.patientApi.getPatientWithUser(hcpUser, p2.id!)).note).to.equal(patientNote)\n expect((await patApis.patientApi.getPatientWithUser(patUser, p2.id!)).note).to.equal(patientNote)\n expect((await hcpApis.healthcareElementApi.getHealthElementWithUser(hcpUser, he.id!)).note).to.equal(heNote)\n expect((await patApis.healthcareElementApi.getHealthElementWithUser(patUser, he.id!)).note).to.equal(heNote)\n checkContactDecrypted(await hcpApis.contactApi.getContactWithUser(hcpUser, ctc!.id!))\n checkContactDecrypted(await patApis.contactApi.getContactWithUser(patUser, ctc!.id!))\n\n const events: MaintenanceTask[] = []\n const statuses: string[] = []\n\n let eventReceivedPromiseResolve!: (value: void | PromiseLike<void>) => void\n let eventReceivedPromiseReject!: (reason?: any) => void\n const eventReceivedPromise = new Promise<void>((res, rej) => {\n eventReceivedPromiseResolve = res\n eventReceivedPromiseReject = rej\n })\n\n const connection = await hcpApis.maintenanceTaskApi.subscribeToMaintenanceTaskEvents(\n ['CREATE'],\n new MaintenanceTaskByHcPartyAndTypeFilter({\n healthcarePartyId: hcpUser!.healthcarePartyId!,\n type: MaintenanceTask.TaskTypeEnum.KeyPairUpdate,\n }),\n async (task) => {\n events.push(task)\n eventReceivedPromiseResolve()\n },\n {\n debug: true,\n }\n )\n\n connection\n .onConnected(async () => {\n statuses.push('connected')\n await sleep(2_000)\n\n const newPair = await patApis.cryptoApi.primitives.RSA.generateKeyPair(ShaVersion.Sha256)\n const patApisLost = await IcureApi.initialise(\n env.iCureUrl,\n { username: env.dataOwnerDetails[patUsername].user, password: env.dataOwnerDetails[patUsername].password },\n new TestCryptoStrategies(newPair),\n webcrypto as any,\n fetch,\n {\n createMaintenanceTasksOnNewKey: true,\n storage: new TestStorage(),\n keyStorage: new TestKeyStorage(),\n }\n )\n const retrievedPatientLost = await patApisLost.patientApi.getPatientWithUser(patUser, p2.id!)\n const retrievedHeLost = await patApisLost.healthcareElementApi.getHealthElementWithUser(patUser, he.id!)\n expect(retrievedPatientLost).to.not.be.undefined\n expect(retrievedHeLost).to.not.be.undefined\n expect(retrievedPatientLost.note).to.be.undefined\n expect(retrievedHeLost.note).to.be.undefined\n\n await sleep(2_000)\n })\n .onClosed(async () => {\n statuses.push('closed')\n await sleep(2_000)\n })\n\n const timeout = setTimeout(eventReceivedPromiseReject, 20_000)\n await eventReceivedPromise.then(() => clearTimeout(timeout)).catch(() => {})\n\n connection.close()\n\n await sleep(3_000)\n\n expect(statuses).to.deep.equal(['connected', 'closed'])\n expect(events.length).to.be.equal(1)\n expect(events[0].taskType).to.equal(MaintenanceTask.TaskTypeEnum.KeyPairUpdate)\n }).timeout(60_000)\n})\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|
package/test/support/CSM-243.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
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 crypto_1 = require("crypto");
|
|
14
|
-
const chai_1 = require("chai");
|
|
15
|
-
require("isomorphic-fetch");
|
|
16
|
-
const types_1 = require("@icure/test-setup/types");
|
|
17
|
-
(0, test_utils_1.setLocalStorage)(fetch);
|
|
18
|
-
const chaiAsPromised = require("chai-as-promised");
|
|
19
|
-
(0, chai_1.use)(chaiAsPromised);
|
|
20
|
-
let env;
|
|
21
|
-
function createMessage(api, user, props) {
|
|
22
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
var _a, _b;
|
|
24
|
-
const messageBase = {
|
|
25
|
-
subject: `Test message - ${api.cryptoApi.primitives.randomUuid()}`,
|
|
26
|
-
fromAddress: (_a = props.includeFromAddress) !== null && _a !== void 0 ? _a : api.cryptoApi.primitives.randomUuid(),
|
|
27
|
-
toAddresses: [api.cryptoApi.primitives.randomUuid(), (_b = props.includeToAddress) !== null && _b !== void 0 ? _b : api.cryptoApi.primitives.randomUuid()],
|
|
28
|
-
received: props.includeRandomReceived ? Math.floor(Math.random() * 1000000) : undefined,
|
|
29
|
-
};
|
|
30
|
-
return yield api.messageApi.createMessageWithUser(undefined, yield api.messageApi.newInstance(user, messageBase));
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
function createTestMessages(api, user, propsForAccessibleMessages, propsForInaccessibleMessages) {
|
|
34
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
const expectedMessages = [];
|
|
36
|
-
for (let i = 0; i < 100; i++) {
|
|
37
|
-
expectedMessages.push(yield createMessage(api, user, propsForAccessibleMessages));
|
|
38
|
-
yield createMessage(api, user, propsForInaccessibleMessages);
|
|
39
|
-
}
|
|
40
|
-
// Also creates some messages from an unrelated hcp and same from address that should not be retrieved by the test.
|
|
41
|
-
const { api: otherApi, user: otherUser } = yield (0, test_utils_1.createNewHcpApi)(env);
|
|
42
|
-
for (let i = 0; i < 100; i++) {
|
|
43
|
-
yield createMessage(otherApi, otherUser, propsForAccessibleMessages);
|
|
44
|
-
}
|
|
45
|
-
return expectedMessages;
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
function getAllPaginatedMessages(listFunction) {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
var _a, _b, _c;
|
|
51
|
-
let latestRetrieved;
|
|
52
|
-
let allResults = [];
|
|
53
|
-
do {
|
|
54
|
-
const nextKey = (_a = latestRetrieved === null || latestRetrieved === void 0 ? void 0 : latestRetrieved.nextKeyPair) === null || _a === void 0 ? void 0 : _a.startKey;
|
|
55
|
-
latestRetrieved = yield listFunction(nextKey ? JSON.stringify(nextKey) : undefined, (_b = latestRetrieved === null || latestRetrieved === void 0 ? void 0 : latestRetrieved.nextKeyPair) === null || _b === void 0 ? void 0 : _b.startKeyDocId);
|
|
56
|
-
allResults.push(...latestRetrieved.rows);
|
|
57
|
-
} while (((_c = latestRetrieved === null || latestRetrieved === void 0 ? void 0 : latestRetrieved.nextKeyPair) === null || _c === void 0 ? void 0 : _c.startKey) !== undefined);
|
|
58
|
-
console.log(JSON.stringify(allResults.map((m) => m.received)));
|
|
59
|
-
return allResults;
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
describe('CSM-243', function () {
|
|
63
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
before(function () {
|
|
65
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
this.timeout(600000);
|
|
67
|
-
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
68
|
-
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
function doTestWithoutReceived(propsForAccessibleMessages, listFunction) {
|
|
72
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
const { api, user } = yield (0, test_utils_1.createNewHcpApi)(env);
|
|
74
|
-
const expectedMessages = yield createTestMessages(api, user, Object.assign(Object.assign({}, propsForAccessibleMessages), { includeRandomReceived: false }), { includeRandomReceived: false });
|
|
75
|
-
let allResults = yield getAllPaginatedMessages((nextKey, nextKeyDocId) => listFunction(api.messageApi, nextKey, nextKeyDocId, 30));
|
|
76
|
-
(0, chai_1.expect)(allResults.length).to.equal(expectedMessages.length);
|
|
77
|
-
(0, chai_1.expect)(allResults.map((m) => m.id)).to.have.members(expectedMessages.map((m) => m.id));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
function doTestWithReceived(propsForAccessibleMessages, listFunction) {
|
|
81
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
const { api, user } = yield (0, test_utils_1.createNewHcpApi)(env);
|
|
83
|
-
const expectedMessagesWithReceived = yield createTestMessages(api, user, Object.assign(Object.assign({}, propsForAccessibleMessages), { includeRandomReceived: true }), { includeRandomReceived: true });
|
|
84
|
-
const messageWithoutReceived = yield createMessage(api, user, Object.assign(Object.assign({}, propsForAccessibleMessages), { includeRandomReceived: false }));
|
|
85
|
-
let allResults = yield getAllPaginatedMessages((nextKey, nextKeyDocId) => listFunction(api.messageApi, nextKey, nextKeyDocId, 30));
|
|
86
|
-
(0, chai_1.expect)(allResults.length).to.equal(expectedMessagesWithReceived.length + 1);
|
|
87
|
-
(0, chai_1.expect)(allResults.map((m) => m.id)).to.have.members([...expectedMessagesWithReceived.map((m) => m.id), messageWithoutReceived.id]);
|
|
88
|
-
(0, chai_1.expect)(allResults.map((m) => m.received)).to.deep.equal([
|
|
89
|
-
undefined,
|
|
90
|
-
...expectedMessagesWithReceived.sort((a, b) => b.received - a.received).map((m) => m.received),
|
|
91
|
-
]);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
it('A user should be able to retrieve paginated messages without received date by fromAddress', function () {
|
|
95
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
-
const targetAddress = (0, crypto_1.randomUUID)();
|
|
97
|
-
yield doTestWithoutReceived({ includeFromAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) => messageApi.findMessagesByFromAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit));
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
it('A user should be able to retrieve paginated messages with received date by fromAddress', function () {
|
|
101
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
-
const targetAddress = (0, crypto_1.randomUUID)();
|
|
103
|
-
yield doTestWithReceived({ includeFromAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) => messageApi.findMessagesByFromAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit));
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
it('A user should be able to retrieve paginated messages without received date by toAddress', function () {
|
|
107
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
-
const targetAddress = (0, crypto_1.randomUUID)();
|
|
109
|
-
yield doTestWithoutReceived({ includeToAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) => messageApi.findMessagesByToAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit));
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
it('A user should be able to retrieve paginated messages with received date by toAddress', function () {
|
|
113
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
-
const targetAddress = (0, crypto_1.randomUUID)();
|
|
115
|
-
yield doTestWithReceived({ includeToAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) => messageApi.findMessagesByToAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit));
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
//# sourceMappingURL=CSM-243.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CSM-243.js","sourceRoot":"","sources":["../../../test/support/CSM-243.ts"],"names":[],"mappings":"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","sourcesContent":["import { createNewHcpApi, getEnvironmentInitializer, setLocalStorage } from '../utils/test_utils'\nimport { IccMessageXApi, IcureApi } from '../../icc-x-api'\nimport { randomUUID } from 'crypto'\nimport { expect, use as chaiUse } from 'chai'\nimport 'isomorphic-fetch'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\n\nsetLocalStorage(fetch)\nimport * as chaiAsPromised from 'chai-as-promised'\nimport { User } from '../../icc-api/model/User'\nimport { Message } from '../../icc-api/model/Message'\nimport { PaginatedListMessage } from '../../icc-api/model/PaginatedListMessage'\nchaiUse(chaiAsPromised)\n\nlet env: TestVars\n\nasync function createMessage(\n api: IcureApi,\n user: User,\n props: {\n includeToAddress?: string\n includeFromAddress?: string\n includeRandomReceived: boolean\n }\n): Promise<Message> {\n const messageBase: Message = {\n subject: `Test message - ${api.cryptoApi.primitives.randomUuid()}`,\n fromAddress: props.includeFromAddress ?? api.cryptoApi.primitives.randomUuid(),\n toAddresses: [api.cryptoApi.primitives.randomUuid(), props.includeToAddress ?? api.cryptoApi.primitives.randomUuid()],\n received: props.includeRandomReceived ? Math.floor(Math.random() * 1000000) : undefined,\n }\n return await api.messageApi.createMessageWithUser(undefined, await api.messageApi.newInstance(user, messageBase))\n}\n\nasync function createTestMessages(\n api: IcureApi,\n user: User,\n propsForAccessibleMessages: {\n includeToAddress?: string\n includeFromAddress?: string\n includeRandomReceived: boolean\n },\n propsForInaccessibleMessages: {\n includeToAddress?: string\n includeFromAddress?: string\n includeRandomReceived: boolean\n }\n): Promise<Message[]> {\n const expectedMessages: Message[] = []\n for (let i = 0; i < 100; i++) {\n expectedMessages.push(await createMessage(api, user, propsForAccessibleMessages))\n await createMessage(api, user, propsForInaccessibleMessages)\n }\n // Also creates some messages from an unrelated hcp and same from address that should not be retrieved by the test.\n const { api: otherApi, user: otherUser } = await createNewHcpApi(env)\n for (let i = 0; i < 100; i++) {\n await createMessage(otherApi, otherUser, propsForAccessibleMessages)\n }\n return expectedMessages\n}\n\nasync function getAllPaginatedMessages(listFunction: (nextKey?: string, nextKeyDocId?: string) => Promise<PaginatedListMessage>): Promise<Message[]> {\n let latestRetrieved: PaginatedListMessage | undefined\n let allResults: Message[] = []\n do {\n const nextKey = latestRetrieved?.nextKeyPair?.startKey\n latestRetrieved = await listFunction(nextKey ? JSON.stringify(nextKey) : undefined, latestRetrieved?.nextKeyPair?.startKeyDocId)\n allResults.push(...latestRetrieved.rows!)\n } while (latestRetrieved?.nextKeyPair?.startKey !== undefined)\n console.log(JSON.stringify(allResults.map((m) => m.received)))\n return allResults\n}\n\ndescribe('CSM-243', async function () {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n async function doTestWithoutReceived(\n propsForAccessibleMessages: {\n includeToAddress?: string\n includeFromAddress?: string\n },\n listFunction: (\n messageApi: IccMessageXApi,\n nextKey: string | undefined,\n nextKeyDocId: string | undefined,\n limit: number\n ) => Promise<PaginatedListMessage>\n ) {\n const { api, user } = await createNewHcpApi(env)\n const expectedMessages: Message[] = await createTestMessages(\n api,\n user,\n { ...propsForAccessibleMessages, includeRandomReceived: false },\n { includeRandomReceived: false }\n )\n let allResults: Message[] = await getAllPaginatedMessages((nextKey?: string, nextKeyDocId?: string) =>\n listFunction(api.messageApi, nextKey, nextKeyDocId, 30)\n )\n expect(allResults.length).to.equal(expectedMessages.length)\n expect(allResults.map((m) => m.id)).to.have.members(expectedMessages.map((m) => m.id))\n }\n\n async function doTestWithReceived(\n propsForAccessibleMessages: {\n includeToAddress?: string\n includeFromAddress?: string\n },\n listFunction: (\n messageApi: IccMessageXApi,\n nextKey: string | undefined,\n nextKeyDocId: string | undefined,\n limit: number\n ) => Promise<PaginatedListMessage>\n ) {\n const { api, user } = await createNewHcpApi(env)\n const expectedMessagesWithReceived: Message[] = await createTestMessages(\n api,\n user,\n { ...propsForAccessibleMessages, includeRandomReceived: true },\n { includeRandomReceived: true }\n )\n const messageWithoutReceived = await createMessage(api, user, { ...propsForAccessibleMessages, includeRandomReceived: false })\n let allResults: Message[] = await getAllPaginatedMessages((nextKey?: string, nextKeyDocId?: string) =>\n listFunction(api.messageApi, nextKey, nextKeyDocId, 30)\n )\n expect(allResults.length).to.equal(expectedMessagesWithReceived.length + 1)\n expect(allResults.map((m) => m.id)).to.have.members([...expectedMessagesWithReceived.map((m) => m.id), messageWithoutReceived.id!])\n expect(allResults.map((m) => m.received)).to.deep.equal([\n undefined,\n ...expectedMessagesWithReceived.sort((a, b) => b.received! - a.received!).map((m) => m.received),\n ])\n }\n it('A user should be able to retrieve paginated messages without received date by fromAddress', async function () {\n const targetAddress = randomUUID()\n await doTestWithoutReceived({ includeFromAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) =>\n messageApi.findMessagesByFromAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit)\n )\n })\n\n it('A user should be able to retrieve paginated messages with received date by fromAddress', async function () {\n const targetAddress = randomUUID()\n await doTestWithReceived({ includeFromAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) =>\n messageApi.findMessagesByFromAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit)\n )\n })\n\n it('A user should be able to retrieve paginated messages without received date by toAddress', async function () {\n const targetAddress = randomUUID()\n await doTestWithoutReceived({ includeToAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) =>\n messageApi.findMessagesByToAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit)\n )\n })\n\n it('A user should be able to retrieve paginated messages with received date by toAddress', async function () {\n const targetAddress = randomUUID()\n await doTestWithReceived({ includeToAddress: targetAddress }, (messageApi, nextKey, nextKeyDocId, limit) =>\n messageApi.findMessagesByToAddressWithUser(undefined, targetAddress, nextKey, nextKeyDocId, limit)\n )\n })\n})\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|
package/test/support/CSM-543.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
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 icc_x_api_1 = require("../../icc-x-api");
|
|
14
|
-
const crypto_1 = require("crypto");
|
|
15
|
-
const chai_1 = require("chai");
|
|
16
|
-
require("isomorphic-fetch");
|
|
17
|
-
const types_1 = require("@icure/test-setup/types");
|
|
18
|
-
const chaiAsPromised = require("chai-as-promised");
|
|
19
|
-
const utils_1 = require("../../icc-x-api/crypto/utils");
|
|
20
|
-
const TestStorage_1 = require("../utils/TestStorage");
|
|
21
|
-
const DataOwnerTypeEnum_1 = require("../../icc-api/model/DataOwnerTypeEnum");
|
|
22
|
-
(0, test_utils_1.setLocalStorage)(fetch);
|
|
23
|
-
(0, chai_1.use)(chaiAsPromised);
|
|
24
|
-
let env;
|
|
25
|
-
class RecoverParentKeyVerifySelfKeyStrategy {
|
|
26
|
-
constructor(parentKeys, selfPub) {
|
|
27
|
-
this.parentKeys = parentKeys;
|
|
28
|
-
this.selfPub = selfPub;
|
|
29
|
-
}
|
|
30
|
-
dataOwnerRequiresAnonymousDelegation(dataOwner) {
|
|
31
|
-
return dataOwner.type != DataOwnerTypeEnum_1.DataOwnerTypeEnum.Hcp;
|
|
32
|
-
}
|
|
33
|
-
generateNewKeyForDataOwner(self, cryptoPrimitives) {
|
|
34
|
-
return Promise.resolve(false);
|
|
35
|
-
}
|
|
36
|
-
recoverAndVerifySelfHierarchyKeys(keysData, cryptoPrimitives, keyPairRecoverer) {
|
|
37
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
(0, chai_1.expect)(keysData).to.have.length(2);
|
|
39
|
-
return {
|
|
40
|
-
[keysData[0].dataOwner.dataOwner.id]: {
|
|
41
|
-
recoveredKeys: {
|
|
42
|
-
[(0, utils_1.fingerprintV1)((0, icc_x_api_1.ua2hex)(yield cryptoPrimitives.RSA.exportKey(this.parentKeys.publicKey, 'spki')))]: this.parentKeys,
|
|
43
|
-
},
|
|
44
|
-
keyAuthenticity: {},
|
|
45
|
-
},
|
|
46
|
-
[keysData[1].dataOwner.dataOwner.id]: {
|
|
47
|
-
recoveredKeys: {},
|
|
48
|
-
keyAuthenticity: {
|
|
49
|
-
[(0, utils_1.fingerprintV1)(this.selfPub)]: true,
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
verifyDelegatePublicKeys(delegate, publicKeys, cryptoPrimitives) {
|
|
56
|
-
return Promise.resolve(publicKeys);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
class VerifySelfKeyStrategy {
|
|
60
|
-
constructor(selfPub) {
|
|
61
|
-
this.selfPub = selfPub;
|
|
62
|
-
}
|
|
63
|
-
dataOwnerRequiresAnonymousDelegation(dataOwner) {
|
|
64
|
-
return dataOwner.type != DataOwnerTypeEnum_1.DataOwnerTypeEnum.Hcp;
|
|
65
|
-
}
|
|
66
|
-
generateNewKeyForDataOwner(self, cryptoPrimitives) {
|
|
67
|
-
return Promise.resolve(false);
|
|
68
|
-
}
|
|
69
|
-
recoverAndVerifySelfHierarchyKeys(keysData, cryptoPrimitives, keyPairRecoverer) {
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
(0, chai_1.expect)(keysData).to.have.length(2);
|
|
72
|
-
(0, chai_1.expect)(keysData.every((x) => x.unavailableKeys.length == 0)).to.be.true;
|
|
73
|
-
(0, chai_1.expect)(keysData[1].unknownKeys).to.have.length(1);
|
|
74
|
-
(0, chai_1.expect)(keysData[1].unknownKeys[0]).to.eq(this.selfPub);
|
|
75
|
-
return {
|
|
76
|
-
[keysData[0].dataOwner.dataOwner.id]: {
|
|
77
|
-
recoveredKeys: {},
|
|
78
|
-
keyAuthenticity: {},
|
|
79
|
-
},
|
|
80
|
-
[keysData[1].dataOwner.dataOwner.id]: {
|
|
81
|
-
recoveredKeys: {},
|
|
82
|
-
keyAuthenticity: { [(0, utils_1.fingerprintV1)(this.selfPub)]: true },
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
verifyDelegatePublicKeys(delegate, publicKeys, cryptoPrimitives) {
|
|
88
|
-
return Promise.resolve(publicKeys);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
describe('CSM-543', function () {
|
|
92
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
-
before(function () {
|
|
94
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
this.timeout(600000);
|
|
96
|
-
const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
|
|
97
|
-
env = yield initializer.execute((0, types_1.getEnvVariables)());
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
function init() {
|
|
101
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
-
const { grandUser: parentUser, grandApi: parentApi, grandCredentials: parentCredentials, parentUser: childUser, parentApi: childApi, parentCredentials: childCredentials, } = yield (0, test_utils_1.createHcpHierarchyApis)(env);
|
|
103
|
-
const initialKeys = yield childApi.cryptoApi.getEncryptionDecryptionKeypairsForDataOwnerHierarchy();
|
|
104
|
-
(0, chai_1.expect)(initialKeys.self.keys).to.have.length(1);
|
|
105
|
-
(0, chai_1.expect)(initialKeys.self.keys[0].verified).to.eq(true);
|
|
106
|
-
(0, chai_1.expect)(initialKeys.parents).to.have.length(1);
|
|
107
|
-
(0, chai_1.expect)(initialKeys.parents[0].keys).to.have.length(1);
|
|
108
|
-
(0, chai_1.expect)(initialKeys.parents[0].keys[0].verified).to.eq(true);
|
|
109
|
-
const selfKeyPub = (0, icc_x_api_1.ua2hex)(yield childApi.cryptoApi.primitives.RSA.exportKey(initialKeys.self.keys[0].pair.publicKey, 'spki'));
|
|
110
|
-
yield childApi.cryptoApi.shamirKeysManager.updateSelfSplits({ [(0, utils_1.fingerprintV1)(selfKeyPub)]: { notariesIds: [parentCredentials.dataOwnerId], minShares: 1 } }, []);
|
|
111
|
-
return {
|
|
112
|
-
childCredentials,
|
|
113
|
-
selfKeyPub,
|
|
114
|
-
parentKey: initialKeys.parents[0].keys[0].pair,
|
|
115
|
-
parentCredentials,
|
|
116
|
-
};
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
function checkKeys(api, expectedSelfKey) {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
const recoveredKeys = yield api.cryptoApi.getEncryptionDecryptionKeypairsForDataOwnerHierarchy();
|
|
122
|
-
(0, chai_1.expect)(recoveredKeys.self.keys).to.have.length(1);
|
|
123
|
-
(0, chai_1.expect)(recoveredKeys.self.keys[0].verified).to.eq(true);
|
|
124
|
-
(0, chai_1.expect)(recoveredKeys.parents).to.have.length(1);
|
|
125
|
-
(0, chai_1.expect)(recoveredKeys.parents[0].keys).to.have.length(1);
|
|
126
|
-
(0, chai_1.expect)(recoveredKeys.parents[0].keys[0].verified).to.eq(true);
|
|
127
|
-
(0, chai_1.expect)((0, icc_x_api_1.ua2hex)(yield api.cryptoApi.primitives.RSA.exportKey(recoveredKeys.self.keys[0].pair.publicKey, 'spki'))).to.eq(expectedSelfKey);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
it('Sdk should be able to use recovery data accessible with parent key to recover key of user - parent key recovered by crypto strategies', function () {
|
|
131
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
-
const { childCredentials, selfKeyPub, parentKey } = yield init();
|
|
133
|
-
const apiWithLostKey = yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: childCredentials.user, password: childCredentials.password }, new RecoverParentKeyVerifySelfKeyStrategy(parentKey, selfKeyPub), crypto_1.webcrypto, fetch, {
|
|
134
|
-
storage: new TestStorage_1.TestStorage(),
|
|
135
|
-
keyStorage: new TestStorage_1.TestKeyStorage(),
|
|
136
|
-
});
|
|
137
|
-
yield checkKeys(apiWithLostKey, selfKeyPub);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
it('Sdk should be able to use recovery data accessible with parent key to recover key of user - parent key available in storage', function () {
|
|
141
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
142
|
-
const { childCredentials, selfKeyPub, parentCredentials } = yield init();
|
|
143
|
-
const storageWithParentKey = yield (0, TestStorage_1.testStorageWithKeys)([
|
|
144
|
-
{
|
|
145
|
-
dataOwnerId: parentCredentials.dataOwnerId,
|
|
146
|
-
pairs: [
|
|
147
|
-
{
|
|
148
|
-
keyPair: { privateKey: parentCredentials.privateKey, publicKey: parentCredentials.publicKey },
|
|
149
|
-
shaVersion: icc_x_api_1.ShaVersion.Sha1,
|
|
150
|
-
},
|
|
151
|
-
],
|
|
152
|
-
},
|
|
153
|
-
]);
|
|
154
|
-
const apiWithLostKey = yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: childCredentials.user, password: childCredentials.password }, new VerifySelfKeyStrategy(selfKeyPub), crypto_1.webcrypto, fetch, {
|
|
155
|
-
storage: storageWithParentKey.storage,
|
|
156
|
-
keyStorage: storageWithParentKey.keyStorage,
|
|
157
|
-
entryKeysFactory: storageWithParentKey.keyFactory,
|
|
158
|
-
});
|
|
159
|
-
yield checkKeys(apiWithLostKey, selfKeyPub);
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
//# sourceMappingURL=CSM-543.js.map
|