@icure/api 8.0.7 → 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.
- package/icc-api/model/models.d.ts +1 -0
- package/icc-api/model/models.js +1 -0
- package/icc-api/model/models.js.map +1 -1
- package/icc-x-api/crypto/ExchangeDataManager.js +3 -2
- package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/KeyRecovery.js +5 -4
- package/icc-x-api/crypto/KeyRecovery.js.map +1 -1
- package/icc-x-api/crypto/RSA.d.ts +4 -1
- package/icc-x-api/crypto/RSA.js +6 -1
- package/icc-x-api/crypto/RSA.js.map +1 -1
- package/icc-x-api/crypto/SecureDelegationsManager.js +2 -1
- package/icc-x-api/crypto/SecureDelegationsManager.js.map +1 -1
- package/icc-x-api/crypto/TransferKeysManager.js +4 -3
- package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
- package/icc-x-api/crypto/UserEncryptionKeysManager.js +2 -1
- package/icc-x-api/crypto/UserEncryptionKeysManager.js.map +1 -1
- package/icc-x-api/crypto/utils.d.ts +1 -4
- package/icc-x-api/crypto/utils.js +6 -8
- package/icc-x-api/crypto/utils.js.map +1 -1
- package/icc-x-api/icc-accesslog-x-api.js +16 -14
- package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
- package/icc-x-api/icc-calendar-item-x-api.d.ts +2 -2
- package/icc-x-api/icc-calendar-item-x-api.js +17 -17
- package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
- package/icc-x-api/icc-classification-x-api.js +12 -11
- package/icc-x-api/icc-classification-x-api.js.map +1 -1
- package/icc-x-api/icc-contact-x-api.d.ts +2 -2
- package/icc-x-api/icc-contact-x-api.js +23 -20
- package/icc-x-api/icc-contact-x-api.js.map +1 -1
- package/icc-x-api/icc-document-x-api.js +17 -16
- package/icc-x-api/icc-document-x-api.js.map +1 -1
- package/icc-x-api/icc-form-x-api.js +13 -12
- package/icc-x-api/icc-form-x-api.js.map +1 -1
- package/icc-x-api/icc-helement-x-api.js +18 -16
- package/icc-x-api/icc-helement-x-api.js.map +1 -1
- package/icc-x-api/icc-invoice-x-api.js +12 -11
- package/icc-x-api/icc-invoice-x-api.js.map +1 -1
- package/icc-x-api/icc-maintenance-task-x-api.js +11 -11
- package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
- package/icc-x-api/icc-message-x-api.js +14 -14
- package/icc-x-api/icc-message-x-api.js.map +1 -1
- package/icc-x-api/icc-patient-x-api.js +28 -27
- package/icc-x-api/icc-patient-x-api.js.map +1 -1
- package/icc-x-api/icc-receipt-x-api.js +11 -10
- package/icc-x-api/icc-receipt-x-api.js.map +1 -1
- package/icc-x-api/icc-recovery-x-api.js +3 -2
- package/icc-x-api/icc-recovery-x-api.js.map +1 -1
- package/icc-x-api/icc-time-table-x-api.js +9 -8
- package/icc-x-api/icc-time-table-x-api.js.map +1 -1
- package/icc-x-api/icc-topic-x-api.js +13 -13
- package/icc-x-api/icc-topic-x-api.js.map +1 -1
- package/icc-x-api/utils/EntityWithDelegationTypeName.d.ts +17 -1
- package/icc-x-api/utils/EntityWithDelegationTypeName.js +33 -15
- package/icc-x-api/utils/EntityWithDelegationTypeName.js.map +1 -1
- package/icc-x-api/utils/index.d.ts +1 -0
- package/icc-x-api/utils/index.js +1 -0
- package/icc-x-api/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/test/icc-api/api/IccAnonymousAccessApi.d.ts +1 -0
- package/test/icc-api/api/IccAnonymousAccessApi.js +58 -0
- package/test/icc-api/api/IccAnonymousAccessApi.js.map +1 -0
- package/test/icc-api/api/IccDocumentApi.d.ts +1 -0
- package/test/icc-api/api/IccDocumentApi.js +208 -0
- package/test/icc-api/api/IccDocumentApi.js.map +1 -0
- package/test/icc-api/api/IccGroupApi.d.ts +1 -0
- package/test/icc-api/api/IccGroupApi.js +50 -0
- package/test/icc-api/api/IccGroupApi.js.map +1 -0
- package/test/icc-api/api/IccRecoveryDataApi.d.ts +1 -0
- package/test/icc-api/api/IccRecoveryDataApi.js +95 -0
- package/test/icc-api/api/IccRecoveryDataApi.js.map +1 -0
- package/test/icc-api/api/IccRoleApi.d.ts +1 -0
- package/test/icc-api/api/IccRoleApi.js +34 -0
- package/test/icc-api/api/IccRoleApi.js.map +1 -0
- package/test/icc-api/api/IccUserApi.d.ts +1 -0
- package/test/icc-api/api/IccUserApi.js +96 -0
- package/test/icc-api/api/IccUserApi.js.map +1 -0
- package/test/icc-api/e2e/IccCalendarItemApi.d.ts +1 -0
- package/test/icc-api/e2e/IccCalendarItemApi.js +46 -0
- package/test/icc-api/e2e/IccCalendarItemApi.js.map +1 -0
- package/test/icc-api/model/modelHelpersTest.d.ts +1 -0
- package/test/icc-api/model/modelHelpersTest.js +45 -0
- package/test/icc-api/model/modelHelpersTest.js.map +1 -0
- package/test/icc-x-api/auth/group-switch-test.d.ts +1 -0
- package/test/icc-x-api/auth/group-switch-test.js +81 -0
- package/test/icc-x-api/auth/group-switch-test.js.map +1 -0
- package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +2 -0
- package/test/icc-x-api/auth/jwt-concurrency-test.js +113 -0
- package/test/icc-x-api/auth/jwt-concurrency-test.js.map +1 -0
- package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +1 -0
- package/test/icc-x-api/auth/smart-auth-provider-test.js +224 -0
- package/test/icc-x-api/auth/smart-auth-provider-test.js.map +1 -0
- package/test/icc-x-api/autofix-anonymity-test.d.ts +1 -0
- package/test/icc-x-api/autofix-anonymity-test.js +108 -0
- package/test/icc-x-api/autofix-anonymity-test.js.map +1 -0
- package/test/icc-x-api/confidential-entities-test.d.ts +1 -0
- package/test/icc-x-api/confidential-entities-test.js +110 -0
- package/test/icc-x-api/confidential-entities-test.js.map +1 -0
- package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +1 -0
- package/test/icc-x-api/crud/comprehensive-crud-test.js +276 -0
- package/test/icc-x-api/crud/comprehensive-crud-test.js.map +1 -0
- package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +16 -0
- package/test/icc-x-api/crud/entities-crud-test-interface.js +422 -0
- package/test/icc-x-api/crud/entities-crud-test-interface.js.map +1 -0
- package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +1 -0
- package/test/icc-x-api/crypto/anonymous-delegations-test.js +588 -0
- package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +1 -0
- package/test/icc-x-api/crypto/concurrency.d.ts +1 -0
- package/test/icc-x-api/crypto/concurrency.js +35 -0
- package/test/icc-x-api/crypto/concurrency.js.map +1 -0
- package/test/icc-x-api/crypto/crypto-utils.d.ts +1 -0
- package/test/icc-x-api/crypto/crypto-utils.js +80 -0
- package/test/icc-x-api/crypto/crypto-utils.js.map +1 -0
- package/test/icc-x-api/crypto/cryptoTest.d.ts +2 -0
- package/test/icc-x-api/crypto/cryptoTest.js +302 -0
- package/test/icc-x-api/crypto/cryptoTest.js.map +1 -0
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +1 -0
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +166 -0
- package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +1 -0
- package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/exchange-data-manager-test.js +690 -0
- package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +1 -0
- package/test/icc-x-api/crypto/full-crypto-test.d.ts +1 -0
- package/test/icc-x-api/crypto/full-crypto-test.js +457 -0
- package/test/icc-x-api/crypto/full-crypto-test.js.map +1 -0
- package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js +266 -0
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +1 -0
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.d.ts +1 -0
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js +393 -0
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js.map +1 -0
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.d.ts +1 -0
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js +213 -0
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js.map +1 -0
- package/test/icc-x-api/crypto/shamir.d.ts +2 -0
- package/test/icc-x-api/crypto/shamir.js +166 -0
- package/test/icc-x-api/crypto/shamir.js.map +1 -0
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +1 -0
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +71 -0
- package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +1 -0
- package/test/icc-x-api/crypto/signature-keys-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/signature-keys-manager-test.js +44 -0
- package/test/icc-x-api/crypto/signature-keys-manager-test.js.map +1 -0
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +1 -0
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +246 -0
- package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +1 -0
- package/test/icc-x-api/entity-with-attachments-api-test.d.ts +1 -0
- package/test/icc-x-api/entity-with-attachments-api-test.js +142 -0
- package/test/icc-x-api/entity-with-attachments-api-test.js.map +1 -0
- package/test/icc-x-api/filters/filters.d.ts +1 -0
- package/test/icc-x-api/filters/filters.js +49 -0
- package/test/icc-x-api/filters/filters.js.map +1 -0
- package/test/icc-x-api/icc-accesslog-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-accesslog-x-api.js +106 -0
- package/test/icc-x-api/icc-accesslog-x-api.js.map +1 -0
- package/test/icc-x-api/icc-auth-api.d.ts +1 -0
- package/test/icc-x-api/icc-auth-api.js +47 -0
- package/test/icc-x-api/icc-auth-api.js.map +1 -0
- package/test/icc-x-api/icc-calendar-item-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-calendar-item-x-api.js +150 -0
- package/test/icc-x-api/icc-calendar-item-x-api.js.map +1 -0
- package/test/icc-x-api/icc-contact-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-contact-x-api.js +279 -0
- package/test/icc-x-api/icc-contact-x-api.js.map +1 -0
- package/test/icc-x-api/icc-form-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-form-x-api.js +98 -0
- package/test/icc-x-api/icc-form-x-api.js.map +1 -0
- package/test/icc-x-api/icc-helement-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-helement-x-api-test.js +153 -0
- package/test/icc-x-api/icc-helement-x-api-test.js.map +1 -0
- package/test/icc-x-api/icc-invoice-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-invoice-x-api.js +99 -0
- package/test/icc-x-api/icc-invoice-x-api.js.map +1 -0
- package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js +221 -0
- package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +1 -0
- package/test/icc-x-api/icc-message-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-message-x-api.js +328 -0
- package/test/icc-x-api/icc-message-x-api.js.map +1 -0
- package/test/icc-x-api/icc-patient-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-patient-x-api-test.js +158 -0
- package/test/icc-x-api/icc-patient-x-api-test.js.map +1 -0
- package/test/icc-x-api/icc-recovery-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-recovery-x-api.js +170 -0
- package/test/icc-x-api/icc-recovery-x-api.js.map +1 -0
- package/test/icc-x-api/icc-time-table-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-time-table-x-api.js +100 -0
- package/test/icc-x-api/icc-time-table-x-api.js.map +1 -0
- package/test/icc-x-api/icc-topic-x-api.d.ts +1 -0
- package/test/icc-x-api/icc-topic-x-api.js +269 -0
- package/test/icc-x-api/icc-topic-x-api.js.map +1 -0
- package/test/icc-x-api/icc-user-x-api-test.d.ts +1 -0
- package/test/icc-x-api/icc-user-x-api-test.js +99 -0
- package/test/icc-x-api/icc-user-x-api-test.js.map +1 -0
- package/test/icc-x-api/patient-user.d.ts +2 -0
- package/test/icc-x-api/patient-user.js +104 -0
- package/test/icc-x-api/patient-user.js.map +1 -0
- package/test/icc-x-api/storage/storage.d.ts +1 -0
- package/test/icc-x-api/storage/storage.js +48 -0
- package/test/icc-x-api/storage/storage.js.map +1 -0
- package/test/icc-x-api/test-api-no-parent.d.ts +1 -0
- package/test/icc-x-api/test-api-no-parent.js +79 -0
- package/test/icc-x-api/test-api-no-parent.js.map +1 -0
- package/test/icc-x-api/test-legacy-data-support.d.ts +1 -0
- package/test/icc-x-api/test-legacy-data-support.js +376 -0
- package/test/icc-x-api/test-legacy-data-support.js.map +1 -0
- package/test/icc-x-api/utils/graph-test.d.ts +1 -0
- package/test/icc-x-api/utils/graph-test.js +54 -0
- package/test/icc-x-api/utils/graph-test.js.map +1 -0
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +1 -0
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +364 -0
- package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +1 -0
- package/test/support/CSM-185.d.ts +1 -0
- package/test/support/CSM-185.js +124 -0
- package/test/support/CSM-185.js.map +1 -0
- package/test/support/CSM-243.d.ts +1 -0
- package/test/support/CSM-243.js +120 -0
- package/test/support/CSM-243.js.map +1 -0
- package/test/support/CSM-87.d.ts +0 -0
- package/test/support/CSM-87.js +21 -0
- package/test/support/CSM-87.js.map +1 -0
- package/test/support/CSM-93.d.ts +1 -0
- package/test/support/CSM-93.js +112 -0
- package/test/support/CSM-93.js.map +1 -0
- package/test/utils/FakeDataOwnerApi.d.ts +32 -0
- package/test/utils/FakeDataOwnerApi.js +136 -0
- package/test/utils/FakeDataOwnerApi.js.map +1 -0
- package/test/utils/FakeEncryptionKeysManager.d.ts +35 -0
- package/test/utils/FakeEncryptionKeysManager.js +87 -0
- package/test/utils/FakeEncryptionKeysManager.js.map +1 -0
- package/test/utils/FakeExchangeDataApi.d.ts +30 -0
- package/test/utils/FakeExchangeDataApi.js +74 -0
- package/test/utils/FakeExchangeDataApi.js.map +1 -0
- package/test/utils/FakeExchangeDataManager.d.ts +40 -0
- package/test/utils/FakeExchangeDataManager.js +89 -0
- package/test/utils/FakeExchangeDataManager.js.map +1 -0
- package/test/utils/FakeExchangeDataMapManager.d.ts +12 -0
- package/test/utils/FakeExchangeDataMapManager.js +38 -0
- package/test/utils/FakeExchangeDataMapManager.js.map +1 -0
- package/test/utils/FakeGenericApi.d.ts +16 -0
- package/test/utils/FakeGenericApi.js +65 -0
- package/test/utils/FakeGenericApi.js.map +1 -0
- package/test/utils/FakeSignatureKeysManager.d.ts +16 -0
- package/test/utils/FakeSignatureKeysManager.js +54 -0
- package/test/utils/FakeSignatureKeysManager.js.map +1 -0
- package/test/utils/TestApi.d.ts +3 -0
- package/test/utils/TestApi.js +30 -0
- package/test/utils/TestApi.js.map +1 -0
- package/test/utils/TestCollectionUtils.d.ts +1 -0
- package/test/utils/TestCollectionUtils.js +109 -0
- package/test/utils/TestCollectionUtils.js.map +1 -0
- package/test/utils/TestCryptoStrategies.d.ts +42 -0
- package/test/utils/TestCryptoStrategies.js +80 -0
- package/test/utils/TestCryptoStrategies.js.map +1 -0
- package/test/utils/TestStorage.d.ts +23 -0
- package/test/utils/TestStorage.js +61 -0
- package/test/utils/TestStorage.js.map +1 -0
- package/test/utils/test_utils.d.ts +76 -0
- package/test/utils/test_utils.js +419 -0
- package/test/utils/test_utils.js.map +1 -0
|
@@ -0,0 +1,30 @@
|
|
|
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.TestApi = void 0;
|
|
13
|
+
const icc_x_api_1 = require("../../icc-x-api");
|
|
14
|
+
const TestStorage_1 = require("./TestStorage");
|
|
15
|
+
const TestCryptoStrategies_1 = require("./TestCryptoStrategies");
|
|
16
|
+
require("isomorphic-fetch");
|
|
17
|
+
const TestApi = function (host, username, password, crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : {}, keyPair, options = {}) {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const initialisedKeys = keyPair !== null && keyPair !== void 0 ? keyPair : (yield new icc_x_api_1.RSAUtils(crypto).generateKeyPair(icc_x_api_1.ShaVersion.Sha256));
|
|
20
|
+
return icc_x_api_1.IcureApi.initialise(host, {
|
|
21
|
+
username,
|
|
22
|
+
password,
|
|
23
|
+
}, new TestCryptoStrategies_1.TestCryptoStrategies(initialisedKeys), crypto, typeof window !== 'undefined' ? window.fetch : typeof self !== 'undefined' ? self.fetch : fetch, Object.assign({
|
|
24
|
+
storage: new TestStorage_1.TestStorage(),
|
|
25
|
+
keyStorage: new TestStorage_1.TestKeyStorage(),
|
|
26
|
+
}, options));
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
exports.TestApi = TestApi;
|
|
30
|
+
//# sourceMappingURL=TestApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestApi.js","sourceRoot":"","sources":["../../../test/utils/TestApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA0F;AAC1F,+CAA2D;AAC3D,iEAA6D;AAC7D,4BAAyB;AAElB,MAAM,OAAO,GAAG,UACrB,IAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,SAAiB,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,EAAa,EAC3H,OAA4B,EAC5B,UAA2B,EAAE;;QAE7B,MAAM,eAAe,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,CAAC,MAAM,IAAI,oBAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,sBAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QAClG,OAAO,oBAAQ,CAAC,UAAU,CACxB,IAAI,EACJ;YACE,QAAQ;YACR,QAAQ;SACT,EACD,IAAI,2CAAoB,CAAC,eAAe,CAAC,EACzC,MAAM,EACN,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,gBAE1F;YACD,OAAO,EAAE,IAAI,yBAAW,EAAE;YAC1B,UAAU,EAAE,IAAI,4BAAc,EAAE;SACjC,EACE,OAAO,EAEb,CAAA;IACH,CAAC;CAAA,CAAA;AA1BY,QAAA,OAAO,WA0BnB","sourcesContent":["import { IcureApi, IcureApiOptions, KeyPair, RSAUtils, ShaVersion } from '../../icc-x-api'\nimport { TestKeyStorage, TestStorage } from './TestStorage'\nimport { TestCryptoStrategies } from './TestCryptoStrategies'\nimport 'isomorphic-fetch'\n\nexport const TestApi = async function (\n host: string,\n username: string,\n password: string,\n crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n keyPair?: KeyPair<CryptoKey>,\n options: IcureApiOptions = {}\n): Promise<IcureApi> {\n const initialisedKeys = keyPair ?? (await new RSAUtils(crypto).generateKeyPair(ShaVersion.Sha256))\n return IcureApi.initialise(\n host,\n {\n username,\n password,\n },\n new TestCryptoStrategies(initialisedKeys),\n crypto,\n typeof window !== 'undefined' ? window.fetch : typeof self !== 'undefined' ? self.fetch : fetch,\n {\n ...{\n storage: new TestStorage(),\n keyStorage: new TestKeyStorage(),\n },\n ...options,\n }\n )\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const collection_utils_1 = require("../../icc-x-api/utils/collection-utils");
|
|
5
|
+
describe('setEquals', () => {
|
|
6
|
+
it('should return true for two empty sets', () => {
|
|
7
|
+
(0, chai_1.expect)((0, collection_utils_1.setEquals)(new Set(), new Set())).to.be.true;
|
|
8
|
+
});
|
|
9
|
+
it('should return true for two sets with the same elements', () => {
|
|
10
|
+
const setA = new Set([1, 2, 3]);
|
|
11
|
+
const setB = new Set([3, 1, 2]);
|
|
12
|
+
(0, chai_1.expect)((0, collection_utils_1.setEquals)(setA, setB)).to.be.true;
|
|
13
|
+
});
|
|
14
|
+
it('should return false for sets with different elements', () => {
|
|
15
|
+
const setA = new Set([1, 2, 3]);
|
|
16
|
+
const setB = new Set([4, 5, 6]);
|
|
17
|
+
(0, chai_1.expect)((0, collection_utils_1.setEquals)(setA, setB)).to.be.false;
|
|
18
|
+
});
|
|
19
|
+
it('should return false for sets of different sizes', () => {
|
|
20
|
+
const setA = new Set([1, 2, 3]);
|
|
21
|
+
const setB = new Set([1, 2]);
|
|
22
|
+
(0, chai_1.expect)((0, collection_utils_1.setEquals)(setA, setB)).to.be.false;
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('objectEquals', () => {
|
|
26
|
+
it('should return true for two empty objects', () => {
|
|
27
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)({}, {})).to.be.true;
|
|
28
|
+
});
|
|
29
|
+
it('should return true for identical objects', () => {
|
|
30
|
+
const objA = { a: 1, b: 2 };
|
|
31
|
+
const objB = { a: 1, b: 2 };
|
|
32
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB)).to.be.true;
|
|
33
|
+
});
|
|
34
|
+
it('should return false for objects with different properties', () => {
|
|
35
|
+
const objA = { a: 1, b: 2 };
|
|
36
|
+
const objB = { a: 1, c: 3 };
|
|
37
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB)).to.be.false;
|
|
38
|
+
});
|
|
39
|
+
it('should return true for objects with nested identical objects', () => {
|
|
40
|
+
const objA = { a: 1, b: { c: 3, d: 4 } };
|
|
41
|
+
const objB = { a: 1, b: { c: 3, d: 4 } };
|
|
42
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB)).to.be.true;
|
|
43
|
+
});
|
|
44
|
+
it('should return false for objects with nested different objects', () => {
|
|
45
|
+
const objA = { a: 1, b: { c: 3, d: 4 } };
|
|
46
|
+
const objB = { a: 1, b: { c: 3, d: 5 } };
|
|
47
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB)).to.be.false;
|
|
48
|
+
});
|
|
49
|
+
it('should return true for objects with identical arrays', () => {
|
|
50
|
+
const objA = { a: 1, b: [1, 2, 3] };
|
|
51
|
+
const objB = { a: 1, b: [1, 2, 3] };
|
|
52
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB)).to.be.true;
|
|
53
|
+
});
|
|
54
|
+
it('should return false for objects with different arrays', () => {
|
|
55
|
+
const objA = { a: 1, b: [1, 2, 3] };
|
|
56
|
+
const objB = { a: 1, b: [1, 2, 4] };
|
|
57
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB)).to.be.false;
|
|
58
|
+
});
|
|
59
|
+
it('should return true for deeply nested objects', () => {
|
|
60
|
+
const objA = { a: 1, b: { c: { d: 4, e: 5 } } };
|
|
61
|
+
const objB = { a: 1, b: { c: { d: 4, e: 5 } } };
|
|
62
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB)).to.be.true;
|
|
63
|
+
});
|
|
64
|
+
it('should respect ignoredProperties', () => {
|
|
65
|
+
const objA = { a: 1, b: 2, c: 3 };
|
|
66
|
+
const objB = { a: 1, b: 2, d: 4 };
|
|
67
|
+
(0, chai_1.expect)((0, collection_utils_1.objectEquals)(objA, objB, ['c', 'd'])).to.be.true;
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('arrayEquals', () => {
|
|
71
|
+
it('should return true for two empty arrays', () => {
|
|
72
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)([], [])).to.be.true;
|
|
73
|
+
});
|
|
74
|
+
it('should return true for two identical arrays of primitives', () => {
|
|
75
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)(['1', 2, 3], ['1', 2, 3])).to.be.true;
|
|
76
|
+
});
|
|
77
|
+
it('should return false for two different arrays of primitives', () => {
|
|
78
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)(['1', 2, 3], [1, 2, 3])).to.be.false;
|
|
79
|
+
});
|
|
80
|
+
it('should return false for arrays of different primitives', () => {
|
|
81
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)([1, 2, 3], [1, 2, 4])).to.be.false;
|
|
82
|
+
});
|
|
83
|
+
it('should return true for nested arrays with the same elements', () => {
|
|
84
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)([1, [2, 3], 4], [1, [2, 3], 4])).to.be.true;
|
|
85
|
+
});
|
|
86
|
+
it('should return false for nested arrays with different elements', () => {
|
|
87
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)([1, [2, 3], 4], [1, [2, 4], 4])).to.be.false;
|
|
88
|
+
});
|
|
89
|
+
it('should return true for arrays with identical objects', () => {
|
|
90
|
+
const objA = { a: 1, b: 2 };
|
|
91
|
+
const objB = { a: 1, b: 2 };
|
|
92
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)([objA], [objB])).to.be.true;
|
|
93
|
+
});
|
|
94
|
+
it('should return false for arrays with different objects', () => {
|
|
95
|
+
const objA = { a: 1, b: 2 };
|
|
96
|
+
const objB = { a: 1, c: 3 };
|
|
97
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)([objA], [objB])).to.be.false;
|
|
98
|
+
});
|
|
99
|
+
it('should return true for arrays with deeply nested structures', () => {
|
|
100
|
+
const nestedArray = [1, { a: [2, 3, { b: 4 }] }, 5];
|
|
101
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)(nestedArray, nestedArray)).to.be.true;
|
|
102
|
+
});
|
|
103
|
+
it('should return false for arrays with differently nested structures', () => {
|
|
104
|
+
const nestedArray1 = [1, { a: [2, 3, { b: 4 }] }, 5];
|
|
105
|
+
const nestedArray2 = [1, { a: [2, 3, { b: 5 }] }, 5];
|
|
106
|
+
(0, chai_1.expect)((0, collection_utils_1.arrayEquals)(nestedArray1, nestedArray2)).to.be.false;
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=TestCollectionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestCollectionUtils.js","sourceRoot":"","sources":["../../../test/utils/TestCollectionUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { arrayEquals, objectEquals, setEquals } from '../../icc-x-api/utils/collection-utils'\n\ndescribe('setEquals', () => {\n it('should return true for two empty sets', () => {\n expect(setEquals(new Set(), new Set())).to.be.true\n })\n\n it('should return true for two sets with the same elements', () => {\n const setA = new Set([1, 2, 3])\n const setB = new Set([3, 1, 2])\n expect(setEquals(setA, setB)).to.be.true\n })\n\n it('should return false for sets with different elements', () => {\n const setA = new Set([1, 2, 3])\n const setB = new Set([4, 5, 6])\n expect(setEquals(setA, setB)).to.be.false\n })\n\n it('should return false for sets of different sizes', () => {\n const setA = new Set([1, 2, 3])\n const setB = new Set([1, 2])\n expect(setEquals(setA, setB)).to.be.false\n })\n})\n\ndescribe('objectEquals', () => {\n it('should return true for two empty objects', () => {\n expect(objectEquals({}, {})).to.be.true\n })\n\n it('should return true for identical objects', () => {\n const objA = { a: 1, b: 2 }\n const objB = { a: 1, b: 2 }\n expect(objectEquals(objA, objB)).to.be.true\n })\n\n it('should return false for objects with different properties', () => {\n const objA: any = { a: 1, b: 2 }\n const objB: any = { a: 1, c: 3 }\n expect(objectEquals(objA, objB)).to.be.false\n })\n\n it('should return true for objects with nested identical objects', () => {\n const objA = { a: 1, b: { c: 3, d: 4 } }\n const objB = { a: 1, b: { c: 3, d: 4 } }\n expect(objectEquals(objA, objB)).to.be.true\n })\n\n it('should return false for objects with nested different objects', () => {\n const objA = { a: 1, b: { c: 3, d: 4 } }\n const objB = { a: 1, b: { c: 3, d: 5 } }\n expect(objectEquals(objA, objB)).to.be.false\n })\n\n it('should return true for objects with identical arrays', () => {\n const objA = { a: 1, b: [1, 2, 3] }\n const objB = { a: 1, b: [1, 2, 3] }\n expect(objectEquals(objA, objB)).to.be.true\n })\n\n it('should return false for objects with different arrays', () => {\n const objA = { a: 1, b: [1, 2, 3] }\n const objB = { a: 1, b: [1, 2, 4] }\n expect(objectEquals(objA, objB)).to.be.false\n })\n\n it('should return true for deeply nested objects', () => {\n const objA = { a: 1, b: { c: { d: 4, e: 5 } } }\n const objB = { a: 1, b: { c: { d: 4, e: 5 } } }\n expect(objectEquals(objA, objB)).to.be.true\n })\n\n it('should respect ignoredProperties', () => {\n const objA: any = { a: 1, b: 2, c: 3 }\n const objB: any = { a: 1, b: 2, d: 4 }\n expect(objectEquals(objA, objB, ['c', 'd'])).to.be.true\n })\n})\n\ndescribe('arrayEquals', () => {\n it('should return true for two empty arrays', () => {\n expect(arrayEquals([], [])).to.be.true\n })\n\n it('should return true for two identical arrays of primitives', () => {\n expect(arrayEquals(['1', 2, 3], ['1', 2, 3])).to.be.true\n })\n\n it('should return false for two different arrays of primitives', () => {\n expect(arrayEquals(['1', 2, 3], [1, 2, 3])).to.be.false\n })\n\n it('should return false for arrays of different primitives', () => {\n expect(arrayEquals([1, 2, 3], [1, 2, 4])).to.be.false\n })\n\n it('should return true for nested arrays with the same elements', () => {\n expect(arrayEquals([1, [2, 3], 4], [1, [2, 3], 4])).to.be.true\n })\n\n it('should return false for nested arrays with different elements', () => {\n expect(arrayEquals([1, [2, 3], 4], [1, [2, 4], 4])).to.be.false\n })\n\n it('should return true for arrays with identical objects', () => {\n const objA = { a: 1, b: 2 }\n const objB = { a: 1, b: 2 }\n expect(arrayEquals([objA], [objB])).to.be.true\n })\n\n it('should return false for arrays with different objects', () => {\n const objA: any = { a: 1, b: 2 }\n const objB: any = { a: 1, c: 3 }\n expect(arrayEquals([objA], [objB])).to.be.false\n })\n\n it('should return true for arrays with deeply nested structures', () => {\n const nestedArray = [1, { a: [2, 3, { b: 4 }] }, 5]\n expect(arrayEquals(nestedArray, nestedArray)).to.be.true\n })\n\n it('should return false for arrays with differently nested structures', () => {\n const nestedArray1 = [1, { a: [2, 3, { b: 4 }] }, 5]\n const nestedArray2 = [1, { a: [2, 3, { b: 5 }] }, 5]\n expect(arrayEquals(nestedArray1, nestedArray2)).to.be.false\n })\n})\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CryptoStrategies } from '../../icc-x-api/crypto/CryptoStrategies';
|
|
2
|
+
import { KeyPair, ShaVersion } from '../../icc-x-api/crypto/RSA';
|
|
3
|
+
import { CryptoPrimitives } from '../../icc-x-api';
|
|
4
|
+
import { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub';
|
|
5
|
+
import { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType';
|
|
6
|
+
export declare class TestCryptoStrategies implements CryptoStrategies {
|
|
7
|
+
private readonly keyPair?;
|
|
8
|
+
private readonly verifiedSelfKeys;
|
|
9
|
+
private readonly limitVerifiedDelegatesKeys?;
|
|
10
|
+
private readonly recoveredParentKeys;
|
|
11
|
+
private readonly RSA;
|
|
12
|
+
recoverAndVerifyCallsParams: Array<{
|
|
13
|
+
dataOwner: DataOwnerWithType;
|
|
14
|
+
unknownKeys: string[];
|
|
15
|
+
unavailableKeys: string[];
|
|
16
|
+
}[]>;
|
|
17
|
+
constructor(keyPair?: KeyPair<CryptoKey> | undefined, verifiedSelfKeys?: {
|
|
18
|
+
[p: string]: boolean;
|
|
19
|
+
}, limitVerifiedDelegatesKeys?: Set<string> | undefined, recoveredParentKeys?: {
|
|
20
|
+
[parentId: string]: {
|
|
21
|
+
pair: KeyPair<string>;
|
|
22
|
+
shaVersion: ShaVersion;
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
generateNewKeyForDataOwner(self: DataOwnerWithType): Promise<KeyPair<CryptoKey> | boolean>;
|
|
26
|
+
recoverAndVerifySelfHierarchyKeys(keysData: {
|
|
27
|
+
dataOwner: DataOwnerWithType;
|
|
28
|
+
unknownKeys: string[];
|
|
29
|
+
unavailableKeys: string[];
|
|
30
|
+
}[], cryptoPrimitives: CryptoPrimitives): Promise<{
|
|
31
|
+
[p: string]: {
|
|
32
|
+
recoveredKeys: {
|
|
33
|
+
[p: string]: KeyPair<CryptoKey>;
|
|
34
|
+
};
|
|
35
|
+
keyAuthenticity: {
|
|
36
|
+
[p: string]: boolean;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}>;
|
|
40
|
+
verifyDelegatePublicKeys(delegate: CryptoActorStubWithType, publicKeys: string[]): Promise<string[]>;
|
|
41
|
+
dataOwnerRequiresAnonymousDelegation(dataOwner: CryptoActorStubWithType): boolean;
|
|
42
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
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.TestCryptoStrategies = void 0;
|
|
13
|
+
const RSA_1 = require("../../icc-x-api/crypto/RSA");
|
|
14
|
+
const utils_1 = require("../../icc-x-api/crypto/utils");
|
|
15
|
+
const crypto_1 = require("crypto");
|
|
16
|
+
const icc_x_api_1 = require("../../icc-x-api");
|
|
17
|
+
class TestCryptoStrategies {
|
|
18
|
+
constructor(keyPair, verifiedSelfKeys = {}, limitVerifiedDelegatesKeys, recoveredParentKeys = {}) {
|
|
19
|
+
this.keyPair = keyPair;
|
|
20
|
+
this.verifiedSelfKeys = verifiedSelfKeys;
|
|
21
|
+
this.limitVerifiedDelegatesKeys = limitVerifiedDelegatesKeys;
|
|
22
|
+
this.recoveredParentKeys = recoveredParentKeys;
|
|
23
|
+
this.RSA = new RSA_1.RSAUtils(crypto_1.webcrypto);
|
|
24
|
+
this.recoverAndVerifyCallsParams = [];
|
|
25
|
+
}
|
|
26
|
+
generateNewKeyForDataOwner(self) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
if (!this.keyPair)
|
|
29
|
+
return false;
|
|
30
|
+
const knownKeys = new Set([...(0, utils_1.hexPublicKeysWithSha1Of)(self), ...(0, utils_1.hexPublicKeysWithSha256Of)(self)]);
|
|
31
|
+
const publicKey = (0, icc_x_api_1.ua2hex)(yield this.RSA.exportKey(this.keyPair.publicKey, 'spki'));
|
|
32
|
+
return knownKeys.has(publicKey) ? false : this.keyPair;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
recoverAndVerifySelfHierarchyKeys(keysData, cryptoPrimitives) {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
this.recoverAndVerifyCallsParams.push(keysData);
|
|
38
|
+
const self = keysData[keysData.length - 1].dataOwner;
|
|
39
|
+
const knownKeys = new Set([...(0, utils_1.hexPublicKeysWithSha1Of)(self.dataOwner), ...(0, utils_1.hexPublicKeysWithSha256Of)(self.dataOwner)]);
|
|
40
|
+
const publicKey = this.keyPair ? (0, icc_x_api_1.ua2hex)(yield this.RSA.exportKey(this.keyPair.publicKey, 'spki')) : undefined;
|
|
41
|
+
return Object.fromEntries(yield Promise.all(keysData.map((currData) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
if (currData.dataOwner.dataOwner.id !== self.dataOwner.id) {
|
|
43
|
+
const recoveredKey = this.recoveredParentKeys[currData.dataOwner.dataOwner.id];
|
|
44
|
+
return [
|
|
45
|
+
currData.dataOwner.dataOwner.id,
|
|
46
|
+
{
|
|
47
|
+
recoveredKeys: recoveredKey
|
|
48
|
+
? {
|
|
49
|
+
[recoveredKey.pair.publicKey.slice(-32)]: yield cryptoPrimitives.RSA.importKeyPair('pkcs8', (0, icc_x_api_1.hex2ua)(recoveredKey.pair.privateKey), 'spki', (0, icc_x_api_1.hex2ua)(recoveredKey.pair.publicKey), recoveredKey.shaVersion),
|
|
50
|
+
}
|
|
51
|
+
: {},
|
|
52
|
+
keyAuthenticity: {},
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
else if (publicKey === undefined || !knownKeys.has(publicKey)) {
|
|
57
|
+
return [currData.dataOwner.dataOwner.id, { recoveredKeys: {}, keyAuthenticity: this.verifiedSelfKeys }];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return [
|
|
61
|
+
currData.dataOwner.dataOwner.id,
|
|
62
|
+
{ recoveredKeys: { [publicKey.slice(-32)]: this.keyPair }, keyAuthenticity: this.verifiedSelfKeys },
|
|
63
|
+
];
|
|
64
|
+
}
|
|
65
|
+
}))));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
verifyDelegatePublicKeys(delegate, publicKeys) {
|
|
69
|
+
if (this.limitVerifiedDelegatesKeys) {
|
|
70
|
+
return Promise.resolve(publicKeys.filter((x) => this.limitVerifiedDelegatesKeys.has(x)));
|
|
71
|
+
}
|
|
72
|
+
else
|
|
73
|
+
return Promise.resolve(publicKeys);
|
|
74
|
+
}
|
|
75
|
+
dataOwnerRequiresAnonymousDelegation(dataOwner) {
|
|
76
|
+
return dataOwner.type !== 'hcp';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.TestCryptoStrategies = TestCryptoStrategies;
|
|
80
|
+
//# sourceMappingURL=TestCryptoStrategies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestCryptoStrategies.js","sourceRoot":"","sources":["../../../test/utils/TestCryptoStrategies.ts"],"names":[],"mappings":"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","sourcesContent":["import { CryptoStrategies } from '../../icc-x-api/crypto/CryptoStrategies'\nimport { KeyPair, RSAUtils, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { hexPublicKeysWithSha1Of, hexPublicKeysWithSha256Of } from '../../icc-x-api/crypto/utils'\nimport { webcrypto } from 'crypto'\nimport { CryptoPrimitives, hex2ua, ua2hex } from '../../icc-x-api'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\n\nexport class TestCryptoStrategies implements CryptoStrategies {\n private readonly RSA = new RSAUtils(webcrypto as any)\n recoverAndVerifyCallsParams: Array<{ dataOwner: DataOwnerWithType; unknownKeys: string[]; unavailableKeys: string[] }[]> = []\n\n constructor(\n private readonly keyPair?: KeyPair<CryptoKey>,\n private readonly verifiedSelfKeys: { [p: string]: boolean } = {},\n private readonly limitVerifiedDelegatesKeys?: Set<string>,\n private readonly recoveredParentKeys: { [parentId: string]: { pair: KeyPair<string>; shaVersion: ShaVersion } } = {}\n ) {}\n\n async generateNewKeyForDataOwner(self: DataOwnerWithType): Promise<KeyPair<CryptoKey> | boolean> {\n if (!this.keyPair) return false\n const knownKeys = new Set([...hexPublicKeysWithSha1Of(self), ...hexPublicKeysWithSha256Of(self)])\n const publicKey = ua2hex(await this.RSA.exportKey(this.keyPair.publicKey, 'spki'))\n return knownKeys.has(publicKey) ? false : this.keyPair\n }\n\n async recoverAndVerifySelfHierarchyKeys(\n keysData: { dataOwner: DataOwnerWithType; unknownKeys: string[]; unavailableKeys: string[] }[],\n cryptoPrimitives: CryptoPrimitives\n ): Promise<{ [p: string]: { recoveredKeys: { [p: string]: KeyPair<CryptoKey> }; keyAuthenticity: { [p: string]: boolean } } }> {\n this.recoverAndVerifyCallsParams.push(keysData)\n const self = keysData[keysData.length - 1].dataOwner\n const knownKeys = new Set([...hexPublicKeysWithSha1Of(self.dataOwner), ...hexPublicKeysWithSha256Of(self.dataOwner)])\n const publicKey = this.keyPair ? ua2hex(await this.RSA.exportKey(this.keyPair.publicKey, 'spki')) : undefined\n return Object.fromEntries(\n await Promise.all(\n keysData.map(async (currData) => {\n if (currData.dataOwner.dataOwner.id! !== self.dataOwner.id!) {\n const recoveredKey = this.recoveredParentKeys[currData.dataOwner.dataOwner.id!]\n return [\n currData.dataOwner.dataOwner.id!,\n {\n recoveredKeys: recoveredKey\n ? {\n [recoveredKey.pair.publicKey.slice(-32)]: await cryptoPrimitives.RSA.importKeyPair(\n 'pkcs8',\n hex2ua(recoveredKey.pair.privateKey),\n 'spki',\n hex2ua(recoveredKey.pair.publicKey),\n recoveredKey.shaVersion\n ),\n }\n : {},\n keyAuthenticity: {},\n },\n ]\n } else if (publicKey === undefined || !knownKeys.has(publicKey)) {\n return [currData.dataOwner.dataOwner.id!, { recoveredKeys: {}, keyAuthenticity: this.verifiedSelfKeys }]\n } else {\n return [\n currData.dataOwner.dataOwner.id!,\n { recoveredKeys: { [publicKey.slice(-32)]: this.keyPair }, keyAuthenticity: this.verifiedSelfKeys },\n ]\n }\n })\n )\n )\n }\n\n verifyDelegatePublicKeys(delegate: CryptoActorStubWithType, publicKeys: string[]): Promise<string[]> {\n if (this.limitVerifiedDelegatesKeys) {\n return Promise.resolve(publicKeys.filter((x) => this.limitVerifiedDelegatesKeys!.has(x)))\n } else return Promise.resolve(publicKeys)\n }\n\n dataOwnerRequiresAnonymousDelegation(dataOwner: CryptoActorStubWithType): boolean {\n return dataOwner.type !== 'hcp'\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { KeyStorageFacade, KeyStorageImpl, StorageFacade } from '../../icc-x-api';
|
|
2
|
+
import { KeyPair, ShaVersion } from '../../icc-x-api/crypto/RSA';
|
|
3
|
+
import { StorageEntryKeysFactory } from '../../icc-x-api/storage/StorageEntryKeysFactory';
|
|
4
|
+
export declare class TestStorage implements StorageFacade<string> {
|
|
5
|
+
private readonly data;
|
|
6
|
+
getItem(key: string): Promise<string | undefined>;
|
|
7
|
+
removeItem(key: string): Promise<void>;
|
|
8
|
+
setItem(key: string, valueToStore: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class TestKeyStorage extends KeyStorageImpl {
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
13
|
+
export declare function testStorageWithKeys(data: {
|
|
14
|
+
dataOwnerId: string;
|
|
15
|
+
pairs: {
|
|
16
|
+
keyPair: KeyPair<string>;
|
|
17
|
+
shaVersion: ShaVersion;
|
|
18
|
+
}[];
|
|
19
|
+
}[]): Promise<{
|
|
20
|
+
keyStorage: KeyStorageFacade;
|
|
21
|
+
storage: StorageFacade<string>;
|
|
22
|
+
keyFactory: StorageEntryKeysFactory;
|
|
23
|
+
}>;
|
|
@@ -0,0 +1,61 @@
|
|
|
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.testStorageWithKeys = exports.TestKeyStorage = exports.TestStorage = void 0;
|
|
13
|
+
const icc_x_api_1 = require("../../icc-x-api");
|
|
14
|
+
const DefaultStorageEntryKeysFactory_1 = require("../../icc-x-api/storage/DefaultStorageEntryKeysFactory");
|
|
15
|
+
const IcureStorageFacade_1 = require("../../icc-x-api/storage/IcureStorageFacade");
|
|
16
|
+
class TestStorage {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.data = new Map();
|
|
19
|
+
}
|
|
20
|
+
getItem(key) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
return this.data.get(key);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
removeItem(key) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
this.data.delete(key);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
setItem(key, valueToStore) {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
this.data.set(key, valueToStore);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.TestStorage = TestStorage;
|
|
37
|
+
class TestKeyStorage extends icc_x_api_1.KeyStorageImpl {
|
|
38
|
+
constructor() {
|
|
39
|
+
super(new TestStorage());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.TestKeyStorage = TestKeyStorage;
|
|
43
|
+
function testStorageWithKeys(data) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const keyStorage = new TestKeyStorage();
|
|
46
|
+
const keyFactory = new DefaultStorageEntryKeysFactory_1.DefaultStorageEntryKeysFactory();
|
|
47
|
+
const storage = new TestStorage();
|
|
48
|
+
const icureStorage = new IcureStorageFacade_1.IcureStorageFacade(keyStorage, storage, keyFactory);
|
|
49
|
+
for (const { dataOwnerId, pairs } of data) {
|
|
50
|
+
for (const pair of pairs) {
|
|
51
|
+
yield icureStorage.saveKey(dataOwnerId, pair.keyPair.publicKey.slice(-32), {
|
|
52
|
+
privateKey: (0, icc_x_api_1.pkcs8ToJwk)((0, icc_x_api_1.hex2ua)(pair.keyPair.privateKey)),
|
|
53
|
+
publicKey: (0, icc_x_api_1.spkiToJwk)((0, icc_x_api_1.hex2ua)(pair.keyPair.publicKey), pair.shaVersion),
|
|
54
|
+
}, true);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { keyFactory, keyStorage, storage };
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.testStorageWithKeys = testStorageWithKeys;
|
|
61
|
+
//# sourceMappingURL=TestStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestStorage.js","sourceRoot":"","sources":["../../../test/utils/TestStorage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAgH;AAGhH,2GAAuG;AACvG,mFAA+E;AAE/E,MAAa,WAAW;IAAxB;QACmB,SAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;IAanD,CAAC;IAXO,OAAO,CAAC,GAAW;;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;KAAA;IAEK,UAAU,CAAC,GAAW;;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;KAAA;IAEK,OAAO,CAAC,GAAW,EAAE,YAAoB;;YAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAClC,CAAC;KAAA;CACF;AAdD,kCAcC;AAED,MAAa,cAAe,SAAQ,0BAAc;IAChD;QACE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;IAC1B,CAAC;CACF;AAJD,wCAIC;AAED,SAAsB,mBAAmB,CACvC,IAA8F;;QAE9F,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAA;QACvC,MAAM,UAAU,GAAG,IAAI,+DAA8B,EAAE,CAAA;QACvD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,YAAY,GAAG,IAAI,uCAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAC5E,KAAK,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE;YACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,YAAY,CAAC,OAAO,CACxB,WAAW,EACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EACjC;oBACE,UAAU,EAAE,IAAA,sBAAU,EAAC,IAAA,kBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACvD,SAAS,EAAE,IAAA,qBAAS,EAAC,IAAA,kBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;iBACtE,EACD,IAAI,CACL,CAAA;aACF;SACF;QACD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;IAC5C,CAAC;CAAA;AArBD,kDAqBC","sourcesContent":["import { hex2ua, KeyStorageFacade, KeyStorageImpl, pkcs8ToJwk, spkiToJwk, StorageFacade } from '../../icc-x-api'\nimport { KeyPair, ShaVersion } from '../../icc-x-api/crypto/RSA'\nimport { StorageEntryKeysFactory } from '../../icc-x-api/storage/StorageEntryKeysFactory'\nimport { DefaultStorageEntryKeysFactory } from '../../icc-x-api/storage/DefaultStorageEntryKeysFactory'\nimport { IcureStorageFacade } from '../../icc-x-api/storage/IcureStorageFacade'\n\nexport class TestStorage implements StorageFacade<string> {\n private readonly data = new Map<string, string>()\n\n async getItem(key: string): Promise<string | undefined> {\n return this.data.get(key)\n }\n\n async removeItem(key: string): Promise<void> {\n this.data.delete(key)\n }\n\n async setItem(key: string, valueToStore: string): Promise<void> {\n this.data.set(key, valueToStore)\n }\n}\n\nexport class TestKeyStorage extends KeyStorageImpl {\n constructor() {\n super(new TestStorage())\n }\n}\n\nexport async function testStorageWithKeys(\n data: { dataOwnerId: string; pairs: { keyPair: KeyPair<string>; shaVersion: ShaVersion }[] }[]\n): Promise<{ keyStorage: KeyStorageFacade; storage: StorageFacade<string>; keyFactory: StorageEntryKeysFactory }> {\n const keyStorage = new TestKeyStorage()\n const keyFactory = new DefaultStorageEntryKeysFactory()\n const storage = new TestStorage()\n const icureStorage = new IcureStorageFacade(keyStorage, storage, keyFactory)\n for (const { dataOwnerId, pairs } of data) {\n for (const pair of pairs) {\n await icureStorage.saveKey(\n dataOwnerId,\n pair.keyPair.publicKey.slice(-32),\n {\n privateKey: pkcs8ToJwk(hex2ua(pair.keyPair.privateKey)),\n publicKey: spkiToJwk(hex2ua(pair.keyPair.publicKey), pair.shaVersion),\n },\n true\n )\n }\n }\n return { keyFactory, keyStorage, storage }\n}\n"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { IcureApi, IcureApiOptions } from '../../icc-x-api';
|
|
2
|
+
import { User } from '../../icc-api/model/User';
|
|
3
|
+
import { TestVars, UserDetails } from '@icure/test-setup/types';
|
|
4
|
+
import { EnvInitializer } from '@icure/test-setup/decorators';
|
|
5
|
+
import 'isomorphic-fetch';
|
|
6
|
+
import { Context, Suite, Test } from 'mocha';
|
|
7
|
+
import { Group } from '../../icc-api/model/Group';
|
|
8
|
+
export declare function getTempEmail(): string;
|
|
9
|
+
export declare function setLocalStorage(fetch: (input: RequestInfo, init?: RequestInit) => Promise<Response>): void;
|
|
10
|
+
export declare const hcp1Username: string;
|
|
11
|
+
export declare const hcp2Username: string;
|
|
12
|
+
export declare const hcp3Username: string;
|
|
13
|
+
export declare const patUsername: string;
|
|
14
|
+
export declare const deviceUsername: string;
|
|
15
|
+
export declare function getEnvironmentInitializer(): Promise<EnvInitializer>;
|
|
16
|
+
export declare namespace TestUtils {
|
|
17
|
+
function initApi(envVars: TestVars, userName?: string, options?: IcureApiOptions): Promise<IcureApi>;
|
|
18
|
+
function initMasterApi(envVars: TestVars, options?: IcureApiOptions): Promise<IcureApi>;
|
|
19
|
+
}
|
|
20
|
+
export declare function getApiAndAddPrivateKeysForUser(iCureUrl: string, details: UserDetails, options?: IcureApiOptions): Promise<IcureApi>;
|
|
21
|
+
export declare function createNewHcpApi(env: TestVars): Promise<{
|
|
22
|
+
api: IcureApi;
|
|
23
|
+
credentials: UserDetails;
|
|
24
|
+
user: User;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function createNewPatientApi(env: TestVars): Promise<{
|
|
27
|
+
api: IcureApi;
|
|
28
|
+
credentials: UserDetails;
|
|
29
|
+
user: User;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a hierarchy of HCPs with the following structure:
|
|
33
|
+
* grand HCP -+-> parent HCP ---> child HCP
|
|
34
|
+
* |
|
|
35
|
+
* +-> child2 HCP
|
|
36
|
+
*/
|
|
37
|
+
export declare function createHcpHierarchyApis(env: TestVars, setupAutodelegations?: boolean, disableParentKeysInitialisation?: boolean): Promise<{
|
|
38
|
+
grandApi: IcureApi;
|
|
39
|
+
grandUser: User;
|
|
40
|
+
grandCredentials: UserDetails;
|
|
41
|
+
parentApi: IcureApi;
|
|
42
|
+
parentUser: User;
|
|
43
|
+
parentCredentials: UserDetails;
|
|
44
|
+
childApi: IcureApi;
|
|
45
|
+
childUser: User;
|
|
46
|
+
childCredentials: UserDetails;
|
|
47
|
+
child2Api: IcureApi;
|
|
48
|
+
child2User: User;
|
|
49
|
+
child2Credentials: UserDetails;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Create a parent HCP with a key and a child HCP without any initialised key
|
|
53
|
+
*/
|
|
54
|
+
export declare function createNewHcpWithoutKeyAndParentWithKey(env: TestVars, props?: {
|
|
55
|
+
initialiseEmptyKeyForChild?: boolean;
|
|
56
|
+
}): Promise<{
|
|
57
|
+
parentCredentials: UserDetails;
|
|
58
|
+
childUser: string;
|
|
59
|
+
childDataOwnerId: string;
|
|
60
|
+
childPassword: string;
|
|
61
|
+
}>;
|
|
62
|
+
export type UserInManyGroupsDetails = {
|
|
63
|
+
user1: User;
|
|
64
|
+
user2: User;
|
|
65
|
+
group3: Group;
|
|
66
|
+
userPw3: string;
|
|
67
|
+
user3: User;
|
|
68
|
+
group2: Group;
|
|
69
|
+
group1: Group;
|
|
70
|
+
userPw12: string;
|
|
71
|
+
userLogin: string;
|
|
72
|
+
};
|
|
73
|
+
export declare function createUserInMultipleGroups(env: TestVars): Promise<UserInManyGroupsDetails>;
|
|
74
|
+
export declare function isLiteTest(): boolean;
|
|
75
|
+
export declare function describeNoLite(title: string, fn: (this: Suite) => void): Suite | void;
|
|
76
|
+
export declare function itNoLite(title: string, fn: (this: Context) => PromiseLike<any>): Test;
|