@icure/api 8.6.5 → 8.6.7

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 (61) hide show
  1. package/icc-api/api/IccFormApi.d.ts +89 -0
  2. package/icc-api/api/IccFormApi.js +234 -0
  3. package/icc-api/api/IccFormApi.js.map +1 -1
  4. package/icc-x-api/icc-accesslog-x-api.d.ts +93 -0
  5. package/icc-x-api/icc-accesslog-x-api.js +93 -0
  6. package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
  7. package/icc-x-api/icc-calendar-item-x-api.d.ts +122 -0
  8. package/icc-x-api/icc-calendar-item-x-api.js +122 -0
  9. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
  10. package/icc-x-api/icc-classification-x-api.d.ts +20 -0
  11. package/icc-x-api/icc-classification-x-api.js +20 -0
  12. package/icc-x-api/icc-classification-x-api.js.map +1 -1
  13. package/icc-x-api/icc-code-x-api.d.ts +23 -0
  14. package/icc-x-api/icc-code-x-api.js +23 -0
  15. package/icc-x-api/icc-code-x-api.js.map +1 -1
  16. package/icc-x-api/icc-contact-x-api.d.ts +219 -1
  17. package/icc-x-api/icc-contact-x-api.js +219 -2
  18. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  19. package/icc-x-api/icc-data-owner-x-api.d.ts +14 -3
  20. package/icc-x-api/icc-data-owner-x-api.js +14 -3
  21. package/icc-x-api/icc-data-owner-x-api.js.map +1 -1
  22. package/icc-x-api/icc-device-x-api.d.ts +8 -0
  23. package/icc-x-api/icc-device-x-api.js +8 -0
  24. package/icc-x-api/icc-device-x-api.js.map +1 -1
  25. package/icc-x-api/icc-doctemplate-x-api.d.ts +26 -0
  26. package/icc-x-api/icc-doctemplate-x-api.js +26 -0
  27. package/icc-x-api/icc-doctemplate-x-api.js.map +1 -1
  28. package/icc-x-api/icc-document-x-api.d.ts +114 -1
  29. package/icc-x-api/icc-document-x-api.js +127 -1
  30. package/icc-x-api/icc-document-x-api.js.map +1 -1
  31. package/icc-x-api/icc-form-x-api.d.ts +34 -4
  32. package/icc-x-api/icc-form-x-api.js +34 -4
  33. package/icc-x-api/icc-form-x-api.js.map +1 -1
  34. package/icc-x-api/icc-hcparty-x-api.d.ts +67 -0
  35. package/icc-x-api/icc-hcparty-x-api.js +67 -0
  36. package/icc-x-api/icc-hcparty-x-api.js.map +1 -1
  37. package/icc-x-api/icc-helement-x-api.d.ts +141 -0
  38. package/icc-x-api/icc-helement-x-api.js +141 -0
  39. package/icc-x-api/icc-helement-x-api.js.map +1 -1
  40. package/icc-x-api/icc-invoice-x-api.d.ts +54 -0
  41. package/icc-x-api/icc-invoice-x-api.js +54 -0
  42. package/icc-x-api/icc-invoice-x-api.js.map +1 -1
  43. package/icc-x-api/icc-message-x-api.d.ts +162 -0
  44. package/icc-x-api/icc-message-x-api.js +162 -0
  45. package/icc-x-api/icc-message-x-api.js.map +1 -1
  46. package/icc-x-api/icc-patient-x-api.d.ts +245 -0
  47. package/icc-x-api/icc-patient-x-api.js +245 -1
  48. package/icc-x-api/icc-patient-x-api.js.map +1 -1
  49. package/icc-x-api/icc-receipt-x-api.d.ts +25 -0
  50. package/icc-x-api/icc-receipt-x-api.js +25 -0
  51. package/icc-x-api/icc-receipt-x-api.js.map +1 -1
  52. package/icc-x-api/icc-user-x-api.d.ts +25 -0
  53. package/icc-x-api/icc-user-x-api.js +25 -0
  54. package/icc-x-api/icc-user-x-api.js.map +1 -1
  55. package/package.json +1 -1
  56. package/test/icc-x-api/icc-form-x-api.js +316 -1
  57. package/test/icc-x-api/icc-form-x-api.js.map +1 -1
  58. package/test/utils/roles.js +5 -0
  59. package/test/utils/roles.js.map +1 -1
  60. package/test/utils/test_utils.js +1 -21
  61. package/test/utils/test_utils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"icc-form-x-api.js","sourceRoot":"","sources":["../../../test/icc-x-api/icc-form-x-api.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAAyB;AACzB,oDAAuH;AACvH,iCAA8B;AAC9B,+CAA6D;AAC7D,2CAA0C;AAC1C,yDAAqD;AAErD,mCAAmC;AACnC,mDAA+C;AAC/C,+BAAqC;AACrC,IAAO,OAAO,GAAG,sBAAS,CAAC,OAAO,CAAA;AAClC,mDAAmE;AACnE,wFAAyF;AAEzF,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAA;AACtB,IAAI,GAAa,CAAA;AAEjB,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,cAAM,EAAC;;YACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACpB,MAAM,WAAW,GAAG,MAAM,IAAA,sCAAyB,GAAE,CAAA;YACrD,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAA,uBAAe,GAAE,CAAC,CAAA;QACpD,CAAC;KAAA,CAAC,CAAA;IAEF,SAAe,aAAa,CAAC,gBAAgC,EAAE,OAAa;;YAC1E,OAAO,gBAAgB,CAAC,qBAAqB,CAC3C,OAAO,EACP,MAAM,gBAAgB,CAAC,WAAW,CAChC,OAAO,EACP,IAAI,iBAAO,CAAC;gBACV,EAAE,EAAE,IAAA,mBAAU,GAAE;gBAChB,SAAS,EAAE,MAAM;gBACjB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CACH,CACF,CAAA;QACH,CAAC;KAAA;IAED,EAAE,CAAC,MAAM,EAAE,GAAS,EAAE;QACpB,QAAQ;QACR,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,yBAAY,CAAC,CAAC,IAAI,CAAA;QACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,yBAAY,CAAC,CAAC,QAAQ,CAAA;QAE5D,MAAM,YAAY,GAAG,IAAI,oDAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAExE,MAAM,OAAO,GAAG,IAAI,uBAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,IAAW,EAAE,KAAK,CAAC,CAAA;QACnF,MAAM,OAAO,GAAG,IAAI,oBAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;QAErE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IACpD,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,aAAa,EAAE,GAAS,EAAE;QAC3B,QAAQ;QACR,MAAM,EACJ,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,kBAAkB,EAChC,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,eAAe,EAC1B,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE,QAAQ,GAClB,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,yBAAY,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAA;QACpD,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAY,CAAA;QAE3E,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC;YACpB,EAAE,EAAE,IAAA,mBAAU,GAAE;YAChB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YAC7B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YAC9B,WAAW,EAAE,OAAO,CAAC,iBAAkB;YACvC,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,OAAO,CAAC,EAAE;YAChB,OAAO,EAAE,OAAO,CAAC,EAAE;SACpB,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACvE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAE3D,MAAM,UAAU,GAAW,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAkB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAW,CAAA;QACxG,MAAM,mBAAmB,GAAW,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAW,CAAA;QAEhH,IAAA,aAAM,EAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,yBAAyB,CAAC,CAAA;QACzD,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,sCAAsC,CAAC,CAAA;QAElF,IAAA,aAAM,EAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,EAAE,oCAAoC,CAAC,CAAA;QAC7E,IAAA,aAAM,EAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,iDAAiD,CAAC,CAAA;IACxG,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAS,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAI,EAAE,yBAAY,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;QACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAI,EAAE,yBAAY,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;QACjD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAC/D,KAAK,EACL,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CACtF,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAA;QAClG,MAAM,IAAI,CAAC,OAAO;aACf,OAAO,CAAC,MAAM,CAAC,EAAG,CAAC;aACnB,IAAI,CAAC,GAAG,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACzD,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,cAAc;QAChB,CAAC,CAAC,CAAA;QACJ,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAkB,EAAE,MAAM,CAAC,CAAA;QAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAG,CAAC,CAAA;QACxD,IAAA,aAAM,EAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;IAC1F,CAAC,CAAA,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import 'isomorphic-fetch'\nimport { getEnvironmentInitializer, hcp1Username, hcp2Username, setLocalStorage, TestUtils } from '../utils/test_utils'\nimport { before } from 'mocha'\nimport { IccPatientXApi, IccUserXApi } from '../../icc-x-api'\nimport { IccFormApi } from '../../icc-api'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { User } from '../../icc-api/model/User'\nimport { randomUUID } from 'crypto'\nimport { Form } from '../../icc-api/model/Form'\nimport { assert, expect } from 'chai'\nimport initApi = TestUtils.initApi\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { BasicAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\n\nsetLocalStorage(fetch)\nlet env: TestVars\n\ndescribe('icc-calendar-item-x-api Tests', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n async function createPatient(patientApiForHcp: IccPatientXApi, hcpUser: User) {\n return patientApiForHcp.createPatientWithUser(\n hcpUser,\n await patientApiForHcp.newInstance(\n hcpUser,\n new Patient({\n id: randomUUID(),\n firstName: 'John',\n lastName: 'Snow',\n note: 'Winter is coming',\n })\n )\n )\n }\n\n it('Test', async () => {\n // Given\n const username = env.dataOwnerDetails[hcp1Username].user\n const password = env.dataOwnerDetails[hcp1Username].password\n\n const authProvider = new BasicAuthenticationProvider(username, password)\n\n const userApi = new IccUserXApi(env.iCureUrl, {}, authProvider, null as any, fetch)\n const formApi = new IccFormApi(env.iCureUrl, {}, authProvider, fetch)\n\n const currentUser = await userApi.getCurrentUser()\n })\n\n it('Test findBy', async () => {\n // Given\n const {\n userApi: userApiForHcp,\n dataOwnerApi: dataOwnerApiForHcp,\n patientApi: patientApiForHcp,\n cryptoApi: cryptoApiForHcp,\n dataOwnerApi: dateOwnerApiForHcp,\n formApi: formXApi,\n } = await initApi(env, hcp1Username)\n const hcpUser = await userApiForHcp.getCurrentUser()\n const patient = (await createPatient(patientApiForHcp, hcpUser)) as Patient\n\n const form = new Form({\n id: randomUUID(),\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: hcpUser.healthcarePartyId!,\n author: hcpUser.id,\n codes: [],\n tags: [],\n user: hcpUser.id,\n patient: patient.id,\n })\n const formToCreate = await formXApi.newInstance(hcpUser, patient, form)\n const createdForm = await formXApi.createForm(formToCreate)\n\n const foundItems: Form[] = (await formXApi.findBy(hcpUser.healthcarePartyId!, patient, false)) as Form[]\n const foundItemsUsingPost: Form[] = (await formXApi.findBy(hcpUser.healthcarePartyId!, patient, true)) as Form[]\n\n assert(foundItems.length == 1, 'Found items should be 1')\n assert(foundItems[0].id == createdForm.id, 'Found item should be the created one')\n\n assert(foundItemsUsingPost.length == 1, 'Found items using post should be 1')\n assert(foundItemsUsingPost[0].id == createdForm.id, 'Found item using post should be the created one')\n })\n\n it('Share with should work as expected', async () => {\n const api1 = await initApi(env!, hcp1Username)\n const user1 = await api1.userApi.getCurrentUser()\n const api2 = await initApi(env!, hcp2Username)\n const user2 = await api2.userApi.getCurrentUser()\n const samplePatient = await api1.patientApi.createPatientWithUser(\n user1,\n await api1.patientApi.newInstance(user1, { firstName: 'Gigio', lastName: 'Bagigio' })\n )\n const entity = await api1.formApi.createForm(await api1.formApi.newInstance(user1, samplePatient))\n await api2.formApi\n .getForm(entity.id!)\n .then(() => {\n throw new Error('Should not be able to get the entity')\n })\n .catch(() => {\n /* expected */\n })\n await api1.formApi.shareWith(user2.healthcarePartyId!, entity)\n const retrieved = await api2.formApi.getForm(entity.id!)\n expect((await api2.formApi.decryptPatientIdOf(retrieved))[0]).to.equal(samplePatient.id)\n })\n})\n"]}
1
+ {"version":3,"file":"icc-form-x-api.js","sourceRoot":"","sources":["../../../test/icc-x-api/icc-form-x-api.ts"],"names":[],"mappings":"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","sourcesContent":["import 'isomorphic-fetch'\nimport { describeNoLite, getEnvironmentInitializer, hcp1Username, hcp2Username, setLocalStorage, TestUtils } from '../utils/test_utils'\nimport { before } from 'mocha'\nimport { IccPatientXApi, IccUserXApi } from '../../icc-x-api'\nimport { IccFormApi } from '../../icc-api'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { User } from '../../icc-api/model/User'\nimport { randomUUID } from 'crypto'\nimport { Form } from '../../icc-api/model/Form'\nimport { FormTemplate } from '../../icc-api/model/FormTemplate'\nimport { CodeStub } from '../../icc-api/model/CodeStub'\nimport { assert, expect } from 'chai'\nimport initApi = TestUtils.initApi\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { BasicAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { IdWithRev } from '../../icc-api/model/IdWithRev'\n\nsetLocalStorage(fetch)\nlet env: TestVars\n\ndescribe('icc-form-x-api Tests', () => {\n before(async function () {\n this.timeout(600000)\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n async function createPatient(patientApiForHcp: IccPatientXApi, hcpUser: User) {\n return patientApiForHcp.createPatientWithUser(\n hcpUser,\n await patientApiForHcp.newInstance(\n hcpUser,\n new Patient({\n id: randomUUID(),\n firstName: 'John',\n lastName: 'Snow',\n note: 'Winter is coming',\n })\n )\n )\n }\n\n it('Test', async () => {\n // Given\n const username = env.dataOwnerDetails[hcp1Username].user\n const password = env.dataOwnerDetails[hcp1Username].password\n\n const authProvider = new BasicAuthenticationProvider(username, password)\n\n const userApi = new IccUserXApi(env.iCureUrl, {}, authProvider, null as any, fetch)\n const formApi = new IccFormApi(env.iCureUrl, {}, authProvider, fetch)\n\n const currentUser = await userApi.getCurrentUser()\n })\n\n it('Test findBy', async () => {\n // Given\n const {\n userApi: userApiForHcp,\n dataOwnerApi: dataOwnerApiForHcp,\n patientApi: patientApiForHcp,\n cryptoApi: cryptoApiForHcp,\n dataOwnerApi: dateOwnerApiForHcp,\n formApi: formXApi,\n } = await initApi(env, hcp1Username)\n const hcpUser = await userApiForHcp.getCurrentUser()\n const patient = (await createPatient(patientApiForHcp, hcpUser)) as Patient\n\n const form = new Form({\n id: randomUUID(),\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: hcpUser.healthcarePartyId!,\n author: hcpUser.id,\n codes: [],\n tags: [],\n user: hcpUser.id,\n patient: patient.id,\n })\n const formToCreate = await formXApi.newInstance(hcpUser, patient, form)\n const createdForm = await formXApi.createForm(formToCreate)\n\n const foundItems: Form[] = (await formXApi.findBy(hcpUser.healthcarePartyId!, patient, false)) as Form[]\n const foundItemsUsingPost: Form[] = (await formXApi.findBy(hcpUser.healthcarePartyId!, patient, true)) as Form[]\n\n assert(foundItems.length == 1, 'Found items should be 1')\n assert(foundItems[0].id == createdForm.id, 'Found item should be the created one')\n\n assert(foundItemsUsingPost.length == 1, 'Found items using post should be 1')\n assert(foundItemsUsingPost[0].id == createdForm.id, 'Found item using post should be the created one')\n })\n\n it('Share with should work as expected', async () => {\n const api1 = await initApi(env!, hcp1Username)\n const user1 = await api1.userApi.getCurrentUser()\n const api2 = await initApi(env!, hcp2Username)\n const user2 = await api2.userApi.getCurrentUser()\n const samplePatient = await api1.patientApi.createPatientWithUser(\n user1,\n await api1.patientApi.newInstance(user1, { firstName: 'Gigio', lastName: 'Bagigio' })\n )\n const entity = await api1.formApi.createForm(await api1.formApi.newInstance(user1, samplePatient))\n await api2.formApi\n .getForm(entity.id!)\n .then(() => {\n throw new Error('Should not be able to get the entity')\n })\n .catch(() => {\n /* expected */\n })\n await api1.formApi.shareWith(user2.healthcarePartyId!, entity)\n const retrieved = await api2.formApi.getForm(entity.id!)\n expect((await api2.formApi.decryptPatientIdOf(retrieved))[0]).to.equal(samplePatient.id)\n })\n\n it('Tests for Form Templates', async () => {\n // Given\n const { formApi, userApi } = await initApi(env, hcp1Username)\n const guid = randomUUID()\n const specialtyCode = 'SPECIALTY-' + randomUUID()\n const user = await userApi.getCurrentUser()\n\n const formTemplateToCreate = new FormTemplate({\n id: randomUUID(),\n guid: guid,\n author: user.id,\n name: 'My Test Template',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n descr: 'Description of the template',\n })\n\n // Create\n const createdTemplate = await formApi.createFormTemplate(formTemplateToCreate)\n expect(createdTemplate.id).to.not.be.undefined\n expect(createdTemplate.guid).to.equal(guid)\n expect(createdTemplate.name).to.equal('My Test Template')\n\n // Get\n const retrievedTemplate = await formApi.getFormTemplate(createdTemplate.id!)\n expect(retrievedTemplate.id).to.equal(createdTemplate.id)\n\n // Find all\n const allTemplates = await formApi.findFormTemplates()\n expect(allTemplates.map((t) => t.id)).to.include(createdTemplate.id)\n\n // Find by specialty\n const templatesBySpecialty = await formApi.findFormTemplatesBySpeciality(specialtyCode)\n expect(templatesBySpecialty.map((t) => t.id)).to.include(createdTemplate.id)\n expect(templatesBySpecialty.length).to.be.greaterThan(0)\n\n // Get by GUID (using getFormTemplatesByGuid)\n const templatesByGuid = await formApi.getFormTemplatesByGuid(guid, specialtyCode)\n expect(templatesByGuid.map((t) => t.id)).to.include(createdTemplate.id)\n\n // Update\n createdTemplate.name = 'Updated Name'\n const updatedTemplate = await formApi.updateFormTemplate(createdTemplate.id!, createdTemplate)\n expect(updatedTemplate.name).to.equal('Updated Name')\n\n // Delete\n await formApi.deleteFormTemplate(createdTemplate.id!)\n try {\n await formApi.getFormTemplate(createdTemplate.id!)\n assert.fail('Should have thrown an error')\n } catch (e) {\n // Expected\n }\n })\n\n describeNoLite('Form Templates in Group Tests', () => {\n it('should create, find, update and delete form templates in a group', async () => {\n // Given\n const { formApi, userApi } = await initApi(env)\n const currentUser = await userApi.getCurrentUser()\n const guid = randomUUID()\n const specialtyCode = 'SPECIALTY-' + randomUUID()\n\n // Use the existing test group ID\n const groupId = env.testGroupId\n\n const formTemplateToCreate = new FormTemplate({\n id: randomUUID(),\n guid: guid,\n author: currentUser.id,\n name: 'My Group Template',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n descr: 'Description of the group template',\n })\n\n // Create In Group\n const createdTemplate = await formApi.createFormTemplateInGroup(groupId, formTemplateToCreate)\n expect(createdTemplate.id).to.not.be.undefined\n expect(createdTemplate.guid).to.equal(guid)\n if (createdTemplate.group) {\n expect(createdTemplate.group.guid).to.equal(groupId)\n }\n\n // Get In Group\n const templatesInGroup = await formApi.getFormTemplatesByUserInGroup(groupId, currentUser.id!)\n expect(templatesInGroup.map((t) => t.id)).to.include(createdTemplate.id)\n\n // Update In Group\n createdTemplate.name = 'Updated Group Name'\n const updatedTemplate = await formApi.updateFormTemplateInGroup(groupId, createdTemplate.id!, createdTemplate)\n expect(updatedTemplate.name).to.equal('Updated Group Name')\n\n // Delete In Group\n await formApi.deleteFormTemplateInGroup(groupId, updatedTemplate.id!, updatedTemplate.rev!)\n\n // Verify deletion\n const templatesInGroupAfterDelete = await formApi.getFormTemplatesByUserInGroup(groupId, currentUser.id!)\n expect(templatesInGroupAfterDelete.map((t) => t.id)).to.not.include(createdTemplate.id)\n })\n\n it('should find form templates by specialty in a group', async () => {\n // Given\n const { formApi, userApi } = await initApi(env)\n const currentUser = await userApi.getCurrentUser()\n const groupId = env.testGroupId\n const specialtyCode = 'SPECIALTY-' + randomUUID()\n const otherSpecialtyCode = 'SPECIALTY-' + randomUUID()\n\n const templatesToCreate = [\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Specialty Template 1',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n }),\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Specialty Template 2',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n }),\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Other Specialty Template',\n specialty: new CodeStub({ code: otherSpecialtyCode, type: 'specialty', version: '1' }),\n }),\n ]\n\n const createdTemplates = await formApi.createFormTemplatesInGroup(groupId, templatesToCreate)\n expect(createdTemplates).to.have.lengthOf(3)\n\n // When: find by specialty\n const templatesBySpecialty = await formApi.getFormTemplatesBySpecialtyInGroup(groupId, specialtyCode)\n\n // Then: should return only the 2 templates with the matching specialty\n expect(templatesBySpecialty.map((t) => t.id)).to.include(createdTemplates[0].id)\n expect(templatesBySpecialty.map((t) => t.id)).to.include(createdTemplates[1].id)\n expect(templatesBySpecialty.map((t) => t.id)).to.not.include(createdTemplates[2].id)\n\n // When: find by other specialty\n const otherTemplates = await formApi.getFormTemplatesBySpecialtyInGroup(groupId, otherSpecialtyCode)\n\n // Then: should return only the 1 template with the other specialty\n expect(otherTemplates.map((t) => t.id)).to.include(createdTemplates[2].id)\n expect(otherTemplates.map((t) => t.id)).to.not.include(createdTemplates[0].id)\n\n // When: find by non-existent specialty\n const emptyResult = await formApi.getFormTemplatesBySpecialtyInGroup(groupId, 'NONEXISTENT-' + randomUUID())\n\n // Then: should return empty\n expect(emptyResult).to.have.lengthOf(0)\n\n // Cleanup\n const idsAndRevs = createdTemplates.map((t) => new IdWithRev({ id: t.id!, rev: t.rev! }))\n await formApi.deleteFormTemplatesInGroup(groupId, idsAndRevs)\n })\n })\n\n describeNoLite('Form Templates Batch Operations in Group Tests', () => {\n it('should create, get, and modify multiple form templates in a group (batch)', async () => {\n // Given\n const { formApi, userApi } = await initApi(env)\n const currentUser = await userApi.getCurrentUser()\n const groupId = env.testGroupId\n const specialtyCode = 'SPECIALTY-' + randomUUID()\n\n // Create multiple templates\n const templatesToCreate = [\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Batch Template 1',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n descr: 'First batch template',\n }),\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Batch Template 2',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n descr: 'Second batch template',\n }),\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Batch Template 3',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n descr: 'Third batch template',\n }),\n ]\n\n // Create batch\n const createdTemplates = await formApi.createFormTemplatesInGroup(groupId, templatesToCreate)\n expect(createdTemplates).to.have.lengthOf(3)\n expect(createdTemplates[0].name).to.equal('Batch Template 1')\n expect(createdTemplates[1].name).to.equal('Batch Template 2')\n expect(createdTemplates[2].name).to.equal('Batch Template 3')\n createdTemplates.forEach((template) => {\n expect(template.id).to.not.be.undefined\n expect(template.rev).to.not.be.undefined\n })\n\n // Get batch by IDs\n const retrievedTemplates = await formApi.getFormTemplatesInGroup(\n groupId,\n createdTemplates.map((t) => t.id!)\n )\n expect(retrievedTemplates).to.have.lengthOf(3)\n expect(retrievedTemplates.map((t) => t.id)).to.have.members(createdTemplates.map((t) => t.id))\n\n // Modify batch\n const templatesForUpdate = createdTemplates.map((t, index) => ({\n ...t,\n name: `Updated Batch Template ${index + 1}`,\n }))\n const updatedTemplates = await formApi.modifyFormTemplatesInGroup(groupId, templatesForUpdate)\n expect(updatedTemplates).to.have.lengthOf(3)\n expect(updatedTemplates[0].name).to.equal('Updated Batch Template 1')\n expect(updatedTemplates[1].name).to.equal('Updated Batch Template 2')\n expect(updatedTemplates[2].name).to.equal('Updated Batch Template 3')\n\n // Clean up - delete batch\n const idsAndRevs = updatedTemplates.map((t) => new IdWithRev({ id: t.id!, rev: t.rev! }))\n const deleteResults = await formApi.deleteFormTemplatesInGroup(groupId, idsAndRevs)\n expect(deleteResults).to.have.lengthOf(3)\n deleteResults.forEach((result) => {\n expect(result.id).to.not.be.undefined\n expect(result.rev).to.not.be.undefined\n })\n })\n\n it('should delete and undelete multiple form templates in a group (batch)', async () => {\n // Given\n const { formApi, userApi } = await initApi(env)\n const currentUser = await userApi.getCurrentUser()\n const groupId = env.testGroupId\n const specialtyCode = 'SPECIALTY-' + randomUUID()\n\n // Create templates\n const templatesToCreate = [\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Delete Test Template 1',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n }),\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Delete Test Template 2',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n }),\n ]\n\n const createdTemplates = await formApi.createFormTemplatesInGroup(groupId, templatesToCreate)\n expect(createdTemplates).to.have.lengthOf(2)\n\n // Delete batch\n const idsAndRevs = createdTemplates.map((t) => new IdWithRev({ id: t.id!, rev: t.rev! }))\n const deleteResults = await formApi.deleteFormTemplatesInGroup(groupId, idsAndRevs)\n expect(deleteResults).to.have.lengthOf(2)\n\n // Verify deletion - templates should not be in active list\n const allTemplates = await formApi.getFormTemplatesByUserInGroup(groupId, currentUser.id!)\n const activeIds = allTemplates.map((t) => t.id)\n createdTemplates.forEach((t) => {\n expect(activeIds).to.not.include(t.id)\n })\n\n // Undelete batch - use the updated revisions from delete results\n const undeleteIdsAndRevs = deleteResults.map((result) => new IdWithRev({ id: result.id!, rev: result.rev! }))\n const undeletedTemplates = await formApi.undeleteFormTemplatesInGroup(groupId, undeleteIdsAndRevs)\n expect(undeletedTemplates).to.have.lengthOf(2)\n undeletedTemplates.forEach((template) => {\n expect(template.id).to.not.be.undefined\n expect(template.rev).to.not.be.undefined\n expect(template.deletionDate).to.be.undefined\n })\n\n // Verify undelete - templates should be back in active list\n const templatesAfterUndelete = await formApi.getFormTemplatesByUserInGroup(groupId, currentUser.id!)\n const activeIdsAfterUndelete = templatesAfterUndelete.map((t) => t.id)\n undeletedTemplates.forEach((t) => {\n expect(activeIdsAfterUndelete).to.include(t.id)\n })\n\n // Final cleanup - delete again\n const finalIdsAndRevs = undeletedTemplates.map((t) => new IdWithRev({ id: t.id!, rev: t.rev! }))\n await formApi.deleteFormTemplatesInGroup(groupId, finalIdsAndRevs)\n })\n\n it('should purge multiple form templates in a group (batch)', async () => {\n // Given\n const { formApi, userApi } = await initApi(env)\n const currentUser = await userApi.getCurrentUser()\n const groupId = env.testGroupId\n const specialtyCode = 'SPECIALTY-' + randomUUID()\n\n // Create templates\n const templatesToCreate = [\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Purge Test Template 1',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n }),\n new FormTemplate({\n id: randomUUID(),\n guid: randomUUID(),\n author: currentUser.id,\n name: 'Purge Test Template 2',\n specialty: new CodeStub({ code: specialtyCode, type: 'specialty', version: '1' }),\n }),\n ]\n\n const createdTemplates = await formApi.createFormTemplatesInGroup(groupId, templatesToCreate)\n expect(createdTemplates).to.have.lengthOf(2)\n\n // First delete them (purge requires deletion first)\n const deleteIdsAndRevs = createdTemplates.map((t) => new IdWithRev({ id: t.id!, rev: t.rev! }))\n const deleteResults = await formApi.deleteFormTemplatesInGroup(groupId, deleteIdsAndRevs)\n expect(deleteResults).to.have.lengthOf(2)\n\n // Purge batch\n const purgeIdsAndRevs = deleteResults.map((result) => new IdWithRev({ id: result.id!, rev: result.rev! }))\n const purgeResults = await formApi.purgeFormTemplatesInGroup(groupId, purgeIdsAndRevs)\n expect(purgeResults).to.have.lengthOf(2)\n purgeResults.forEach((result) => {\n expect(result.id).to.not.be.undefined\n })\n\n // Verify purge - trying to get the templates should fail or return empty\n const retrievedTemplates = await formApi.getFormTemplatesInGroup(\n groupId,\n createdTemplates.map((t) => t.id!)\n )\n expect(retrievedTemplates).to.have.lengthOf(0)\n })\n\n it('should handle empty batch operations gracefully', async () => {\n // Given\n const { formApi } = await initApi(env)\n const groupId = env.testGroupId\n\n // Test with empty arrays\n const createdTemplates = await formApi.createFormTemplatesInGroup(groupId, [])\n expect(createdTemplates).to.have.lengthOf(0)\n\n const modifiedTemplates = await formApi.modifyFormTemplatesInGroup(groupId, [])\n expect(modifiedTemplates).to.have.lengthOf(0)\n\n const retrievedTemplates = await formApi.getFormTemplatesInGroup(groupId, [])\n expect(retrievedTemplates).to.have.lengthOf(0)\n\n const deleteResults = await formApi.deleteFormTemplatesInGroup(groupId, [])\n expect(deleteResults).to.have.lengthOf(0)\n\n const undeleteResults = await formApi.undeleteFormTemplatesInGroup(groupId, [])\n expect(undeleteResults).to.have.lengthOf(0)\n\n const purgeResults = await formApi.purgeFormTemplatesInGroup(groupId, [])\n expect(purgeResults).to.have.lengthOf(0)\n })\n })\n})\n"]}
@@ -23,6 +23,11 @@ exports.defaultRoles = {
23
23
  'DocumentManagement.Purge',
24
24
  'FormManagement.Create',
25
25
  'FormManagement.Purge',
26
+ 'FormTemplateManagement.Create',
27
+ 'FormTemplateManagement.Read',
28
+ 'FormTemplateManagement.Update',
29
+ 'FormTemplateManagement.Delete',
30
+ 'FormTemplateManagement.Purge',
26
31
  'InvoiceManagement.Create',
27
32
  'InvoiceManagement.Purge',
28
33
  'MaintenanceTaskManagement.Create',
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../test/utils/roles.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,gBAAgB,EAAE,CAAC,kCAAkC,CAAC;IACtD,gBAAgB,EAAE;QAChB,gCAAgC;QAChC,+BAA+B;QAC/B,4BAA4B;QAC5B,0BAA0B;QAC1B,yBAAyB;QACzB,+BAA+B;QAC/B,8BAA8B;QAC9B,iCAAiC;QACjC,gCAAgC;QAChC,yCAAyC;QACzC,qBAAqB;QACrB,0BAA0B;QAC1B,yBAAyB;QACzB,0BAA0B;QAC1B,yBAAyB;QACzB,2BAA2B;QAC3B,0BAA0B;QAC1B,uBAAuB;QACvB,sBAAsB;QACtB,0BAA0B;QAC1B,yBAAyB;QACzB,kCAAkC;QAClC,iCAAiC;QACjC,0BAA0B;QAC1B,yBAAyB;QACzB,0BAA0B;QAC1B,yBAAyB;QACzB,4BAA4B;QAC5B,2BAA2B;QAC3B,yBAAyB;QACzB,gCAAgC;KACjC;IACD,uBAAuB,EAAE;QACvB,sCAAsC;QACtC,+DAA+D;QAC/D,iEAAiE;QACjE,gEAAgE;QAChE,wDAAwD;QACxD,qEAAqE;QACrE,yDAAyD;QACzD,qDAAqD;QACrD,mDAAmD;QACnD,wDAAwD;QACxD,0DAA0D;QAC1D,uCAAuC;QACvC,mDAAmD;QACnD,mDAAmD;QACnD,oDAAoD;QACpD,gDAAgD;QAChD,mDAAmD;QACnD,2DAA2D;QAC3D,mDAAmD;QACnD,mDAAmD;QACnD,mDAAmD;QACnD,qDAAqD;QACrD,iDAAiD;QACjD,2DAA2D;QAC3D,uDAAuD;QACvD,qDAAqD;QACrD,0DAA0D;QAC1D,4DAA4D;QAC5D,yCAAyC;QACzC,qDAAqD;QACrD,qDAAqD;QACrD,sDAAsD;QACtD,kDAAkD;QAClD,qDAAqD;QACrD,6DAA6D;QAC7D,qDAAqD;QACrD,qDAAqD;QACrD,qDAAqD;QACrD,uDAAuD;QACvD,mDAAmD;QACnD,0DAA0D;QAC1D,sDAAsD;QACtD,oDAAoD;QACpD,yDAAyD;QACzD,2DAA2D;QAC3D,yCAAyC;QACzC,oDAAoD;QACpD,oDAAoD;QACpD,qDAAqD;QACrD,iDAAiD;QACjD,oDAAoD;QACpD,4DAA4D;QAC5D,oDAAoD;QACpD,oDAAoD;QACpD,oDAAoD;QACpD,sDAAsD;QACtD,kDAAkD;QAClD,kEAAkE;QAClE,iDAAiD;QACjD,+CAA+C;QAC/C,iDAAiD;QACjD,mCAAmC;KACpC;IACD,oBAAoB,EAAE;QACpB,+BAA+B;QAC/B,6BAA6B;QAC7B,uCAAuC;QACvC,8CAA8C;QAC9C,qCAAqC;QACrC,sCAAsC;QACtC,gDAAgD;QAChD,qCAAqC;QACrC,wCAAwC;QACxC,+BAA+B;QAC/B,uBAAuB;QACvB,+CAA+C;QAC/C,6CAA6C;QAC7C,+CAA+C;KAChD;IACD,gBAAgB,EAAE;QAChB,uCAAuC;QACvC,qCAAqC;QACrC,+CAA+C;QAC/C,sDAAsD;QACtD,6CAA6C;QAC7C,8CAA8C;QAC9C,wDAAwD;QACxD,6CAA6C;QAC7C,gDAAgD;QAChD,uCAAuC;QACvC,uBAAuB;QACvB,sCAAsC;QACtC,oCAAoC;QACpC,sCAAsC;QACtC,sCAAsC;QACtC,mEAAmE;QACnE,yDAAyD;QACzD,8DAA8D;QAC9D,uDAAuD;QACvD,qDAAqD;QACrD,uDAAuD;KACxD;IACD,mBAAmB,EAAE;QACnB,8BAA8B;QAC9B,4BAA4B;QAC5B,sCAAsC;QACtC,6CAA6C;QAC7C,oCAAoC;QACpC,qCAAqC;QACrC,+CAA+C;QAC/C,oCAAoC;QACpC,uCAAuC;QACvC,8BAA8B;QAC9B,uBAAuB;QACvB,8CAA8C;QAC9C,4CAA4C;QAC5C,8CAA8C;QAC9C,2BAA2B;QAC3B,yBAAyB;QACzB,4BAA4B;QAC5B,6BAA6B;QAC7B,yBAAyB;KAC1B;IACD,UAAU,EAAE;QACV,yBAAyB;QACzB,mCAAmC;QACnC,0CAA0C;QAC1C,kCAAkC;QAClC,iCAAiC;QACjC,oCAAoC;QACpC,oDAAoD;QACpD,2BAA2B;QAC3B,gCAAgC;KACjC;IACD,kBAAkB,EAAE,CAAC,6BAA6B,CAAC;IACnD,iBAAiB,EAAE,CAAC,wDAAwD,EAAE,yBAAyB,CAAC;IACxG,aAAa,EAAE,CAAC,wBAAwB,CAAC;IACzC,sBAAsB,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;IAC/E,UAAU,EAAE;QACV,sCAAsC;QACtC,+DAA+D;QAC/D,iEAAiE;QACjE,gEAAgE;QAChE,wDAAwD;QACxD,4CAA4C;QAC5C,yBAAyB;QACzB,qDAAqD;QACrD,qDAAqD;QACrD,qDAAqD;QACrD,8DAA8D;QAC9D,yDAAyD;QACzD,8DAA8D;QAC9D,2DAA2D;QAC3D,iEAAiE;QACjE,sEAAsE;QACtE,mEAAmE;QACnE,sDAAsD;QACtD,uCAAuC;QACvC,+BAA+B;QAC/B,8BAA8B;QAC9B,yBAAyB;QACzB,2BAA2B;QAC3B,qCAAqC;QACrC,6BAA6B;QAC7B,4BAA4B;QAC5B,2BAA2B;QAC3B,uBAAuB;QACvB,iCAAiC;QACjC,0CAA0C;QAC1C,kCAAkC;QAClC,6CAA6C;QAC7C,sDAAsD;QACtD,8CAA8C;QAC9C,+CAA+C;QAC/C,qCAAqC;QACrC,8CAA8C;QAC9C,sCAAsC;QACtC,uCAAuC;QACvC,gDAAgD;QAChD,qCAAqC;QACrC,oCAAoC;QACpC,6CAA6C;QAC7C,qCAAqC;QACrC,sCAAsC;QACtC,+CAA+C;QAC/C,oCAAoC;QACpC,mCAAmC;QACnC,4CAA4C;QAC5C,oCAAoC;QACpC,qCAAqC;QACrC,8CAA8C;QAC9C,mCAAmC;QACnC,2BAA2B;QAC3B,6BAA6B;QAC7B,uCAAuC;QACvC,+BAA+B;QAC/B,8BAA8B;QAC9B,6BAA6B;QAC7B,gCAAgC;QAChC,0CAA0C;QAC1C,4CAA4C;QAC5C,2CAA2C;QAC3C,iEAAiE;QACjE,4BAA4B;QAC5B,sCAAsC;QACtC,wCAAwC;QACxC,uCAAuC;QACvC,6DAA6D;QAC7D,iDAAiD;QACjD,0BAA0B;QAC1B,oCAAoC;QACpC,sCAAsC;QACtC,qCAAqC;QACrC,2DAA2D;QAC3D,+BAA+B;QAC/B,yCAAyC;QACzC,2CAA2C;QAC3C,0CAA0C;QAC1C,gEAAgE;QAChE,iCAAiC;QACjC,2CAA2C;QAC3C,6CAA6C;QAC7C,4CAA4C;QAC5C,kEAAkE;QAClE,yCAAyC;QACzC,uCAAuC;QACvC,yCAAyC;QACzC,yCAAyC;QACzC,0EAA0E;QAC1E,0BAA0B;QAC1B,oCAAoC;QACpC,sCAAsC;QACtC,qCAAqC;QACrC,2DAA2D;QAC3D,oCAAoC;QACpC,2BAA2B;QAC3B,qCAAqC;QACrC,uCAAuC;QACvC,sCAAsC;QACtC,4DAA4D;QAC5D,uBAAuB;QACvB,iCAAiC;QACjC,mCAAmC;QACnC,kCAAkC;QAClC,wDAAwD;QACxD,0BAA0B;QAC1B,oCAAoC;QACpC,sCAAsC;QACtC,qCAAqC;QACrC,2DAA2D;QAC3D,wDAAwD;QACxD,mEAAmE;QACnE,kCAAkC;QAClC,4CAA4C;QAC5C,8CAA8C;QAC9C,6CAA6C;QAC7C,mEAAmE;QACnE,0BAA0B;QAC1B,oCAAoC;QACpC,sCAAsC;QACtC,qCAAqC;QACrC,2DAA2D;QAC3D,0BAA0B;QAC1B,oCAAoC;QACpC,sCAAsC;QACtC,qCAAqC;QACrC,2DAA2D;QAC3D,0BAA0B;QAC1B,oCAAoC;QACpC,sCAAsC;QACtC,qCAAqC;QACrC,2DAA2D;QAC3D,4BAA4B;QAC5B,sCAAsC;QACtC,wCAAwC;QACxC,uCAAuC;QACvC,6DAA6D;QAC7D,wBAAwB;QACxB,kCAAkC;QAClC,oCAAoC;QACpC,mCAAmC;QACnC,yDAAyD;QACzD,kCAAkC;QAClC,8BAA8B;QAC9B,wCAAwC;QACxC,2BAA2B;QAC3B,sCAAsC;QACtC,yCAAyC;QACzC,oCAAoC;QACpC,sCAAsC;QACtC,sCAAsC;QACtC,sCAAsC;QACtC,mEAAmE;QACnE,yDAAyD;QACzD,8DAA8D;QAC9D,mCAAmC;QACnC,8BAA8B;QAC9B,gCAAgC;KACjC;CACF,CAAA","sourcesContent":["export const defaultRoles = {\n ANY_ACTING_SCOPE: ['DataOwner.ActingScope.OfChildren'],\n BASIC_DATA_OWNER: [\n 'HealthElementManagement.Create',\n 'HealthElementManagement.Purge',\n 'AccessLogManagement.Create',\n 'ArticleManagement.Create',\n 'ArticleManagement.Purge',\n 'CalendarItemManagement.Create',\n 'CalendarItemManagement.Purge',\n 'ClassificationManagement.Create',\n 'ClassificationManagement.Purge',\n 'ClassificationTemplateManagement.Create',\n 'CodeManagement.Read',\n 'ContactManagement.Create',\n 'ContactManagement.Purge',\n 'ServiceManagement.Create',\n 'ServiceManagement.Purge',\n 'DocumentManagement.Create',\n 'DocumentManagement.Purge',\n 'FormManagement.Create',\n 'FormManagement.Purge',\n 'InvoiceManagement.Create',\n 'InvoiceManagement.Purge',\n 'MaintenanceTaskManagement.Create',\n 'MaintenanceTaskManagement.Purge',\n 'PatientManagement.Create',\n 'PatientManagement.Purge',\n 'ReceiptManagement.Create',\n 'ReceiptManagement.Purge',\n 'TimeTableManagement.Create',\n 'TimeTableManagement.Purge',\n 'AgendaManagement.Create',\n 'GroupManagement.Read.BasicInfo',\n ],\n HIERARCHICAL_DATA_OWNER: [\n 'ApplicationSettingsManagement.Create',\n 'ApplicationSettingsManagement.ExtendedRead.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedUpdate.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedPurge.DelegatedToParents',\n 'ExtendedEncryptionMetadataEntitiesManagement.ForParent',\n 'CryptoActorManagement.ExtendedExchangeKeysSearch.DelegatedToParents',\n 'HealthElementManagement.ExtendedRead.DelegatedToParents',\n 'AccessLogManagement.ExtendedRead.DelegatedToParents',\n 'ArticleManagement.ExtendedRead.DelegatedToParents',\n 'CalendarItemManagement.ExtendedRead.DelegatedToParents',\n 'ClassificationManagement.ExtendedRead.DelegatedToParents',\n 'ClassificationTemplateManagement.Read',\n 'ContactManagement.ExtendedRead.DelegatedToParents',\n 'ServiceManagement.ExtendedRead.DelegatedToParents',\n 'DocumentManagement.ExtendedRead.DelegatedToParents',\n 'FormManagement.ExtendedRead.DelegatedToParents',\n 'InvoiceManagement.ExtendedRead.DelegatedToParents',\n 'MaintenanceTaskManagement.ExtendedRead.DelegatedToParents',\n 'MessageManagement.ExtendedRead.DelegatedToParents',\n 'PatientManagement.ExtendedRead.DelegatedToParents',\n 'ReceiptManagement.ExtendedRead.DelegatedToParents',\n 'TimeTableManagement.ExtendedRead.DelegatedToParents',\n 'TopicManagement.ExtendedRead.DelegatedToParents',\n 'HealthElementManagement.ExtendedUpdate.DelegatedToParents',\n 'AccessLogManagement.ExtendedUpdate.DelegatedToParents',\n 'ArticleManagement.ExtendedUpdate.DelegatedToParents',\n 'CalendarItemManagement.ExtendedUpdate.DelegatedToParents',\n 'ClassificationManagement.ExtendedUpdate.DelegatedToParents',\n 'ClassificationTemplateManagement.Update',\n 'ContactManagement.ExtendedUpdate.DelegatedToParents',\n 'ServiceManagement.ExtendedUpdate.DelegatedToParents',\n 'DocumentManagement.ExtendedUpdate.DelegatedToParents',\n 'FormManagement.ExtendedUpdate.DelegatedToParents',\n 'InvoiceManagement.ExtendedUpdate.DelegatedToParents',\n 'MaintenanceTaskManagement.ExtendedUpdate.DelegatedToParents',\n 'MessageManagement.ExtendedUpdate.DelegatedToParents',\n 'PatientManagement.ExtendedUpdate.DelegatedToParents',\n 'ReceiptManagement.ExtendedUpdate.DelegatedToParents',\n 'TimeTableManagement.ExtendedUpdate.DelegatedToParents',\n 'TopicManagement.ExtendedUpdate.DelegatedToParents',\n 'HealthElementManagement.ExtendedPurge.DelegatedToParents',\n 'AccessLogManagement.ExtendedPurge.DelegatedToParents',\n 'ArticleManagement.ExtendedPurge.DelegatedToParents',\n 'CalendarItemManagement.ExtendedPurge.DelegatedToParents',\n 'ClassificationManagement.ExtendedPurge.DelegatedToParents',\n 'ClassificationTemplateManagement.Delete',\n 'ContactManagement.ExtendedPurge.DelegatedToParents',\n 'ServiceManagement.ExtendedPurge.DelegatedToParents',\n 'DocumentManagement.ExtendedPurge.DelegatedToParents',\n 'FormManagement.ExtendedPurge.DelegatedToParents',\n 'InvoiceManagement.ExtendedPurge.DelegatedToParents',\n 'MaintenanceTaskManagement.ExtendedPurge.DelegatedToParents',\n 'MessageManagement.ExtendedPurge.DelegatedToParents',\n 'PatientManagement.ExtendedPurge.DelegatedToParents',\n 'ReceiptManagement.ExtendedPurge.DelegatedToParents',\n 'TimeTableManagement.ExtendedPurge.DelegatedToParents',\n 'TopicManagement.ExtendedPurge.DelegatedToParents',\n 'SecureDelegationKeyMapManagement.ExtendedRead.DelegatedToParents',\n 'RecoveryDataManagement.ExtendedCreate.ForParent',\n 'RecoveryDataManagement.ExtendedRead.ForParent',\n 'RecoveryDataManagement.ExtendedDelete.ForParent',\n 'GroupManagement.Read.AdvancedInfo',\n ],\n PATIENT_USER_MANAGER: [\n 'UserManagement.Create.Patient',\n 'UserManagement.Read.Patient',\n 'UserManagement.Update.Patient.Secrets',\n 'UserManagement.Update.Patient.ContactDetails',\n 'UserManagement.Update.Patient.Roles',\n 'UserManagement.Update.Patient.Status',\n 'UserManagement.Update.Patient.DataOwnerDetails',\n 'UserManagement.Update.Patient.Basic',\n 'UserManagement.Update.Patient.Metadata',\n 'UserManagement.Delete.Patient',\n 'UserManagement.Search',\n 'RecoveryDataManagement.ExtendedCreate.Patient',\n 'RecoveryDataManagement.ExtendedRead.Patient',\n 'RecoveryDataManagement.ExtendedDelete.Patient',\n ],\n HCP_USER_MANAGER: [\n 'UserManagement.Create.HealthcareParty',\n 'UserManagement.Read.HealthcareParty',\n 'UserManagement.Update.HealthcareParty.Secrets',\n 'UserManagement.Update.HealthcareParty.ContactDetails',\n 'UserManagement.Update.HealthcareParty.Roles',\n 'UserManagement.Update.HealthcareParty.Status',\n 'UserManagement.Update.HealthcareParty.DataOwnerDetails',\n 'UserManagement.Update.HealthcareParty.Basic',\n 'UserManagement.Update.HealthcareParty.Metadata',\n 'UserManagement.Delete.HealthcareParty',\n 'UserManagement.Search',\n 'HealthcarePartyManagement.Create.Any',\n 'HealthcarePartyManagement.FullRead',\n 'HealthcarePartyManagement.Delete.Any',\n 'HealthcarePartyManagement.Update.Any',\n 'HealthcarePartyManagement.ProtectedContentUpdate.CreationMetadata',\n 'HealthcarePartyManagement.ProtectedContentUpdate.Parent',\n 'HealthcarePartyManagement.ProtectedContentUpdate.BankDetails',\n 'RecoveryDataManagement.ExtendedCreate.HealthcareParty',\n 'RecoveryDataManagement.ExtendedRead.HealthcareParty',\n 'RecoveryDataManagement.ExtendedDelete.HealthcareParty',\n ],\n DEVICE_USER_MANAGER: [\n 'UserManagement.Create.Device',\n 'UserManagement.Read.Device',\n 'UserManagement.Update.Device.Secrets',\n 'UserManagement.Update.Device.ContactDetails',\n 'UserManagement.Update.Device.Roles',\n 'UserManagement.Update.Device.Status',\n 'UserManagement.Update.Device.DataOwnerDetails',\n 'UserManagement.Update.Device.Basic',\n 'UserManagement.Update.Device.Metadata',\n 'UserManagement.Delete.Device',\n 'UserManagement.Search',\n 'RecoveryDataManagement.ExtendedCreate.Device',\n 'RecoveryDataManagement.ExtendedRead.Device',\n 'RecoveryDataManagement.ExtendedDelete.Device',\n 'DeviceManagement.Read.Any',\n 'DeviceManagement.Create',\n 'DeviceManagement.Purge.Any',\n 'DeviceManagement.Update.Any',\n 'DeviceManagement.Search',\n ],\n BASIC_USER: [\n 'UserManagement.Read.Own',\n 'UserManagement.Update.Own.Secrets',\n 'UserManagement.Update.Own.ContactDetails',\n 'UserManagement.Update.Own.Status',\n 'UserManagement.Update.Own.Basic',\n 'UserManagement.Update.Own.Metadata',\n 'UserManagement.Update.Own.VerifiedLoginIdentifiers',\n 'UserManagement.Delete.Own',\n 'GroupManagement.Read.BasicInfo',\n ],\n BASIC_USER_MANAGER: ['UserManagement.Create.Other'],\n TOPIC_PARTICIPANT: ['MessageManagement.ConditionalCreate.AsTopicParticipant', 'MessageManagement.Purge'],\n TOPIC_MANAGER: ['TopicManagement.Create'],\n LEGACY_MESSAGE_MANAGER: ['MessageManagement.Create', 'MessageManagement.Purge'],\n LEGACY_HCP: [\n 'ApplicationSettingsManagement.Create',\n 'ApplicationSettingsManagement.ExtendedRead.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedUpdate.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedPurge.DelegatedToParents',\n 'ExtendedEncryptionMetadataEntitiesManagement.ForParent',\n 'UserManagement.Update.Own.LoginIdentifiers',\n 'AgendaManagement.Create',\n 'MessageManagement.ProtectedContentUpdate.ReadStatus',\n 'MessageManagement.ReadStatusUpdate.UnrestrictedUser',\n 'MessageManagement.ReadStatusUpdate.UnrestrictedTime',\n 'MessageManagement.ReadStatusUpdate.UnrestrictedEntryOverride',\n 'CryptoActorManagement.ExtendedUpdate.Patient.PublicKeys',\n 'CryptoActorManagement.ExtendedUpdate.Patient.AnyExchangeKeys',\n 'CryptoActorManagement.ExtendedUpdate.Patient.RecoveryData',\n 'CryptoActorManagement.ExtendedUpdate.HealthcareParty.PublicKeys',\n 'CryptoActorManagement.ExtendedUpdate.HealthcareParty.AnyExchangeKeys',\n 'CryptoActorManagement.ExtendedUpdate.HealthcareParty.RecoveryData',\n 'CryptoActorManagement.ExtendedExchangeKeysSearch.Any',\n 'UserManagement.Create.HealthcareParty',\n 'UserManagement.Create.Patient',\n 'UserManagement.Create.Device',\n 'UserManagement.Read.Own',\n 'UserManagement.Read.Admin',\n 'UserManagement.Read.HealthcareParty',\n 'UserManagement.Read.Patient',\n 'UserManagement.Read.Device',\n 'UserManagement.Read.Other',\n 'UserManagement.Search',\n 'UserManagement.Update.Own.Basic',\n 'UserManagement.Update.Own.ContactDetails',\n 'UserManagement.Update.Own.Status',\n 'UserManagement.Update.HealthcareParty.Basic',\n 'UserManagement.Update.HealthcareParty.ContactDetails',\n 'UserManagement.Update.HealthcareParty.Status',\n 'UserManagement.Update.HealthcareParty.Secrets',\n 'UserManagement.Update.Patient.Basic',\n 'UserManagement.Update.Patient.ContactDetails',\n 'UserManagement.Update.Patient.Status',\n 'UserManagement.Update.Patient.Secrets',\n 'UserManagement.Update.Patient.DataOwnerDetails',\n 'UserManagement.Update.Patient.Roles',\n 'UserManagement.Update.Device.Basic',\n 'UserManagement.Update.Device.ContactDetails',\n 'UserManagement.Update.Device.Status',\n 'UserManagement.Update.Device.Secrets',\n 'UserManagement.Update.Device.DataOwnerDetails',\n 'UserManagement.Update.Device.Roles',\n 'UserManagement.Update.Other.Basic',\n 'UserManagement.Update.Other.ContactDetails',\n 'UserManagement.Update.Other.Status',\n 'UserManagement.Update.Other.Secrets',\n 'UserManagement.Update.Other.DataOwnerDetails',\n 'UserManagement.Update.Other.Roles',\n 'UserManagement.Delete.Own',\n 'UserManagement.Delete.Admin',\n 'UserManagement.Delete.HealthcareParty',\n 'UserManagement.Delete.Patient',\n 'UserManagement.Delete.Device',\n 'UserManagement.Delete.Other',\n 'HealthElementManagement.Create',\n 'HealthElementManagement.ExtendedRead.Any',\n 'HealthElementManagement.ExtendedUpdate.Any',\n 'HealthElementManagement.ExtendedPurge.Any',\n 'HealthElementManagement.ProtectedContentUpdate.CreationMetadata',\n 'AccessLogManagement.Create',\n 'AccessLogManagement.ExtendedRead.Any',\n 'AccessLogManagement.ExtendedUpdate.Any',\n 'AccessLogManagement.ExtendedPurge.Any',\n 'AccessLogManagement.ProtectedContentUpdate.CreationMetadata',\n 'AccessLogManagement.AggregatePatientsByUser.Any',\n 'ArticleManagement.Create',\n 'ArticleManagement.ExtendedRead.Any',\n 'ArticleManagement.ExtendedUpdate.Any',\n 'ArticleManagement.ExtendedPurge.Any',\n 'ArticleManagement.ProtectedContentUpdate.CreationMetadata',\n 'CalendarItemManagement.Create',\n 'CalendarItemManagement.ExtendedRead.Any',\n 'CalendarItemManagement.ExtendedUpdate.Any',\n 'CalendarItemManagement.ExtendedPurge.Any',\n 'CalendarItemManagement.ProtectedContentUpdate.CreationMetadata',\n 'ClassificationManagement.Create',\n 'ClassificationManagement.ExtendedRead.Any',\n 'ClassificationManagement.ExtendedUpdate.Any',\n 'ClassificationManagement.ExtendedPurge.Any',\n 'ClassificationManagement.ProtectedContentUpdate.CreationMetadata',\n 'ClassificationTemplateManagement.Create',\n 'ClassificationTemplateManagement.Read',\n 'ClassificationTemplateManagement.Update',\n 'ClassificationTemplateManagement.Delete',\n 'ClassificationTemplateManagement.ProtectedContentUpdate.CreationMetadata',\n 'ContactManagement.Create',\n 'ContactManagement.ExtendedRead.Any',\n 'ContactManagement.ExtendedUpdate.Any',\n 'ContactManagement.ExtendedPurge.Any',\n 'ContactManagement.ProtectedContentUpdate.CreationMetadata',\n 'ServiceManagement.ExtendedRead.Any',\n 'DocumentManagement.Create',\n 'DocumentManagement.ExtendedRead.Any',\n 'DocumentManagement.ExtendedUpdate.Any',\n 'DocumentManagement.ExtendedPurge.Any',\n 'DocumentManagement.ProtectedContentUpdate.CreationMetadata',\n 'FormManagement.Create',\n 'FormManagement.ExtendedRead.Any',\n 'FormManagement.ExtendedUpdate.Any',\n 'FormManagement.ExtendedPurge.Any',\n 'FormManagement.ProtectedContentUpdate.CreationMetadata',\n 'InvoiceManagement.Create',\n 'InvoiceManagement.ExtendedRead.Any',\n 'InvoiceManagement.ExtendedUpdate.Any',\n 'InvoiceManagement.ExtendedPurge.Any',\n 'InvoiceManagement.ProtectedContentUpdate.CreationMetadata',\n 'InvoiceManagement.Maintenance.InvoicingCodesUpdate.Any',\n 'InvoiceManagement.Maintenance.CanGetInvoicesForUsersAndInsurances',\n 'MaintenanceTaskManagement.Create',\n 'MaintenanceTaskManagement.ExtendedRead.Any',\n 'MaintenanceTaskManagement.ExtendedUpdate.Any',\n 'MaintenanceTaskManagement.ExtendedPurge.Any',\n 'MaintenanceTaskManagement.ProtectedContentUpdate.CreationMetadata',\n 'MessageManagement.Create',\n 'MessageManagement.ExtendedRead.Any',\n 'MessageManagement.ExtendedUpdate.Any',\n 'MessageManagement.ExtendedPurge.Any',\n 'MessageManagement.ProtectedContentUpdate.CreationMetadata',\n 'PatientManagement.Create',\n 'PatientManagement.ExtendedRead.Any',\n 'PatientManagement.ExtendedUpdate.Any',\n 'PatientManagement.ExtendedPurge.Any',\n 'PatientManagement.ProtectedContentUpdate.CreationMetadata',\n 'ReceiptManagement.Create',\n 'ReceiptManagement.ExtendedRead.Any',\n 'ReceiptManagement.ExtendedUpdate.Any',\n 'ReceiptManagement.ExtendedPurge.Any',\n 'ReceiptManagement.ProtectedContentUpdate.CreationMetadata',\n 'TimeTableManagement.Create',\n 'TimeTableManagement.ExtendedRead.Any',\n 'TimeTableManagement.ExtendedUpdate.Any',\n 'TimeTableManagement.ExtendedPurge.Any',\n 'TimeTableManagement.ProtectedContentUpdate.CreationMetadata',\n 'TopicManagement.Create',\n 'TopicManagement.ExtendedRead.Any',\n 'TopicManagement.ExtendedUpdate.Any',\n 'TopicManagement.ExtendedPurge.Any',\n 'TopicManagement.ProtectedContentUpdate.CreationMetadata',\n 'SystemMaintenance.TmpServiceUser',\n 'SystemMaintenance.ViewUpdate',\n 'SystemMaintenance.AutoResolveConflicts',\n 'SystemMaintenance.Metrics',\n 'SystemMaintenance.IndexingInfoReader',\n 'SystemMaintenance.ReplicationInfoReader',\n 'HealthcarePartyManagement.FullRead',\n 'HealthcarePartyManagement.Create.Any',\n 'HealthcarePartyManagement.Delete.Any',\n 'HealthcarePartyManagement.Update.Any',\n 'HealthcarePartyManagement.ProtectedContentUpdate.CreationMetadata',\n 'HealthcarePartyManagement.ProtectedContentUpdate.Parent',\n 'HealthcarePartyManagement.ProtectedContentUpdate.BankDetails',\n 'GroupManagement.Read.AdvancedInfo',\n 'ObjectStorageManagement.Read',\n 'ObjectStorageManagement.Create',\n ],\n}\n"]}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../test/utils/roles.ts"],"names":[],"mappings":"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","sourcesContent":["export const defaultRoles = {\n ANY_ACTING_SCOPE: ['DataOwner.ActingScope.OfChildren'],\n BASIC_DATA_OWNER: [\n 'HealthElementManagement.Create',\n 'HealthElementManagement.Purge',\n 'AccessLogManagement.Create',\n 'ArticleManagement.Create',\n 'ArticleManagement.Purge',\n 'CalendarItemManagement.Create',\n 'CalendarItemManagement.Purge',\n 'ClassificationManagement.Create',\n 'ClassificationManagement.Purge',\n 'ClassificationTemplateManagement.Create',\n 'CodeManagement.Read',\n 'ContactManagement.Create',\n 'ContactManagement.Purge',\n 'ServiceManagement.Create',\n 'ServiceManagement.Purge',\n 'DocumentManagement.Create',\n 'DocumentManagement.Purge',\n 'FormManagement.Create',\n 'FormManagement.Purge',\n 'FormTemplateManagement.Create',\n 'FormTemplateManagement.Read',\n 'FormTemplateManagement.Update',\n 'FormTemplateManagement.Delete',\n 'FormTemplateManagement.Purge',\n 'InvoiceManagement.Create',\n 'InvoiceManagement.Purge',\n 'MaintenanceTaskManagement.Create',\n 'MaintenanceTaskManagement.Purge',\n 'PatientManagement.Create',\n 'PatientManagement.Purge',\n 'ReceiptManagement.Create',\n 'ReceiptManagement.Purge',\n 'TimeTableManagement.Create',\n 'TimeTableManagement.Purge',\n 'AgendaManagement.Create',\n 'GroupManagement.Read.BasicInfo',\n ],\n HIERARCHICAL_DATA_OWNER: [\n 'ApplicationSettingsManagement.Create',\n 'ApplicationSettingsManagement.ExtendedRead.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedUpdate.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedPurge.DelegatedToParents',\n 'ExtendedEncryptionMetadataEntitiesManagement.ForParent',\n 'CryptoActorManagement.ExtendedExchangeKeysSearch.DelegatedToParents',\n 'HealthElementManagement.ExtendedRead.DelegatedToParents',\n 'AccessLogManagement.ExtendedRead.DelegatedToParents',\n 'ArticleManagement.ExtendedRead.DelegatedToParents',\n 'CalendarItemManagement.ExtendedRead.DelegatedToParents',\n 'ClassificationManagement.ExtendedRead.DelegatedToParents',\n 'ClassificationTemplateManagement.Read',\n 'ContactManagement.ExtendedRead.DelegatedToParents',\n 'ServiceManagement.ExtendedRead.DelegatedToParents',\n 'DocumentManagement.ExtendedRead.DelegatedToParents',\n 'FormManagement.ExtendedRead.DelegatedToParents',\n 'InvoiceManagement.ExtendedRead.DelegatedToParents',\n 'MaintenanceTaskManagement.ExtendedRead.DelegatedToParents',\n 'MessageManagement.ExtendedRead.DelegatedToParents',\n 'PatientManagement.ExtendedRead.DelegatedToParents',\n 'ReceiptManagement.ExtendedRead.DelegatedToParents',\n 'TimeTableManagement.ExtendedRead.DelegatedToParents',\n 'TopicManagement.ExtendedRead.DelegatedToParents',\n 'HealthElementManagement.ExtendedUpdate.DelegatedToParents',\n 'AccessLogManagement.ExtendedUpdate.DelegatedToParents',\n 'ArticleManagement.ExtendedUpdate.DelegatedToParents',\n 'CalendarItemManagement.ExtendedUpdate.DelegatedToParents',\n 'ClassificationManagement.ExtendedUpdate.DelegatedToParents',\n 'ClassificationTemplateManagement.Update',\n 'ContactManagement.ExtendedUpdate.DelegatedToParents',\n 'ServiceManagement.ExtendedUpdate.DelegatedToParents',\n 'DocumentManagement.ExtendedUpdate.DelegatedToParents',\n 'FormManagement.ExtendedUpdate.DelegatedToParents',\n 'InvoiceManagement.ExtendedUpdate.DelegatedToParents',\n 'MaintenanceTaskManagement.ExtendedUpdate.DelegatedToParents',\n 'MessageManagement.ExtendedUpdate.DelegatedToParents',\n 'PatientManagement.ExtendedUpdate.DelegatedToParents',\n 'ReceiptManagement.ExtendedUpdate.DelegatedToParents',\n 'TimeTableManagement.ExtendedUpdate.DelegatedToParents',\n 'TopicManagement.ExtendedUpdate.DelegatedToParents',\n 'HealthElementManagement.ExtendedPurge.DelegatedToParents',\n 'AccessLogManagement.ExtendedPurge.DelegatedToParents',\n 'ArticleManagement.ExtendedPurge.DelegatedToParents',\n 'CalendarItemManagement.ExtendedPurge.DelegatedToParents',\n 'ClassificationManagement.ExtendedPurge.DelegatedToParents',\n 'ClassificationTemplateManagement.Delete',\n 'ContactManagement.ExtendedPurge.DelegatedToParents',\n 'ServiceManagement.ExtendedPurge.DelegatedToParents',\n 'DocumentManagement.ExtendedPurge.DelegatedToParents',\n 'FormManagement.ExtendedPurge.DelegatedToParents',\n 'InvoiceManagement.ExtendedPurge.DelegatedToParents',\n 'MaintenanceTaskManagement.ExtendedPurge.DelegatedToParents',\n 'MessageManagement.ExtendedPurge.DelegatedToParents',\n 'PatientManagement.ExtendedPurge.DelegatedToParents',\n 'ReceiptManagement.ExtendedPurge.DelegatedToParents',\n 'TimeTableManagement.ExtendedPurge.DelegatedToParents',\n 'TopicManagement.ExtendedPurge.DelegatedToParents',\n 'SecureDelegationKeyMapManagement.ExtendedRead.DelegatedToParents',\n 'RecoveryDataManagement.ExtendedCreate.ForParent',\n 'RecoveryDataManagement.ExtendedRead.ForParent',\n 'RecoveryDataManagement.ExtendedDelete.ForParent',\n 'GroupManagement.Read.AdvancedInfo',\n ],\n PATIENT_USER_MANAGER: [\n 'UserManagement.Create.Patient',\n 'UserManagement.Read.Patient',\n 'UserManagement.Update.Patient.Secrets',\n 'UserManagement.Update.Patient.ContactDetails',\n 'UserManagement.Update.Patient.Roles',\n 'UserManagement.Update.Patient.Status',\n 'UserManagement.Update.Patient.DataOwnerDetails',\n 'UserManagement.Update.Patient.Basic',\n 'UserManagement.Update.Patient.Metadata',\n 'UserManagement.Delete.Patient',\n 'UserManagement.Search',\n 'RecoveryDataManagement.ExtendedCreate.Patient',\n 'RecoveryDataManagement.ExtendedRead.Patient',\n 'RecoveryDataManagement.ExtendedDelete.Patient',\n ],\n HCP_USER_MANAGER: [\n 'UserManagement.Create.HealthcareParty',\n 'UserManagement.Read.HealthcareParty',\n 'UserManagement.Update.HealthcareParty.Secrets',\n 'UserManagement.Update.HealthcareParty.ContactDetails',\n 'UserManagement.Update.HealthcareParty.Roles',\n 'UserManagement.Update.HealthcareParty.Status',\n 'UserManagement.Update.HealthcareParty.DataOwnerDetails',\n 'UserManagement.Update.HealthcareParty.Basic',\n 'UserManagement.Update.HealthcareParty.Metadata',\n 'UserManagement.Delete.HealthcareParty',\n 'UserManagement.Search',\n 'HealthcarePartyManagement.Create.Any',\n 'HealthcarePartyManagement.FullRead',\n 'HealthcarePartyManagement.Delete.Any',\n 'HealthcarePartyManagement.Update.Any',\n 'HealthcarePartyManagement.ProtectedContentUpdate.CreationMetadata',\n 'HealthcarePartyManagement.ProtectedContentUpdate.Parent',\n 'HealthcarePartyManagement.ProtectedContentUpdate.BankDetails',\n 'RecoveryDataManagement.ExtendedCreate.HealthcareParty',\n 'RecoveryDataManagement.ExtendedRead.HealthcareParty',\n 'RecoveryDataManagement.ExtendedDelete.HealthcareParty',\n ],\n DEVICE_USER_MANAGER: [\n 'UserManagement.Create.Device',\n 'UserManagement.Read.Device',\n 'UserManagement.Update.Device.Secrets',\n 'UserManagement.Update.Device.ContactDetails',\n 'UserManagement.Update.Device.Roles',\n 'UserManagement.Update.Device.Status',\n 'UserManagement.Update.Device.DataOwnerDetails',\n 'UserManagement.Update.Device.Basic',\n 'UserManagement.Update.Device.Metadata',\n 'UserManagement.Delete.Device',\n 'UserManagement.Search',\n 'RecoveryDataManagement.ExtendedCreate.Device',\n 'RecoveryDataManagement.ExtendedRead.Device',\n 'RecoveryDataManagement.ExtendedDelete.Device',\n 'DeviceManagement.Read.Any',\n 'DeviceManagement.Create',\n 'DeviceManagement.Purge.Any',\n 'DeviceManagement.Update.Any',\n 'DeviceManagement.Search',\n ],\n BASIC_USER: [\n 'UserManagement.Read.Own',\n 'UserManagement.Update.Own.Secrets',\n 'UserManagement.Update.Own.ContactDetails',\n 'UserManagement.Update.Own.Status',\n 'UserManagement.Update.Own.Basic',\n 'UserManagement.Update.Own.Metadata',\n 'UserManagement.Update.Own.VerifiedLoginIdentifiers',\n 'UserManagement.Delete.Own',\n 'GroupManagement.Read.BasicInfo',\n ],\n BASIC_USER_MANAGER: ['UserManagement.Create.Other'],\n TOPIC_PARTICIPANT: ['MessageManagement.ConditionalCreate.AsTopicParticipant', 'MessageManagement.Purge'],\n TOPIC_MANAGER: ['TopicManagement.Create'],\n LEGACY_MESSAGE_MANAGER: ['MessageManagement.Create', 'MessageManagement.Purge'],\n LEGACY_HCP: [\n 'ApplicationSettingsManagement.Create',\n 'ApplicationSettingsManagement.ExtendedRead.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedUpdate.DelegatedToParents',\n 'ApplicationSettingsManagement.ExtendedPurge.DelegatedToParents',\n 'ExtendedEncryptionMetadataEntitiesManagement.ForParent',\n 'UserManagement.Update.Own.LoginIdentifiers',\n 'AgendaManagement.Create',\n 'MessageManagement.ProtectedContentUpdate.ReadStatus',\n 'MessageManagement.ReadStatusUpdate.UnrestrictedUser',\n 'MessageManagement.ReadStatusUpdate.UnrestrictedTime',\n 'MessageManagement.ReadStatusUpdate.UnrestrictedEntryOverride',\n 'CryptoActorManagement.ExtendedUpdate.Patient.PublicKeys',\n 'CryptoActorManagement.ExtendedUpdate.Patient.AnyExchangeKeys',\n 'CryptoActorManagement.ExtendedUpdate.Patient.RecoveryData',\n 'CryptoActorManagement.ExtendedUpdate.HealthcareParty.PublicKeys',\n 'CryptoActorManagement.ExtendedUpdate.HealthcareParty.AnyExchangeKeys',\n 'CryptoActorManagement.ExtendedUpdate.HealthcareParty.RecoveryData',\n 'CryptoActorManagement.ExtendedExchangeKeysSearch.Any',\n 'UserManagement.Create.HealthcareParty',\n 'UserManagement.Create.Patient',\n 'UserManagement.Create.Device',\n 'UserManagement.Read.Own',\n 'UserManagement.Read.Admin',\n 'UserManagement.Read.HealthcareParty',\n 'UserManagement.Read.Patient',\n 'UserManagement.Read.Device',\n 'UserManagement.Read.Other',\n 'UserManagement.Search',\n 'UserManagement.Update.Own.Basic',\n 'UserManagement.Update.Own.ContactDetails',\n 'UserManagement.Update.Own.Status',\n 'UserManagement.Update.HealthcareParty.Basic',\n 'UserManagement.Update.HealthcareParty.ContactDetails',\n 'UserManagement.Update.HealthcareParty.Status',\n 'UserManagement.Update.HealthcareParty.Secrets',\n 'UserManagement.Update.Patient.Basic',\n 'UserManagement.Update.Patient.ContactDetails',\n 'UserManagement.Update.Patient.Status',\n 'UserManagement.Update.Patient.Secrets',\n 'UserManagement.Update.Patient.DataOwnerDetails',\n 'UserManagement.Update.Patient.Roles',\n 'UserManagement.Update.Device.Basic',\n 'UserManagement.Update.Device.ContactDetails',\n 'UserManagement.Update.Device.Status',\n 'UserManagement.Update.Device.Secrets',\n 'UserManagement.Update.Device.DataOwnerDetails',\n 'UserManagement.Update.Device.Roles',\n 'UserManagement.Update.Other.Basic',\n 'UserManagement.Update.Other.ContactDetails',\n 'UserManagement.Update.Other.Status',\n 'UserManagement.Update.Other.Secrets',\n 'UserManagement.Update.Other.DataOwnerDetails',\n 'UserManagement.Update.Other.Roles',\n 'UserManagement.Delete.Own',\n 'UserManagement.Delete.Admin',\n 'UserManagement.Delete.HealthcareParty',\n 'UserManagement.Delete.Patient',\n 'UserManagement.Delete.Device',\n 'UserManagement.Delete.Other',\n 'HealthElementManagement.Create',\n 'HealthElementManagement.ExtendedRead.Any',\n 'HealthElementManagement.ExtendedUpdate.Any',\n 'HealthElementManagement.ExtendedPurge.Any',\n 'HealthElementManagement.ProtectedContentUpdate.CreationMetadata',\n 'AccessLogManagement.Create',\n 'AccessLogManagement.ExtendedRead.Any',\n 'AccessLogManagement.ExtendedUpdate.Any',\n 'AccessLogManagement.ExtendedPurge.Any',\n 'AccessLogManagement.ProtectedContentUpdate.CreationMetadata',\n 'AccessLogManagement.AggregatePatientsByUser.Any',\n 'ArticleManagement.Create',\n 'ArticleManagement.ExtendedRead.Any',\n 'ArticleManagement.ExtendedUpdate.Any',\n 'ArticleManagement.ExtendedPurge.Any',\n 'ArticleManagement.ProtectedContentUpdate.CreationMetadata',\n 'CalendarItemManagement.Create',\n 'CalendarItemManagement.ExtendedRead.Any',\n 'CalendarItemManagement.ExtendedUpdate.Any',\n 'CalendarItemManagement.ExtendedPurge.Any',\n 'CalendarItemManagement.ProtectedContentUpdate.CreationMetadata',\n 'ClassificationManagement.Create',\n 'ClassificationManagement.ExtendedRead.Any',\n 'ClassificationManagement.ExtendedUpdate.Any',\n 'ClassificationManagement.ExtendedPurge.Any',\n 'ClassificationManagement.ProtectedContentUpdate.CreationMetadata',\n 'ClassificationTemplateManagement.Create',\n 'ClassificationTemplateManagement.Read',\n 'ClassificationTemplateManagement.Update',\n 'ClassificationTemplateManagement.Delete',\n 'ClassificationTemplateManagement.ProtectedContentUpdate.CreationMetadata',\n 'ContactManagement.Create',\n 'ContactManagement.ExtendedRead.Any',\n 'ContactManagement.ExtendedUpdate.Any',\n 'ContactManagement.ExtendedPurge.Any',\n 'ContactManagement.ProtectedContentUpdate.CreationMetadata',\n 'ServiceManagement.ExtendedRead.Any',\n 'DocumentManagement.Create',\n 'DocumentManagement.ExtendedRead.Any',\n 'DocumentManagement.ExtendedUpdate.Any',\n 'DocumentManagement.ExtendedPurge.Any',\n 'DocumentManagement.ProtectedContentUpdate.CreationMetadata',\n 'FormManagement.Create',\n 'FormManagement.ExtendedRead.Any',\n 'FormManagement.ExtendedUpdate.Any',\n 'FormManagement.ExtendedPurge.Any',\n 'FormManagement.ProtectedContentUpdate.CreationMetadata',\n 'InvoiceManagement.Create',\n 'InvoiceManagement.ExtendedRead.Any',\n 'InvoiceManagement.ExtendedUpdate.Any',\n 'InvoiceManagement.ExtendedPurge.Any',\n 'InvoiceManagement.ProtectedContentUpdate.CreationMetadata',\n 'InvoiceManagement.Maintenance.InvoicingCodesUpdate.Any',\n 'InvoiceManagement.Maintenance.CanGetInvoicesForUsersAndInsurances',\n 'MaintenanceTaskManagement.Create',\n 'MaintenanceTaskManagement.ExtendedRead.Any',\n 'MaintenanceTaskManagement.ExtendedUpdate.Any',\n 'MaintenanceTaskManagement.ExtendedPurge.Any',\n 'MaintenanceTaskManagement.ProtectedContentUpdate.CreationMetadata',\n 'MessageManagement.Create',\n 'MessageManagement.ExtendedRead.Any',\n 'MessageManagement.ExtendedUpdate.Any',\n 'MessageManagement.ExtendedPurge.Any',\n 'MessageManagement.ProtectedContentUpdate.CreationMetadata',\n 'PatientManagement.Create',\n 'PatientManagement.ExtendedRead.Any',\n 'PatientManagement.ExtendedUpdate.Any',\n 'PatientManagement.ExtendedPurge.Any',\n 'PatientManagement.ProtectedContentUpdate.CreationMetadata',\n 'ReceiptManagement.Create',\n 'ReceiptManagement.ExtendedRead.Any',\n 'ReceiptManagement.ExtendedUpdate.Any',\n 'ReceiptManagement.ExtendedPurge.Any',\n 'ReceiptManagement.ProtectedContentUpdate.CreationMetadata',\n 'TimeTableManagement.Create',\n 'TimeTableManagement.ExtendedRead.Any',\n 'TimeTableManagement.ExtendedUpdate.Any',\n 'TimeTableManagement.ExtendedPurge.Any',\n 'TimeTableManagement.ProtectedContentUpdate.CreationMetadata',\n 'TopicManagement.Create',\n 'TopicManagement.ExtendedRead.Any',\n 'TopicManagement.ExtendedUpdate.Any',\n 'TopicManagement.ExtendedPurge.Any',\n 'TopicManagement.ProtectedContentUpdate.CreationMetadata',\n 'SystemMaintenance.TmpServiceUser',\n 'SystemMaintenance.ViewUpdate',\n 'SystemMaintenance.AutoResolveConflicts',\n 'SystemMaintenance.Metrics',\n 'SystemMaintenance.IndexingInfoReader',\n 'SystemMaintenance.ReplicationInfoReader',\n 'HealthcarePartyManagement.FullRead',\n 'HealthcarePartyManagement.Create.Any',\n 'HealthcarePartyManagement.Delete.Any',\n 'HealthcarePartyManagement.Update.Any',\n 'HealthcarePartyManagement.ProtectedContentUpdate.CreationMetadata',\n 'HealthcarePartyManagement.ProtectedContentUpdate.Parent',\n 'HealthcarePartyManagement.ProtectedContentUpdate.BankDetails',\n 'GroupManagement.Read.AdvancedInfo',\n 'ObjectStorageManagement.Read',\n 'ObjectStorageManagement.Create',\n ],\n}\n"]}
@@ -43,7 +43,6 @@ const icc_api_1 = require("../../icc-api");
43
43
  const mocha_1 = require("mocha");
44
44
  const Patient_1 = require("../../icc-api/model/Patient");
45
45
  const KeylessCryptoStrategies_1 = require("./KeylessCryptoStrategies");
46
- const XHR_1 = require("../../icc-api/api/XHR");
47
46
  const roles_1 = require("./roles");
48
47
  function getTempEmail() {
49
48
  return `${(0, uuid_1.v4)().substring(0, 8)}@icure.com`;
@@ -68,26 +67,6 @@ function getEnvironmentInitializer() {
68
67
  if (!cachedInitializer) {
69
68
  const env = (0, types_1.getEnvVariables)();
70
69
  const scratchDir = 'test/scratch';
71
- if (env.testEnvironment == 'docker') {
72
- const defaultRolesRequestBody = {
73
- docs: Object.entries(roles_1.defaultRoles).map(([roleName, permissions]) => {
74
- return {
75
- _id: roleName,
76
- name: roleName,
77
- permissions: permissions,
78
- java_type: 'org.taktik.icure.entities.Role',
79
- };
80
- }),
81
- };
82
- try {
83
- const res = yield XHR_1.XHR.sendCommand('POST', `${env.couchDbUrl}/icure-__-config/_bulk_docs`, [new XHR_1.XHR.Header('Authorization', 'Basic aWN1cmU6aWN1cmU='), new XHR_1.XHR.Header('Content-Type', 'application/json')], defaultRolesRequestBody, fetch);
84
- if (res.statusCode < 200 || res.statusCode > 299)
85
- throw new Error(`Failed to setup initial roles ${res.body}`);
86
- }
87
- catch (e) {
88
- throw new Error('TODO: this request will fail if docker not yet initialised, env initialization fails if this is not done; current workaround: restart without this request to setup docker, then after restart with this request and it will work');
89
- }
90
- }
91
70
  const baseEnvironment = env.testEnvironment === 'docker' || env.testEnvironment === 'oss'
92
71
  ? new builder_1.TestEnvironmentBuilder().setUpDockerEnvironment(scratchDir, ['mock'])
93
72
  : new builder_1.TestEnvironmentBuilder();
@@ -107,6 +86,7 @@ function getEnvironmentInitializer() {
107
86
  user: ['BASIC_USER'],
108
87
  })
109
88
  .withMasterUser(fetch)
89
+ .withRoles(roles_1.defaultRoles)
110
90
  .addHcp({ login: exports.hcp1Username })
111
91
  .addHcp({ login: exports.hcp2Username })
112
92
  .addHcp({ login: exports.hcp3Username })
@@ -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 BasicAuthenticationProvider,\n EncryptedFieldsConfig,\n hex2ua,\n IcureApi,\n IcureApiOptions,\n IcureBasicApi,\n retry,\n RSAUtilsImpl,\n ShaVersion,\n ua2ab,\n ua2hex,\n WebCryptoPrimitives,\n} from '../../icc-x-api'\nimport { tmpdir } from 'os'\nimport { TextDecoder, TextEncoder } from 'util'\nimport { v4 as uuid } from 'uuid'\nimport { randomUUID, webcrypto } from 'crypto'\nimport { TestApi } from './TestApi'\nimport { IcureApi as TestSetupApi } from '@icure/apiV7'\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'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\nimport { KeyPairRecoverer } from '../../icc-x-api/crypto/KeyPairRecoverer'\nimport { KeylessCryptoStrategies } from './KeylessCryptoStrategies'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { defaultRoles } from './roles'\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 if (env.testEnvironment == 'docker') {\n const defaultRolesRequestBody = {\n docs: Object.entries(defaultRoles).map(([roleName, permissions]) => {\n return {\n _id: roleName,\n name: roleName,\n permissions: permissions,\n java_type: 'org.taktik.icure.entities.Role',\n }\n }),\n }\n try {\n const res = await XHR.sendCommand(\n 'POST',\n `${env.couchDbUrl}/icure-__-config/_bulk_docs`,\n [new XHR.Header('Authorization', 'Basic aWN1cmU6aWN1cmU='), new XHR.Header('Content-Type', 'application/json')],\n defaultRolesRequestBody,\n fetch\n )\n if (res.statusCode < 200 || res.statusCode > 299) throw new Error(`Failed to setup initial roles ${res.body}`)\n } catch (e) {\n throw new Error(\n 'TODO: this request will fail if docker not yet initialised, env initialization fails if this is not done; current workaround: restart without this request to setup docker, then after restart with this request and it will work'\n )\n }\n }\n\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', ua2ab(hex2ua(details.publicKey)), ['encrypt'], ShaVersion.Sha1),\n privateKey: await RSA.importKey('pkcs8', ua2ab(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(\n env: TestVars,\n options: {\n encryptedFieldsConfig?: EncryptedFieldsConfig\n } = {}\n): Promise<{\n api: IcureApi\n credentials: UserDetails\n user: User\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new WebCryptoPrimitives(webcrypto as any)\n const credentials = await createHealthcarePartyUser(initialisationApi, `user-${primitives.randomUuid()}@icure.com`, 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 encryptedFieldsConfig: options.encryptedFieldsConfig,\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 WebCryptoPrimitives(webcrypto as any)\n const credentials = await createPatientUser(initialisationApi, `user-${primitives.randomUuid()}@icure.com`, 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 createNewKeylessApi(env: TestVars): Promise<{\n api: IcureApi\n credentials: { username: string; password: string }\n}> {\n const initialisationApi = await IcureBasicApi.initialise(env.iCureUrl, { username: env.masterHcp!.user, password: env.masterHcp!.password }, fetch)\n const login = `${randomUUID()}@test.icure.com`\n const password = randomUUID()\n const patient = new Patient({\n id: randomUUID(),\n firstName: 'Gino',\n lastName: 'Pino',\n })\n const user = new User({\n id: randomUUID(),\n login,\n passwordHash: password,\n patientId: patient.id,\n })\n await initialisationApi.userApi.createUser(user)\n await initialisationApi.patientApi.createPatient(patient)\n const credentials = { username: login, password }\n const cryptoStrategies = new KeylessCryptoStrategies()\n const api = await IcureApi.initialise(env.iCureUrl, credentials, cryptoStrategies, webcrypto as any, fetch, {})\n if (!cryptoStrategies.requestedKey) throw new Error('Illegal state: did not request key')\n return { api, credentials }\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 WebCryptoPrimitives(webcrypto as any)\n const grandCredentials = await createHealthcarePartyUser(initialisationApi, `grand-${primitives.randomUuid()}@icure.com`, primitives.randomUuid())\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}@icure.com`, primitives.randomUuid())\n const childCredentials = await createHealthcarePartyUser(initialisationApi, `child-${primitives.randomUuid()}@icure.com`, primitives.randomUuid())\n const child2Credentials = await createHealthcarePartyUser(initialisationApi, `child2-${primitives.randomUuid()}@icure.com`, 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 WebCryptoPrimitives(webcrypto as any)\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}@icure.com`, 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 WebCryptoPrimitives(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 IcureBasicApi.initialise(env.iCureUrl, { username: 'john', password: 'LetMeIn' }, 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 BasicAuthenticationProvider,\n EncryptedFieldsConfig,\n hex2ua,\n IcureApi,\n IcureApiOptions,\n IcureBasicApi,\n retry,\n RSAUtilsImpl,\n ShaVersion,\n ua2ab,\n ua2hex,\n WebCryptoPrimitives,\n} from '../../icc-x-api'\nimport { tmpdir } from 'os'\nimport { TextDecoder, TextEncoder } from 'util'\nimport { v4 as uuid } from 'uuid'\nimport { randomUUID, webcrypto } from 'crypto'\nimport { TestApi } from './TestApi'\nimport { IcureApi as TestSetupApi } from '@icure/apiV7'\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'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\nimport { KeyPairRecoverer } from '../../icc-x-api/crypto/KeyPairRecoverer'\nimport { KeylessCryptoStrategies } from './KeylessCryptoStrategies'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { defaultRoles } from './roles'\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\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 .withRoles(defaultRoles)\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', ua2ab(hex2ua(details.publicKey)), ['encrypt'], ShaVersion.Sha1),\n privateKey: await RSA.importKey('pkcs8', ua2ab(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(\n env: TestVars,\n options: {\n encryptedFieldsConfig?: EncryptedFieldsConfig\n } = {}\n): Promise<{\n api: IcureApi\n credentials: UserDetails\n user: User\n}> {\n const initialisationApi = await testSetupMasterApi(env)\n const primitives = new WebCryptoPrimitives(webcrypto as any)\n const credentials = await createHealthcarePartyUser(initialisationApi, `user-${primitives.randomUuid()}@icure.com`, 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 encryptedFieldsConfig: options.encryptedFieldsConfig,\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 WebCryptoPrimitives(webcrypto as any)\n const credentials = await createPatientUser(initialisationApi, `user-${primitives.randomUuid()}@icure.com`, 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 createNewKeylessApi(env: TestVars): Promise<{\n api: IcureApi\n credentials: { username: string; password: string }\n}> {\n const initialisationApi = await IcureBasicApi.initialise(env.iCureUrl, { username: env.masterHcp!.user, password: env.masterHcp!.password }, fetch)\n const login = `${randomUUID()}@test.icure.com`\n const password = randomUUID()\n const patient = new Patient({\n id: randomUUID(),\n firstName: 'Gino',\n lastName: 'Pino',\n })\n const user = new User({\n id: randomUUID(),\n login,\n passwordHash: password,\n patientId: patient.id,\n })\n await initialisationApi.userApi.createUser(user)\n await initialisationApi.patientApi.createPatient(patient)\n const credentials = { username: login, password }\n const cryptoStrategies = new KeylessCryptoStrategies()\n const api = await IcureApi.initialise(env.iCureUrl, credentials, cryptoStrategies, webcrypto as any, fetch, {})\n if (!cryptoStrategies.requestedKey) throw new Error('Illegal state: did not request key')\n return { api, credentials }\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 WebCryptoPrimitives(webcrypto as any)\n const grandCredentials = await createHealthcarePartyUser(initialisationApi, `grand-${primitives.randomUuid()}@icure.com`, primitives.randomUuid())\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}@icure.com`, primitives.randomUuid())\n const childCredentials = await createHealthcarePartyUser(initialisationApi, `child-${primitives.randomUuid()}@icure.com`, primitives.randomUuid())\n const child2Credentials = await createHealthcarePartyUser(initialisationApi, `child2-${primitives.randomUuid()}@icure.com`, 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 WebCryptoPrimitives(webcrypto as any)\n const parentCredentials = await createHealthcarePartyUser(initialisationApi, `parent-${primitives.randomUuid()}@icure.com`, 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 WebCryptoPrimitives(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 IcureBasicApi.initialise(env.iCureUrl, { username: 'john', password: 'LetMeIn' }, 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"]}