@icure/api 8.0.23 → 8.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/icc-x-api/auth/JwtAuthService.js +11 -0
  2. package/icc-x-api/auth/JwtAuthService.js.map +1 -1
  3. package/icc-x-api/auth/JwtBridgedAuthService.js +17 -0
  4. package/icc-x-api/auth/JwtBridgedAuthService.js.map +1 -1
  5. package/icc-x-api/auth/JwtError.d.ts +7 -0
  6. package/icc-x-api/auth/JwtError.js +14 -0
  7. package/icc-x-api/auth/JwtError.js.map +1 -0
  8. package/icc-x-api/crypto/AES.d.ts +54 -2
  9. package/icc-x-api/crypto/AES.js +5 -5
  10. package/icc-x-api/crypto/AES.js.map +1 -1
  11. package/icc-x-api/crypto/CryptoPrimitives.d.ts +21 -12
  12. package/icc-x-api/crypto/CryptoPrimitives.js +8 -19
  13. package/icc-x-api/crypto/CryptoPrimitives.js.map +1 -1
  14. package/icc-x-api/crypto/DelegationsDeAnonymization.js +1 -1
  15. package/icc-x-api/crypto/DelegationsDeAnonymization.js.map +1 -1
  16. package/icc-x-api/crypto/HMACUtils.d.ts +8 -1
  17. package/icc-x-api/crypto/HMACUtils.js +3 -3
  18. package/icc-x-api/crypto/HMACUtils.js.map +1 -1
  19. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.d.ts +113 -0
  20. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js +477 -0
  21. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js.map +1 -0
  22. package/icc-x-api/crypto/RSA.d.ts +107 -4
  23. package/icc-x-api/crypto/RSA.js +4 -4
  24. package/icc-x-api/crypto/RSA.js.map +1 -1
  25. package/icc-x-api/crypto/TransferKeysManager.js +6 -1
  26. package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
  27. package/icc-x-api/crypto/shamir.d.ts +7 -3
  28. package/icc-x-api/crypto/shamir.js +14 -5
  29. package/icc-x-api/crypto/shamir.js.map +1 -1
  30. package/icc-x-api/index.d.ts +1 -0
  31. package/icc-x-api/index.js +5 -3
  32. package/icc-x-api/index.js.map +1 -1
  33. package/package.json +1 -1
  34. package/test/icc-api/api/IccMedicalLocationApi.js +6 -6
  35. package/test/icc-api/api/IccMedicalLocationApi.js.map +1 -1
  36. package/test/icc-x-api/auth/jwt-provider-test.d.ts +1 -0
  37. package/test/icc-x-api/auth/jwt-provider-test.js +138 -0
  38. package/test/icc-x-api/auth/jwt-provider-test.js.map +1 -0
  39. package/test/icc-x-api/crud/comprehensive-crud-test.js +1 -1
  40. package/test/icc-x-api/crud/comprehensive-crud-test.js.map +1 -1
  41. package/test/icc-x-api/crud/entities-crud-test-interface.js +1 -0
  42. package/test/icc-x-api/crud/entities-crud-test-interface.js.map +1 -1
  43. package/test/icc-x-api/crypto/anonymous-delegations-test.js +1 -2
  44. package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +1 -1
  45. package/test/icc-x-api/crypto/crypto-utils.js +1 -2
  46. package/test/icc-x-api/crypto/crypto-utils.js.map +1 -1
  47. package/test/icc-x-api/crypto/exchange-data-manager-test.js +1 -1
  48. package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +1 -1
  49. package/test/icc-x-api/crypto/full-crypto-test.js +1 -2
  50. package/test/icc-x-api/crypto/full-crypto-test.js.map +1 -1
  51. package/test/icc-x-api/crypto/secure-delegations-manager-test.js +1 -1
  52. package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +1 -1
  53. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js +2 -2
  54. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js.map +1 -1
  55. package/test/icc-x-api/crypto/shamir.js +6 -7
  56. package/test/icc-x-api/crypto/shamir.js.map +1 -1
  57. package/test/icc-x-api/crypto/signature-keys-manager-test.js +1 -1
  58. package/test/icc-x-api/crypto/signature-keys-manager-test.js.map +1 -1
  59. package/test/icc-x-api/icc-maintenance-task-x-api-test.js +3 -2
  60. package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +1 -1
  61. package/test/icc-x-api/icc-user-x-api-test.js +1 -1
  62. package/test/icc-x-api/icc-user-x-api-test.js.map +1 -1
  63. package/test/icc-x-api/patient-user.js +1 -2
  64. package/test/icc-x-api/patient-user.js.map +1 -1
  65. package/test/icc-x-api/test-legacy-data-support.js +2 -3
  66. package/test/icc-x-api/test-legacy-data-support.js.map +1 -1
  67. package/test/utils/FakeDataOwnerApi.js +1 -1
  68. package/test/utils/FakeDataOwnerApi.js.map +1 -1
  69. package/test/utils/FakeGenericApi.js +1 -1
  70. package/test/utils/FakeGenericApi.js.map +1 -1
  71. package/test/utils/TestApi.js +1 -1
  72. package/test/utils/TestApi.js.map +1 -1
  73. package/test/utils/TestCryptoStrategies.js +1 -1
  74. package/test/utils/TestCryptoStrategies.js.map +1 -1
  75. package/test/utils/test_utils.js +6 -6
  76. package/test/utils/test_utils.js.map +1 -1
  77. package/test/icc-api/api/IccArticleApi.d.ts +0 -1
  78. package/test/icc-api/api/IccArticleApi.js +0 -64
  79. package/test/icc-api/api/IccArticleApi.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"test_utils.js","sourceRoot":"","sources":["../../../test/utils/test_utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BasicApis,\n BasicAuthenticationProvider,\n CryptoPrimitives,\n hex2ua,\n IcureApi,\n IcureApiOptions,\n retry,\n RSAUtils,\n ShaVersion,\n ua2hex,\n} from '../../icc-x-api'\nimport { tmpdir } from 'os'\nimport { TextDecoder, TextEncoder } from 'util'\nimport { v4 as uuid } from 'uuid'\nimport { webcrypto } from 'crypto'\nimport { TestApi } from './TestApi'\nimport { IcureApi as TestSetupApi } from '@icure/api'\nimport { testStorageWithKeys } from './TestStorage'\nimport { TestCryptoStrategies } from './TestCryptoStrategies'\nimport { User } from '../../icc-api/model/User'\nimport { TestEnvironmentBuilder } from '@icure/test-setup/builder'\nimport { getEnvVariables, TestVars, UserDetails } from '@icure/test-setup/types'\nimport { EnvInitializer } from '@icure/test-setup/decorators'\nimport 'isomorphic-fetch'\nimport { createPatientUser } from '@icure/test-setup/creation'\nimport { IccUserApi } from '../../icc-api'\nimport { Context, describe, Suite, Test } from 'mocha'\nimport { Group } from '../../icc-api/model/Group'\n\nexport function getTempEmail(): string {\n return `${uuid().substring(0, 8)}@icure.com`\n}\n\nexport function setLocalStorage(fetch: (input: RequestInfo, init?: RequestInit) => Promise<Response>) {\n ;(global as any).localStorage = new (require('node-localstorage').LocalStorage)(tmpdir(), 5 * 1024 ** 3)\n ;(global as any).fetch = fetch\n ;(global as any).Storage = ''\n ;(global as any).TextDecoder = TextDecoder\n ;(global as any).TextEncoder = TextEncoder\n ;(global as any).headers = Headers\n}\n\nexport const hcp1Username = process.env.ICURE_TS_TEST_HCP_USER ?? getTempEmail()\nexport const hcp2Username = process.env.ICURE_TS_TEST_HCP_2_USER ?? getTempEmail()\nexport const hcp3Username = process.env.ICURE_TS_TEST_HCP_3_USER ?? getTempEmail()\nexport const patUsername = process.env.ICURE_TS_TEST_PAT_USER ?? getTempEmail()\n\nexport const deviceUsername = getTempEmail()\n\nlet cachedInitializer: EnvInitializer | undefined\n\nexport async function getEnvironmentInitializer(): Promise<EnvInitializer> {\n if (!cachedInitializer) {\n const env = getEnvVariables()\n const scratchDir = 'test/scratch'\n const baseEnvironment =\n env.testEnvironment === 'docker' || env.testEnvironment === 'oss'\n ? new TestEnvironmentBuilder().setUpDockerEnvironment(scratchDir, ['mock'])\n : new TestEnvironmentBuilder()\n cachedInitializer = await baseEnvironment\n .withGroup(fetch, {\n patient: ['BASIC_USER', 'BASIC_DATA_OWNER'],\n hcp: [\n 'BASIC_USER',\n 'BASIC_DATA_OWNER',\n 'PATIENT_USER_MANAGER',\n 'HIERARCHICAL_DATA_OWNER',\n 'TOPIC_MANAGER',\n 'TOPIC_PARTICIPANT',\n 'LEGACY_MESSAGE_MANAGER',\n ],\n device: ['BASIC_USER', 'BASIC_DATA_OWNER'],\n user: ['BASIC_USER'],\n })\n .withMasterUser(fetch)\n .addHcp({ login: hcp1Username })\n .addHcp({ login: hcp2Username })\n .addHcp({ login: hcp3Username })\n .addPatient({ login: patUsername })\n .addDevice({ login: deviceUsername })\n .withSafeguard()\n .withEnvironmentSummary()\n .build()\n }\n return cachedInitializer\n}\n\nexport namespace TestUtils {\n export async function initApi(envVars: TestVars, userName: string = hcp1Username, options?: IcureApiOptions): Promise<IcureApi> {\n return await getApiAndAddPrivateKeysForUser(envVars.iCureUrl, envVars.dataOwnerDetails[userName], options)\n }\n\n export async function initMasterApi(envVars: TestVars, options?: IcureApiOptions): Promise<IcureApi> {\n return await getApiAndAddPrivateKeysForUser(envVars.iCureUrl, envVars.masterHcp!, options)\n }\n}\n\nexport async function getApiAndAddPrivateKeysForUser(iCureUrl: string, details: UserDetails, options?: IcureApiOptions) {\n const RSA = new RSAUtils(webcrypto as any)\n const keys = {\n publicKey: await RSA.importKey('spki', hex2ua(details.publicKey), ['encrypt'], ShaVersion.Sha1),\n privateKey: await RSA.importKey('pkcs8', hex2ua(details.privateKey), ['decrypt'], ShaVersion.Sha1),\n }\n return await TestApi(iCureUrl, details.user, details.password, webcrypto as any, keys, options)\n}\n\nasync function createHealthcarePartyUser(\n api: TestSetupApi,\n userLogin: string,\n userToken: string,\n publicKey?: string,\n privateKey?: string\n): Promise<UserDetails> {\n const { publicKey: newPublicKey, privateKey: newPrivateKey } = await api.cryptoApi.RSA.generateKeyPair()\n\n const publicKeyHex = !!publicKey && !!privateKey ? publicKey : ua2hex(await api.cryptoApi.RSA.exportKey(newPublicKey, 'spki'))\n const privateKeyHex = !!publicKey && !!privateKey ? privateKey : ua2hex(await api.cryptoApi.RSA.exportKey(newPrivateKey, 'pkcs8'))\n\n const hcp = await api.healthcarePartyApi.createHealthcareParty({\n id: uuid(),\n firstName: uuid().substring(0, 6),\n lastName: uuid().substring(0, 6),\n publicKey: publicKeyHex,\n })\n const hcpUser = await api.userApi.createUser(\n new User({\n id: uuid(),\n name: userLogin,\n login: userLogin,\n email: userLogin,\n healthcarePartyId: hcp.id,\n })\n )\n const token = await api.userApi.getToken(hcpUser.id!, uuid(), 24 * 60 * 60, userToken)\n return {\n user: hcpUser.login!,\n dataOwnerId: hcp.id!,\n password: token,\n publicKey: publicKeyHex,\n privateKey: privateKeyHex,\n }\n}\n\nexport async function createNewHcpApi(env: TestVars): Promise<{\n api: IcureApi\n credentials: UserDetails\n user: User\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitives(webcrypto as any)\n const credentials = await createHealthcarePartyUser(initialisationApi, `user-${primitives.randomUuid()}`, primitives.randomUuid())\n const storage = await testStorageWithKeys([\n {\n dataOwnerId: credentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: credentials.privateKey, publicKey: credentials.publicKey }, shaVersion: ShaVersion.Sha1 }],\n },\n ])\n const api = await IcureApi.initialise(\n env.iCureUrl,\n { username: credentials.user, password: credentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: storage.storage,\n keyStorage: storage.keyStorage,\n entryKeysFactory: storage.keyFactory,\n }\n )\n return { api, credentials, user: await api.userApi.getCurrentUser() }\n}\n\nexport async function createNewPatientApi(env: TestVars): Promise<{\n api: IcureApi\n credentials: UserDetails\n user: User\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitives(webcrypto as any)\n const credentials = await createPatientUser(initialisationApi, `user-${primitives.randomUuid()}`, primitives.randomUuid())\n const storage = await testStorageWithKeys([\n {\n dataOwnerId: credentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: credentials.privateKey, publicKey: credentials.publicKey }, shaVersion: ShaVersion.Sha1 }],\n },\n ])\n const api = await IcureApi.initialise(\n env.iCureUrl,\n { username: credentials.user, password: credentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: storage.storage,\n keyStorage: storage.keyStorage,\n entryKeysFactory: storage.keyFactory,\n }\n )\n return { api, credentials, user: await api.userApi.getCurrentUser() }\n}\n\n/**\n * Creates a hierarchy of HCPs with the following structure:\n * grand HCP -+-> parent HCP ---> child HCP\n * |\n * +-> child2 HCP\n */\nexport async function createHcpHierarchyApis(\n env: TestVars,\n setupAutodelegations: boolean = true,\n disableParentKeysInitialisation: boolean = false\n): Promise<{\n grandApi: IcureApi\n grandUser: User\n grandCredentials: UserDetails\n parentApi: IcureApi\n parentUser: User\n parentCredentials: UserDetails\n childApi: IcureApi\n childUser: User\n childCredentials: UserDetails\n child2Api: IcureApi\n child2User: User\n child2Credentials: UserDetails\n}> {\n const shaVersion = ShaVersion.Sha1\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitives(webcrypto as any)\n const grandCredentials = await createHealthcarePartyUser(initialisationApi, `grand-${primitives.randomUuid()}`, primitives.randomUuid())\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}`, primitives.randomUuid())\n const childCredentials = await createHealthcarePartyUser(initialisationApi, `child-${primitives.randomUuid()}`, primitives.randomUuid())\n const child2Credentials = await createHealthcarePartyUser(initialisationApi, `child2-${primitives.randomUuid()}`, primitives.randomUuid())\n await initialisationApi.healthcarePartyApi.modifyHealthcareParty({\n ...(await initialisationApi.healthcarePartyApi.getHealthcareParty(parentCredentials.dataOwnerId)),\n parentId: grandCredentials.dataOwnerId,\n })\n await initialisationApi.healthcarePartyApi.modifyHealthcareParty({\n ...(await initialisationApi.healthcarePartyApi.getHealthcareParty(childCredentials.dataOwnerId)),\n parentId: parentCredentials.dataOwnerId,\n })\n await initialisationApi.healthcarePartyApi.modifyHealthcareParty({\n ...(await initialisationApi.healthcarePartyApi.getHealthcareParty(child2Credentials.dataOwnerId)),\n parentId: grandCredentials.dataOwnerId,\n })\n const grandStorage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const grandApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: grandCredentials.user, password: grandCredentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: grandStorage.storage,\n keyStorage: grandStorage.keyStorage,\n entryKeysFactory: grandStorage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const parentStorage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: parentCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: parentCredentials.privateKey, publicKey: parentCredentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const parentApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: parentCredentials.user, password: parentCredentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: parentStorage.storage,\n keyStorage: parentStorage.keyStorage,\n entryKeysFactory: parentStorage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const parentUser = setupAutodelegations\n ? await parentApi.userApi.modifyUser({\n ...(await parentApi.userApi.getCurrentUser()),\n autoDelegations: { all: [grandCredentials.dataOwnerId] },\n })\n : await parentApi.userApi.getCurrentUser()\n const childStorage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: parentCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: parentCredentials.privateKey, publicKey: parentCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: childCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: childCredentials.privateKey, publicKey: childCredentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const childApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: childCredentials.user, password: childCredentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: childStorage.storage,\n keyStorage: childStorage.keyStorage,\n entryKeysFactory: childStorage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const childUser = setupAutodelegations\n ? await childApi.userApi.modifyUser({\n ...(await childApi.userApi.getCurrentUser()),\n autoDelegations: { all: [grandCredentials.dataOwnerId, parentCredentials.dataOwnerId] },\n })\n : await childApi.userApi.getCurrentUser()\n const child2Storage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: child2Credentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: child2Credentials.privateKey, publicKey: child2Credentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const child2Api = await IcureApi.initialise(\n env.iCureUrl,\n { username: child2Credentials.user, password: child2Credentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: child2Storage.storage,\n keyStorage: child2Storage.keyStorage,\n entryKeysFactory: child2Storage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const child2User = setupAutodelegations\n ? await child2Api.userApi.modifyUser({\n ...(await child2Api.userApi.getCurrentUser()),\n autoDelegations: { all: [grandCredentials.dataOwnerId] },\n })\n : await child2Api.userApi.getCurrentUser()\n return {\n grandApi,\n grandUser: await grandApi.userApi.getCurrentUser(),\n grandCredentials,\n parentApi,\n parentUser,\n parentCredentials,\n childApi,\n childUser,\n childCredentials,\n child2Api,\n child2User,\n child2Credentials,\n }\n}\n\n/**\n * Create a parent HCP with a key and a child HCP without any initialised key\n */\nexport async function createNewHcpWithoutKeyAndParentWithKey(\n env: TestVars,\n props: {\n initialiseEmptyKeyForChild?: boolean\n } = {}\n): Promise<{\n parentCredentials: UserDetails\n childUser: string\n childDataOwnerId: string\n childPassword: string\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitives(webcrypto as any)\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}`, primitives.randomUuid())\n const childUser = uuid() + '@email.com'\n const childPassword = uuid()\n const childHcp = {\n id: uuid(),\n firstName: uuid().substring(0, 6),\n lastName: uuid().substring(0, 6),\n parentId: parentCredentials.dataOwnerId,\n publicKey: undefined as string | undefined,\n }\n if (props.initialiseEmptyKeyForChild) {\n childHcp.publicKey = ''\n }\n await initialisationApi.healthcarePartyApi.createHealthcareParty(childHcp)\n await initialisationApi.userApi.createUser(\n new User({\n id: uuid(),\n name: childUser,\n login: childUser,\n email: childUser,\n passwordHash: childPassword,\n healthcarePartyId: childHcp.id,\n })\n )\n return {\n parentCredentials,\n childUser,\n childPassword,\n childDataOwnerId: childHcp.id!,\n }\n}\n\nexport function testSetupMasterApi(env: TestVars): Promise<TestSetupApi> {\n return TestSetupApi.initialise(\n env.iCureUrl,\n { username: env.masterHcp!.user, password: env.masterHcp!.password },\n {\n generateNewKeyForDataOwner(): Promise<boolean> {\n return Promise.resolve(true)\n },\n recoverAndVerifySelfHierarchyKeys(): never {\n throw new Error('Unsupported')\n },\n verifyDelegatePublicKeys(delegate: any, publicKeys: string[]): Promise<string[]> {\n return Promise.resolve(publicKeys)\n },\n },\n webcrypto as any,\n fetch\n )\n}\n\nexport type UserInManyGroupsDetails = {\n user1: User\n user2: User\n group3: Group\n userPw3: string\n user3: User\n group2: Group\n group1: Group\n userPw12: string\n userLogin: string\n}\nexport async function createUserInMultipleGroups(env: TestVars): Promise<UserInManyGroupsDetails> {\n const primitives = new CryptoPrimitives(webcrypto as any)\n const userGroup1Id: string = primitives.randomUuid() // Same username-pw as group 2\n const userGroup2Id: string = primitives.randomUuid() // Same username-pw as group 1\n const userGroup3Id: string = primitives.randomUuid() // Same username as group 1/2, different pw\n const userLogin: string = `maria-${primitives.randomUuid()}@pompei.it`\n const userPw12: string = `geppetto-${primitives.randomUuid()}`\n const userPw3: string = `pinocchio-${primitives.randomUuid()}`\n const user1Id: string = primitives.randomUuid()\n const user2Id: string = primitives.randomUuid()\n const user3Id: string = primitives.randomUuid()\n const api = await BasicApis(env.iCureUrl, { username: 'john', password: 'LetMeIn' }, webcrypto as any, fetch) // pragma: allowlist secret\n const group1 = await api.groupApi.createGroup(\n userGroup1Id,\n `test-group-1-${primitives.randomUuid()}`,\n primitives.randomUuid(),\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n {}\n )\n const group2 = await api.groupApi.createGroup(\n userGroup2Id,\n `test-group-2-${primitives.randomUuid()}`,\n primitives.randomUuid(),\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n {}\n )\n const group3 = await api.groupApi.createGroup(\n userGroup3Id,\n `test-group-3-${primitives.randomUuid()}`,\n primitives.randomUuid(),\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n {}\n )\n const user1 = await api.userApi.createUserInGroup(userGroup1Id, {\n id: user1Id,\n name: userLogin,\n login: userLogin,\n email: userLogin,\n passwordHash: userPw12,\n })\n const user2 = await api.userApi.createUserInGroup(userGroup2Id, {\n id: user2Id,\n name: userLogin,\n login: userLogin,\n email: userLogin,\n passwordHash: userPw12,\n })\n const user3 = await api.userApi.createUserInGroup(userGroup3Id, {\n id: user3Id,\n name: userLogin,\n login: userLogin,\n email: userLogin,\n passwordHash: userPw3,\n })\n console.log(`Waiting for user to be created - ${userLogin}`)\n await retry(\n async () => {\n await new IccUserApi(env.iCureUrl, {}, new BasicAuthenticationProvider(`${userGroup1Id}/${user1Id}`, userPw12), fetch).getCurrentUser()\n await new IccUserApi(env.iCureUrl, {}, new BasicAuthenticationProvider(`${userGroup2Id}/${user2Id}`, userPw12), fetch).getCurrentUser()\n await new IccUserApi(env.iCureUrl, {}, new BasicAuthenticationProvider(`${userGroup3Id}/${user3Id}`, userPw3), fetch).getCurrentUser()\n },\n 10,\n 5_000,\n 1\n )\n return {\n user1,\n user2,\n user3,\n group1,\n group2,\n group3,\n userPw12,\n userPw3,\n userLogin,\n }\n}\n\nexport function isLiteTest() {\n return getEnvVariables().testEnvironment == 'oss'\n}\n\nexport function describeNoLite(title: string, fn: (this: Suite) => void): Suite | void {\n if (isLiteTest()) {\n return describe.skip(title, fn)\n } else {\n return describe(title, fn)\n }\n}\n\nexport function itNoLite(title: string, fn: (this: Context) => PromiseLike<any>): Test {\n if (isLiteTest()) {\n return it.skip(title, fn)\n } else {\n return it(title, fn)\n }\n}\n"]}
1
+ {"version":3,"file":"test_utils.js","sourceRoot":"","sources":["../../../test/utils/test_utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BasicApis,\n BasicAuthenticationProvider,\n CryptoPrimitives,\n CryptoPrimitivesImpl,\n hex2ua,\n IcureApi,\n IcureApiOptions,\n retry,\n RSAUtils,\n RSAUtilsImpl,\n ShaVersion,\n ua2hex,\n} from '../../icc-x-api'\nimport { tmpdir } from 'os'\nimport { TextDecoder, TextEncoder } from 'util'\nimport { v4 as uuid } from 'uuid'\nimport { webcrypto } from 'crypto'\nimport { TestApi } from './TestApi'\nimport { IcureApi as TestSetupApi } from '@icure/api'\nimport { testStorageWithKeys } from './TestStorage'\nimport { TestCryptoStrategies } from './TestCryptoStrategies'\nimport { User } from '../../icc-api/model/User'\nimport { TestEnvironmentBuilder } from '@icure/test-setup/builder'\nimport { getEnvVariables, TestVars, UserDetails } from '@icure/test-setup/types'\nimport { EnvInitializer } from '@icure/test-setup/decorators'\nimport 'isomorphic-fetch'\nimport { createPatientUser } from '@icure/test-setup/creation'\nimport { IccUserApi } from '../../icc-api'\nimport { Context, describe, Suite, Test } from 'mocha'\nimport { Group } from '../../icc-api/model/Group'\n\nexport function getTempEmail(): string {\n return `${uuid().substring(0, 8)}@icure.com`\n}\n\nexport function setLocalStorage(fetch: (input: RequestInfo, init?: RequestInit) => Promise<Response>) {\n ;(global as any).localStorage = new (require('node-localstorage').LocalStorage)(tmpdir(), 5 * 1024 ** 3)\n ;(global as any).fetch = fetch\n ;(global as any).Storage = ''\n ;(global as any).TextDecoder = TextDecoder\n ;(global as any).TextEncoder = TextEncoder\n ;(global as any).headers = Headers\n}\n\nexport const hcp1Username = process.env.ICURE_TS_TEST_HCP_USER ?? getTempEmail()\nexport const hcp2Username = process.env.ICURE_TS_TEST_HCP_2_USER ?? getTempEmail()\nexport const hcp3Username = process.env.ICURE_TS_TEST_HCP_3_USER ?? getTempEmail()\nexport const patUsername = process.env.ICURE_TS_TEST_PAT_USER ?? getTempEmail()\n\nexport const deviceUsername = getTempEmail()\n\nlet cachedInitializer: EnvInitializer | undefined\n\nexport async function getEnvironmentInitializer(): Promise<EnvInitializer> {\n if (!cachedInitializer) {\n const env = getEnvVariables()\n const scratchDir = 'test/scratch'\n const baseEnvironment =\n env.testEnvironment === 'docker' || env.testEnvironment === 'oss'\n ? new TestEnvironmentBuilder().setUpDockerEnvironment(scratchDir, ['mock'])\n : new TestEnvironmentBuilder()\n cachedInitializer = await baseEnvironment\n .withGroup(fetch, {\n patient: ['BASIC_USER', 'BASIC_DATA_OWNER'],\n hcp: [\n 'BASIC_USER',\n 'BASIC_DATA_OWNER',\n 'PATIENT_USER_MANAGER',\n 'HIERARCHICAL_DATA_OWNER',\n 'TOPIC_MANAGER',\n 'TOPIC_PARTICIPANT',\n 'LEGACY_MESSAGE_MANAGER',\n ],\n device: ['BASIC_USER', 'BASIC_DATA_OWNER'],\n user: ['BASIC_USER'],\n })\n .withMasterUser(fetch)\n .addHcp({ login: hcp1Username })\n .addHcp({ login: hcp2Username })\n .addHcp({ login: hcp3Username })\n .addPatient({ login: patUsername })\n .addDevice({ login: deviceUsername })\n .withSafeguard()\n .withEnvironmentSummary()\n .build()\n }\n return cachedInitializer\n}\n\nexport namespace TestUtils {\n export async function initApi(envVars: TestVars, userName: string = hcp1Username, options?: IcureApiOptions): Promise<IcureApi> {\n return await getApiAndAddPrivateKeysForUser(envVars.iCureUrl, envVars.dataOwnerDetails[userName], options)\n }\n\n export async function initMasterApi(envVars: TestVars, options?: IcureApiOptions): Promise<IcureApi> {\n return await getApiAndAddPrivateKeysForUser(envVars.iCureUrl, envVars.masterHcp!, options)\n }\n}\n\nexport async function getApiAndAddPrivateKeysForUser(iCureUrl: string, details: UserDetails, options?: IcureApiOptions) {\n const RSA = new RSAUtilsImpl(webcrypto as any)\n const keys = {\n publicKey: await RSA.importKey('spki', hex2ua(details.publicKey), ['encrypt'], ShaVersion.Sha1),\n privateKey: await RSA.importKey('pkcs8', hex2ua(details.privateKey), ['decrypt'], ShaVersion.Sha1),\n }\n return await TestApi(iCureUrl, details.user, details.password, webcrypto as any, keys, options)\n}\n\nasync function createHealthcarePartyUser(\n api: TestSetupApi,\n userLogin: string,\n userToken: string,\n publicKey?: string,\n privateKey?: string\n): Promise<UserDetails> {\n const { publicKey: newPublicKey, privateKey: newPrivateKey } = await api.cryptoApi.RSA.generateKeyPair()\n\n const publicKeyHex = !!publicKey && !!privateKey ? publicKey : ua2hex(await api.cryptoApi.RSA.exportKey(newPublicKey, 'spki'))\n const privateKeyHex = !!publicKey && !!privateKey ? privateKey : ua2hex(await api.cryptoApi.RSA.exportKey(newPrivateKey, 'pkcs8'))\n\n const hcp = await api.healthcarePartyApi.createHealthcareParty({\n id: uuid(),\n firstName: uuid().substring(0, 6),\n lastName: uuid().substring(0, 6),\n publicKey: publicKeyHex,\n })\n const hcpUser = await api.userApi.createUser(\n new User({\n id: uuid(),\n name: userLogin,\n login: userLogin,\n email: userLogin,\n healthcarePartyId: hcp.id,\n })\n )\n const token = await api.userApi.getToken(hcpUser.id!, uuid(), 24 * 60 * 60, userToken)\n return {\n user: hcpUser.login!,\n dataOwnerId: hcp.id!,\n password: token,\n publicKey: publicKeyHex,\n privateKey: privateKeyHex,\n }\n}\n\nexport async function createNewHcpApi(env: TestVars): Promise<{\n api: IcureApi\n credentials: UserDetails\n user: User\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitivesImpl(webcrypto as any)\n const credentials = await createHealthcarePartyUser(initialisationApi, `user-${primitives.randomUuid()}`, primitives.randomUuid())\n const storage = await testStorageWithKeys([\n {\n dataOwnerId: credentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: credentials.privateKey, publicKey: credentials.publicKey }, shaVersion: ShaVersion.Sha1 }],\n },\n ])\n const api = await IcureApi.initialise(\n env.iCureUrl,\n { username: credentials.user, password: credentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: storage.storage,\n keyStorage: storage.keyStorage,\n entryKeysFactory: storage.keyFactory,\n }\n )\n return { api, credentials, user: await api.userApi.getCurrentUser() }\n}\n\nexport async function createNewPatientApi(env: TestVars): Promise<{\n api: IcureApi\n credentials: UserDetails\n user: User\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitivesImpl(webcrypto as any)\n const credentials = await createPatientUser(initialisationApi, `user-${primitives.randomUuid()}`, primitives.randomUuid())\n const storage = await testStorageWithKeys([\n {\n dataOwnerId: credentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: credentials.privateKey, publicKey: credentials.publicKey }, shaVersion: ShaVersion.Sha1 }],\n },\n ])\n const api = await IcureApi.initialise(\n env.iCureUrl,\n { username: credentials.user, password: credentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: storage.storage,\n keyStorage: storage.keyStorage,\n entryKeysFactory: storage.keyFactory,\n }\n )\n return { api, credentials, user: await api.userApi.getCurrentUser() }\n}\n\n/**\n * Creates a hierarchy of HCPs with the following structure:\n * grand HCP -+-> parent HCP ---> child HCP\n * |\n * +-> child2 HCP\n */\nexport async function createHcpHierarchyApis(\n env: TestVars,\n setupAutodelegations: boolean = true,\n disableParentKeysInitialisation: boolean = false\n): Promise<{\n grandApi: IcureApi\n grandUser: User\n grandCredentials: UserDetails\n parentApi: IcureApi\n parentUser: User\n parentCredentials: UserDetails\n childApi: IcureApi\n childUser: User\n childCredentials: UserDetails\n child2Api: IcureApi\n child2User: User\n child2Credentials: UserDetails\n}> {\n const shaVersion = ShaVersion.Sha1\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitivesImpl(webcrypto as any)\n const grandCredentials = await createHealthcarePartyUser(initialisationApi, `grand-${primitives.randomUuid()}`, primitives.randomUuid())\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}`, primitives.randomUuid())\n const childCredentials = await createHealthcarePartyUser(initialisationApi, `child-${primitives.randomUuid()}`, primitives.randomUuid())\n const child2Credentials = await createHealthcarePartyUser(initialisationApi, `child2-${primitives.randomUuid()}`, primitives.randomUuid())\n await initialisationApi.healthcarePartyApi.modifyHealthcareParty({\n ...(await initialisationApi.healthcarePartyApi.getHealthcareParty(parentCredentials.dataOwnerId)),\n parentId: grandCredentials.dataOwnerId,\n })\n await initialisationApi.healthcarePartyApi.modifyHealthcareParty({\n ...(await initialisationApi.healthcarePartyApi.getHealthcareParty(childCredentials.dataOwnerId)),\n parentId: parentCredentials.dataOwnerId,\n })\n await initialisationApi.healthcarePartyApi.modifyHealthcareParty({\n ...(await initialisationApi.healthcarePartyApi.getHealthcareParty(child2Credentials.dataOwnerId)),\n parentId: grandCredentials.dataOwnerId,\n })\n const grandStorage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const grandApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: grandCredentials.user, password: grandCredentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: grandStorage.storage,\n keyStorage: grandStorage.keyStorage,\n entryKeysFactory: grandStorage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const parentStorage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: parentCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: parentCredentials.privateKey, publicKey: parentCredentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const parentApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: parentCredentials.user, password: parentCredentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: parentStorage.storage,\n keyStorage: parentStorage.keyStorage,\n entryKeysFactory: parentStorage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const parentUser = setupAutodelegations\n ? await parentApi.userApi.modifyUser({\n ...(await parentApi.userApi.getCurrentUser()),\n autoDelegations: { all: [grandCredentials.dataOwnerId] },\n })\n : await parentApi.userApi.getCurrentUser()\n const childStorage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: parentCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: parentCredentials.privateKey, publicKey: parentCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: childCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: childCredentials.privateKey, publicKey: childCredentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const childApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: childCredentials.user, password: childCredentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: childStorage.storage,\n keyStorage: childStorage.keyStorage,\n entryKeysFactory: childStorage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const childUser = setupAutodelegations\n ? await childApi.userApi.modifyUser({\n ...(await childApi.userApi.getCurrentUser()),\n autoDelegations: { all: [grandCredentials.dataOwnerId, parentCredentials.dataOwnerId] },\n })\n : await childApi.userApi.getCurrentUser()\n const child2Storage = await testStorageWithKeys([\n {\n dataOwnerId: grandCredentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: grandCredentials.privateKey, publicKey: grandCredentials.publicKey }, shaVersion: shaVersion }],\n },\n {\n dataOwnerId: child2Credentials.dataOwnerId,\n pairs: [{ keyPair: { privateKey: child2Credentials.privateKey, publicKey: child2Credentials.publicKey }, shaVersion: shaVersion }],\n },\n ])\n const child2Api = await IcureApi.initialise(\n env.iCureUrl,\n { username: child2Credentials.user, password: child2Credentials.password },\n new TestCryptoStrategies(),\n webcrypto as any,\n fetch,\n {\n storage: child2Storage.storage,\n keyStorage: child2Storage.keyStorage,\n entryKeysFactory: child2Storage.keyFactory,\n disableParentKeysInitialisation,\n }\n )\n const child2User = setupAutodelegations\n ? await child2Api.userApi.modifyUser({\n ...(await child2Api.userApi.getCurrentUser()),\n autoDelegations: { all: [grandCredentials.dataOwnerId] },\n })\n : await child2Api.userApi.getCurrentUser()\n return {\n grandApi,\n grandUser: await grandApi.userApi.getCurrentUser(),\n grandCredentials,\n parentApi,\n parentUser,\n parentCredentials,\n childApi,\n childUser,\n childCredentials,\n child2Api,\n child2User,\n child2Credentials,\n }\n}\n\n/**\n * Create a parent HCP with a key and a child HCP without any initialised key\n */\nexport async function createNewHcpWithoutKeyAndParentWithKey(\n env: TestVars,\n props: {\n initialiseEmptyKeyForChild?: boolean\n } = {}\n): Promise<{\n parentCredentials: UserDetails\n childUser: string\n childDataOwnerId: string\n childPassword: string\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new CryptoPrimitivesImpl(webcrypto as any)\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}`, primitives.randomUuid())\n const childUser = uuid() + '@email.com'\n const childPassword = uuid()\n const childHcp = {\n id: uuid(),\n firstName: uuid().substring(0, 6),\n lastName: uuid().substring(0, 6),\n parentId: parentCredentials.dataOwnerId,\n publicKey: undefined as string | undefined,\n }\n if (props.initialiseEmptyKeyForChild) {\n childHcp.publicKey = ''\n }\n await initialisationApi.healthcarePartyApi.createHealthcareParty(childHcp)\n await initialisationApi.userApi.createUser(\n new User({\n id: uuid(),\n name: childUser,\n login: childUser,\n email: childUser,\n passwordHash: childPassword,\n healthcarePartyId: childHcp.id,\n })\n )\n return {\n parentCredentials,\n childUser,\n childPassword,\n childDataOwnerId: childHcp.id!,\n }\n}\n\nexport function testSetupMasterApi(env: TestVars): Promise<TestSetupApi> {\n return TestSetupApi.initialise(\n env.iCureUrl,\n { username: env.masterHcp!.user, password: env.masterHcp!.password },\n {\n generateNewKeyForDataOwner(): Promise<boolean> {\n return Promise.resolve(true)\n },\n recoverAndVerifySelfHierarchyKeys(): never {\n throw new Error('Unsupported')\n },\n verifyDelegatePublicKeys(delegate: any, publicKeys: string[]): Promise<string[]> {\n return Promise.resolve(publicKeys)\n },\n },\n webcrypto as any,\n fetch\n )\n}\n\nexport type UserInManyGroupsDetails = {\n user1: User\n user2: User\n group3: Group\n userPw3: string\n user3: User\n group2: Group\n group1: Group\n userPw12: string\n userLogin: string\n}\nexport async function createUserInMultipleGroups(env: TestVars): Promise<UserInManyGroupsDetails> {\n const primitives = new CryptoPrimitivesImpl(webcrypto as any)\n const userGroup1Id: string = primitives.randomUuid() // Same username-pw as group 2\n const userGroup2Id: string = primitives.randomUuid() // Same username-pw as group 1\n const userGroup3Id: string = primitives.randomUuid() // Same username as group 1/2, different pw\n const userLogin: string = `maria-${primitives.randomUuid()}@pompei.it`\n const userPw12: string = `geppetto-${primitives.randomUuid()}`\n const userPw3: string = `pinocchio-${primitives.randomUuid()}`\n const user1Id: string = primitives.randomUuid()\n const user2Id: string = primitives.randomUuid()\n const user3Id: string = primitives.randomUuid()\n const api = await BasicApis(env.iCureUrl, { username: 'john', password: 'LetMeIn' }, webcrypto as any, fetch) // pragma: allowlist secret\n const group1 = await api.groupApi.createGroup(\n userGroup1Id,\n `test-group-1-${primitives.randomUuid()}`,\n primitives.randomUuid(),\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n {}\n )\n const group2 = await api.groupApi.createGroup(\n userGroup2Id,\n `test-group-2-${primitives.randomUuid()}`,\n primitives.randomUuid(),\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n {}\n )\n const group3 = await api.groupApi.createGroup(\n userGroup3Id,\n `test-group-3-${primitives.randomUuid()}`,\n primitives.randomUuid(),\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n {}\n )\n const user1 = await api.userApi.createUserInGroup(userGroup1Id, {\n id: user1Id,\n name: userLogin,\n login: userLogin,\n email: userLogin,\n passwordHash: userPw12,\n })\n const user2 = await api.userApi.createUserInGroup(userGroup2Id, {\n id: user2Id,\n name: userLogin,\n login: userLogin,\n email: userLogin,\n passwordHash: userPw12,\n })\n const user3 = await api.userApi.createUserInGroup(userGroup3Id, {\n id: user3Id,\n name: userLogin,\n login: userLogin,\n email: userLogin,\n passwordHash: userPw3,\n })\n console.log(`Waiting for user to be created - ${userLogin}`)\n await retry(\n async () => {\n await new IccUserApi(env.iCureUrl, {}, new BasicAuthenticationProvider(`${userGroup1Id}/${user1Id}`, userPw12), fetch).getCurrentUser()\n await new IccUserApi(env.iCureUrl, {}, new BasicAuthenticationProvider(`${userGroup2Id}/${user2Id}`, userPw12), fetch).getCurrentUser()\n await new IccUserApi(env.iCureUrl, {}, new BasicAuthenticationProvider(`${userGroup3Id}/${user3Id}`, userPw3), fetch).getCurrentUser()\n },\n 10,\n 5_000,\n 1\n )\n return {\n user1,\n user2,\n user3,\n group1,\n group2,\n group3,\n userPw12,\n userPw3,\n userLogin,\n }\n}\n\nexport function isLiteTest() {\n return getEnvVariables().testEnvironment == 'oss'\n}\n\nexport function describeNoLite(title: string, fn: (this: Suite) => void): Suite | void {\n if (isLiteTest()) {\n return describe.skip(title, fn)\n } else {\n return describe(title, fn)\n }\n}\n\nexport function itNoLite(title: string, fn: (this: Context) => PromiseLike<any>): Test {\n if (isLiteTest()) {\n return it.skip(title, fn)\n } else {\n return it(title, fn)\n }\n}\n"]}
@@ -1 +0,0 @@
1
- import 'isomorphic-fetch';
@@ -1,64 +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 crypto_1 = require("crypto");
13
- const test_utils_1 = require("../../utils/test_utils");
14
- require("isomorphic-fetch");
15
- var initMasterApi = test_utils_1.TestUtils.initMasterApi;
16
- const chai_1 = require("chai");
17
- const types_1 = require("@icure/test-setup/types");
18
- const mocha_1 = require("mocha");
19
- const Article_1 = require("../../../icc-api/model/Article");
20
- (0, test_utils_1.setLocalStorage)(fetch);
21
- let env;
22
- let api;
23
- const entities = [];
24
- (0, mocha_1.describe)('IccArticleApi', () => {
25
- before(function () {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- this.timeout(600000);
28
- const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
29
- env = yield initializer.execute((0, types_1.getEnvVariables)());
30
- api = (yield initMasterApi(env)).articleApi;
31
- for (let i = 0; i < 10; i++) {
32
- const entity = yield api.createArticle(new Article_1.Article({
33
- id: (0, crypto_1.randomUUID)(),
34
- name: (0, crypto_1.randomUUID)(),
35
- }));
36
- entities.push(entity);
37
- }
38
- });
39
- });
40
- it('Should be able of getting the Articles using the deprecated method', () => __awaiter(void 0, void 0, void 0, function* () {
41
- const page = yield api.getArticles();
42
- page.forEach((it) => {
43
- const existingEntity = entities.find((a) => a.id === it.id);
44
- (0, chai_1.expect)(existingEntity).not.to.be.undefined;
45
- (0, chai_1.expect)(it.rev).to.be.eq(existingEntity.rev);
46
- });
47
- }));
48
- it('Should be able of getting the Agendas with pagination', () => __awaiter(void 0, void 0, void 0, function* () {
49
- var _a;
50
- const firstPage = yield api.getArticlesWithPagination(undefined, 6);
51
- (0, chai_1.expect)(firstPage.nextKeyPair).not.to.be.undefined;
52
- (0, chai_1.expect)(firstPage.rows).not.to.be.undefined;
53
- const secondPage = yield api.getArticlesWithPagination((_a = firstPage.nextKeyPair) === null || _a === void 0 ? void 0 : _a.startKeyDocId, 6);
54
- (0, chai_1.expect)(secondPage.nextKeyPair).to.be.undefined;
55
- (0, chai_1.expect)(secondPage.rows).not.to.be.undefined;
56
- const rows = firstPage.rows.concat(secondPage.rows);
57
- rows.forEach((it) => {
58
- const existingEntity = entities.find((a) => a.id === it.id);
59
- (0, chai_1.expect)(existingEntity).not.to.be.undefined;
60
- (0, chai_1.expect)(it.rev).to.be.eq(existingEntity.rev);
61
- });
62
- }));
63
- });
64
- //# sourceMappingURL=IccArticleApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IccArticleApi.js","sourceRoot":"","sources":["../../../../test/icc-api/api/IccArticleApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'crypto'\nimport { getEnvironmentInitializer, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport 'isomorphic-fetch'\nimport initMasterApi = TestUtils.initMasterApi\nimport { expect } from 'chai'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { IccArticleApi } from '../../../icc-api'\nimport { describe } from 'mocha'\nimport { Article } from '../../../icc-api/model/Article'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\nlet api: IccArticleApi\nconst entities: Article[] = []\n\ndescribe('IccArticleApi', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n api = (await initMasterApi(env)).articleApi\n\n for (let i = 0; i < 10; i++) {\n const entity = await api.createArticle(\n new Article({\n id: randomUUID(),\n name: randomUUID(),\n })\n )\n entities.push(entity)\n }\n })\n\n it('Should be able of getting the Articles using the deprecated method', async () => {\n const page = await api.getArticles()\n page.forEach((it) => {\n const existingEntity = entities.find((a) => a.id === it.id)\n expect(existingEntity).not.to.be.undefined\n expect(it.rev).to.be.eq(existingEntity!!.rev!!)\n })\n })\n\n it('Should be able of getting the Agendas with pagination', async () => {\n const firstPage = await api.getArticlesWithPagination(undefined, 6)\n expect(firstPage.nextKeyPair).not.to.be.undefined\n expect(firstPage.rows).not.to.be.undefined\n\n const secondPage = await api.getArticlesWithPagination(firstPage.nextKeyPair?.startKeyDocId, 6)\n expect(secondPage.nextKeyPair).to.be.undefined\n expect(secondPage.rows).not.to.be.undefined\n\n const rows = firstPage.rows!!.concat(secondPage.rows!!)\n rows.forEach((it) => {\n const existingEntity = entities.find((a) => a.id === it.id)\n expect(existingEntity).not.to.be.undefined\n expect(it.rev).to.be.eq(existingEntity!!.rev!!)\n })\n })\n})\n"]}