passbolt-styleguide 3.8.4 → 3.9.0-alpha2

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 (318) hide show
  1. package/build/css/help.min.css +3 -3
  2. package/build/css/public.min.css +3 -3
  3. package/build/css/themes/default/api_authentication.min.css +3 -3
  4. package/build/css/themes/default/api_cloud.min.css +3 -3
  5. package/build/css/themes/default/api_main.min.css +3 -3
  6. package/build/css/themes/default/api_reports.min.css +3 -3
  7. package/build/css/themes/default/api_webinstaller.min.css +3 -3
  8. package/build/css/themes/default/ext_app.min.css +3 -3
  9. package/build/css/themes/default/ext_authentication.min.css +3 -3
  10. package/build/css/themes/default/ext_external.min.css +2 -2
  11. package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
  12. package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
  13. package/build/css/themes/default/ext_quickaccess.min.css +3 -3
  14. package/build/css/themes/midgar/api_authentication.min.css +3 -3
  15. package/build/css/themes/midgar/api_main.min.css +3 -3
  16. package/build/css/themes/midgar/api_reports.min.css +3 -3
  17. package/build/css/themes/midgar/ext_app.min.css +3 -3
  18. package/build/css/themes/midgar/ext_authentication.min.css +3 -3
  19. package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
  20. package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
  21. package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
  22. package/build/css/themes/solarized_dark/api_authentication.min.css +1 -1
  23. package/build/css/themes/solarized_dark/api_main.min.css +1 -1
  24. package/build/css/themes/solarized_dark/api_reports.min.css +1 -1
  25. package/build/css/themes/solarized_dark/ext_app.min.css +1 -1
  26. package/build/css/themes/solarized_dark/ext_authentication.min.css +1 -1
  27. package/build/css/themes/solarized_dark/ext_in_form_cta.min.css +1 -1
  28. package/build/css/themes/solarized_dark/ext_in_form_menu.min.css +1 -1
  29. package/build/css/themes/solarized_dark/ext_quickaccess.min.css +1 -1
  30. package/build/css/themes/solarized_light/api_authentication.min.css +1 -1
  31. package/build/css/themes/solarized_light/api_main.min.css +1 -1
  32. package/build/css/themes/solarized_light/api_reports.min.css +1 -1
  33. package/build/css/themes/solarized_light/ext_app.min.css +1 -1
  34. package/build/css/themes/solarized_light/ext_authentication.min.css +1 -1
  35. package/build/css/themes/solarized_light/ext_in_form_cta.min.css +1 -1
  36. package/build/css/themes/solarized_light/ext_in_form_menu.min.css +1 -1
  37. package/build/css/themes/solarized_light/ext_quickaccess.min.css +1 -1
  38. package/build/js/dist/api-account-recovery.js +1 -1
  39. package/build/js/dist/api-app.js +1 -1
  40. package/build/js/dist/api-app.js.LICENSE.txt +75 -5
  41. package/build/js/dist/api-feedback.js +2 -0
  42. package/build/js/dist/api-feedback.js.LICENSE.txt +45 -0
  43. package/build/js/dist/api-recover.js +1 -1
  44. package/build/js/dist/api-setup.js +1 -1
  45. package/build/js/dist/api-triage.js +1 -1
  46. package/build/js/dist/api-vendors.js +1 -1
  47. package/build/js/dist/api-vendors.js.LICENSE.txt +19 -9
  48. package/build/js/dist/src/locales/de-DE/common.json +995 -0
  49. package/build/js/dist/src/locales/en-UK/common.json +1061 -0
  50. package/build/js/dist/src/locales/es-ES/common.json +995 -0
  51. package/build/js/dist/src/locales/fr-FR/common.json +995 -0
  52. package/build/js/dist/src/locales/ja-JP/common.json +980 -0
  53. package/build/js/dist/src/locales/lt-LT/common.json +1025 -0
  54. package/build/js/dist/src/locales/nl-NL/common.json +995 -0
  55. package/build/js/dist/src/locales/pl-PL/common.json +1025 -0
  56. package/build/js/dist/src/locales/sv-SE/common.json +995 -0
  57. package/package.json +18 -1
  58. package/src/img/controls/attention.svg +1 -0
  59. package/src/locales/en-UK/common.json +80 -16
  60. package/src/react-extension/ApiApp.js +17 -5
  61. package/src/react-extension/ApiFeedback.entry.js +24 -0
  62. package/src/react-extension/ExtApp.js +12 -5
  63. package/src/react-extension/ExtAuthenticationLogin.js +17 -15
  64. package/src/react-extension/ExtAuthenticationLogin.test.stories.js +59 -0
  65. package/src/react-extension/ExtBootstrapApp.js +1 -0
  66. package/src/react-extension/components/Administration/AdministrationWorkspace.js +24 -0
  67. package/src/react-extension/components/Administration/AdministrationWorkspace.test.data.js +3 -3
  68. package/src/react-extension/components/Administration/AdministrationWorkspace.test.js +13 -1
  69. package/src/react-extension/components/Administration/AdministrationWorkspace.test.page.js +7 -0
  70. package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.js +101 -0
  71. package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.data.js +23 -0
  72. package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.stories.js +27 -0
  73. package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +1 -1
  74. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +78 -2
  75. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.data.js +3 -1
  76. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +60 -0
  77. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.page.js +23 -4
  78. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationInternationalisationActions/DisplayAdministrationInternationalisationActions.js +125 -0
  79. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationMfaActions/DisplayAdministrationMfaActions.js +131 -0
  80. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSelfRegistrationActions/DisplayAdministrationSelfRegistrationActions.js +103 -0
  81. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSsoActions/DisplayAdministrationSsoActions.js +91 -0
  82. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSubscriptionActions/DisplayAdministrationSubscriptionActions.js +85 -0
  83. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationUserDirectoryActions/DisplayAdministrationUserDirectoryActions.js +228 -0
  84. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +4 -0
  85. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +9 -0
  86. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +3 -3
  87. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.data.js +14 -0
  88. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.page.js +0 -17
  89. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +18 -115
  90. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.data.js +11 -13
  91. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.js +38 -43
  92. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.page.js +47 -10
  93. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.stories.js +10 -43
  94. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +82 -367
  95. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.data.js +128 -42
  96. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.js +75 -121
  97. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.page.js +46 -16
  98. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +18 -14
  99. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.js +103 -0
  100. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.js +53 -0
  101. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.page.js +81 -0
  102. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.stories.js +34 -0
  103. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.js +125 -0
  104. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.data.js +63 -0
  105. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.js +54 -0
  106. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.page.js +88 -0
  107. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.stories.js +35 -0
  108. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.js +381 -0
  109. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.data.js +69 -0
  110. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.js +332 -0
  111. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.page.js +247 -0
  112. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.stories.js +72 -0
  113. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +19 -19
  114. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.data.js +1717 -1729
  115. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +11 -3
  116. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.page.js +4 -1
  117. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
  118. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +41 -140
  119. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +15 -3
  120. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +22 -49
  121. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.page.js +19 -11
  122. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.stories.js +9 -3
  123. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +5 -6
  124. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.data.js +1717 -1728
  125. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +11 -3
  126. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.page.js +4 -1
  127. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
  128. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +362 -835
  129. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data.js +427 -418
  130. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.js +134 -175
  131. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.page.js +108 -11
  132. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +17 -25
  133. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +4 -2
  134. package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +3 -3
  135. package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.js +1 -1
  136. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.js +32 -7
  137. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.data.js +0 -3
  138. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.js +145 -1
  139. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.page.js +52 -1
  140. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.stories.js +15 -0
  141. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.js +340 -0
  142. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.data.js +56 -0
  143. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.js +223 -0
  144. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.page.js +235 -0
  145. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.stories.js +55 -0
  146. package/src/react-extension/components/Administration/ManageSsoSettings/SsoProviders.data.js +34 -0
  147. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +12 -3
  148. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +27 -0
  149. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +8 -0
  150. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.js +197 -0
  151. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.data.js +37 -0
  152. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.js +187 -0
  153. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.page.js +120 -0
  154. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.stories.js +31 -0
  155. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +9 -5
  156. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.data.js +4 -0
  157. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.js +11 -42
  158. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.page.js +1 -0
  159. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +9 -5
  160. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.data.js +4 -0
  161. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +16 -2
  162. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.page.js +17 -1
  163. package/src/react-extension/components/AuthenticationLogin/Login/Login.js +159 -61
  164. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.data.js +14 -11
  165. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.js +79 -0
  166. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.page.js +16 -0
  167. package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +2 -0
  168. package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +4 -0
  169. package/src/react-extension/components/Common/Error/ApiError/ApiError.js +119 -0
  170. package/src/react-extension/components/Common/Error/ApiError/ApiError.test.js +43 -0
  171. package/src/react-extension/components/Common/Error/ApiError/ApiError.test.page.js +108 -0
  172. package/src/react-extension/components/Common/Error/ApiError/ApiError.test.stories.js +39 -0
  173. package/src/react-extension/components/Common/Inputs/Autocomplete/Autocomplete.test.js +12 -0
  174. package/src/react-extension/components/Common/Inputs/Autocomplete/AutocompleteItem.js +2 -2
  175. package/src/react-extension/components/Common/Legacy/HandleLegacyAppjs.js +1 -1
  176. package/src/react-extension/components/Common/Navigation/Header/Logo.js +13 -1
  177. package/src/react-extension/components/Resource/CreateResource/CreateResource.js +103 -30
  178. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +44 -10
  179. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.page.js +35 -7
  180. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +3 -3
  181. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesListContextualMenu.js +6 -5
  182. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +5 -4
  183. package/src/react-extension/components/Resource/EditResource/EditResource.js +95 -23
  184. package/src/react-extension/components/Resource/EditResource/EditResource.test.js +45 -13
  185. package/src/react-extension/components/Resource/EditResource/EditResource.test.page.js +35 -2
  186. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetails.js +2 -1
  187. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.js +3 -2
  188. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +23 -2
  189. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.js +8 -0
  190. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.page.js +26 -2
  191. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +22 -1
  192. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.js +8 -0
  193. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.page.js +25 -2
  194. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetails.js +2 -1
  195. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +2 -1
  196. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +14 -1
  197. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.js +8 -0
  198. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.page.js +12 -0
  199. package/src/react-extension/components/User/CreateUser/CreateUser.js +42 -3
  200. package/src/react-extension/components/User/CreateUser/CreateUser.test.js +16 -0
  201. package/src/react-extension/components/User/CreateUser/CreateUser.test.page.js +26 -0
  202. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +2 -1
  203. package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.js +5 -5
  204. package/src/react-extension/components/User/EditUser/EditUser.js +29 -2
  205. package/src/react-extension/components/User/EditUser/EditUser.test.js +12 -0
  206. package/src/react-extension/components/User/EditUser/EditUser.test.page.js +26 -0
  207. package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +2 -1
  208. package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.data.js +1332 -1331
  209. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +2 -1
  210. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +19 -1
  211. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.js +9 -0
  212. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.page.js +12 -0
  213. package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.js +2 -1
  214. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +16 -1
  215. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +8 -0
  216. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +26 -1
  217. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
  218. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +6 -4
  219. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +4 -1
  220. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +21 -11
  221. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +10 -1
  222. package/src/react-extension/contexts/AdminSmtpSettingsContext.js +2 -0
  223. package/src/react-extension/contexts/AdminSmtpSettingsContext.test.data.js +13 -0
  224. package/src/react-extension/contexts/AdminSmtpSettingsContext.test.js +3 -1
  225. package/src/react-extension/contexts/AdminSsoContext.js +558 -0
  226. package/src/react-extension/contexts/AdminSsoContext.test.data.js +51 -0
  227. package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.js +194 -0
  228. package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.test.js +111 -0
  229. package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.js +265 -0
  230. package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.test.js +178 -0
  231. package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.js +453 -0
  232. package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.test.js +218 -0
  233. package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.js +168 -0
  234. package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.test.js +73 -0
  235. package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.js +353 -0
  236. package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.test.js +220 -0
  237. package/src/react-extension/contexts/AdministrationWorkspaceContext.js +17 -178
  238. package/src/react-extension/contexts/AdministrationWorkspaceContext.test.js +0 -26
  239. package/src/react-extension/contexts/ApiAppContext.test.data.js +4 -2
  240. package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.js +54 -4
  241. package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.data.js +10 -1
  242. package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.js +92 -14
  243. package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.js +1 -0
  244. package/src/react-extension/contexts/NavigationContext.js +34 -0
  245. package/src/react-extension/contexts/SsoContext.js +151 -0
  246. package/src/react-extension/contexts/SsoContext.test.data.js +36 -0
  247. package/src/react-extension/contexts/SsoContext.test.js +104 -0
  248. package/src/react-extension/lib/Domain/DomainUtil.js +70 -0
  249. package/src/react-extension/lib/Domain/DomainUtil.test.js +129 -0
  250. package/src/react-extension/lib/Domain/Domains.js +6113 -0
  251. package/src/react-extension/lib/Error/InputValidator.js +24 -0
  252. package/src/react-extension/lib/Map/DynamicRef.js +49 -0
  253. package/src/react-extension/lib/Map/DynamicRef.test.js +56 -0
  254. package/src/react-extension/lib/Map/MapObject.js +48 -0
  255. package/src/react-extension/lib/Map/MapObject.test.js +43 -0
  256. package/src/react-quickaccess/ExtQuickAccess.js +7 -4
  257. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +3 -1
  258. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.data.js +4 -0
  259. package/src/react-quickaccess/components/LoginPage/LoginPage.js +115 -4
  260. package/src/react-quickaccess/components/LoginPage/LoginPage.test.data.js +10 -0
  261. package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +30 -3
  262. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +33 -1
  263. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +25 -0
  264. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.js +60 -0
  265. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.page.js +60 -0
  266. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +33 -1
  267. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +36 -7
  268. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +3 -2
  269. package/src/react-quickaccess/contexts/SsoContext.js +150 -0
  270. package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +5 -0
  271. package/src/shared/constants/inputs.const.js +30 -0
  272. package/src/shared/lib/Browser/clipBoard.js +45 -0
  273. package/src/shared/lib/Browser/clipBoard.test.js +59 -0
  274. package/src/shared/models/Mfa/Duo.js +36 -0
  275. package/src/shared/models/Mfa/Duo.test.js +59 -0
  276. package/src/shared/models/Mfa/MfaDTO.js +51 -0
  277. package/src/shared/models/Mfa/MfaDTO.test.js +48 -0
  278. package/src/shared/models/Mfa/MfaEnumeration.js +17 -0
  279. package/src/shared/models/Mfa/MfaModel.js +48 -0
  280. package/src/shared/models/Mfa/MfaModel.test.js +37 -0
  281. package/src/shared/models/Mfa/Yubikey.js +35 -0
  282. package/src/shared/models/Mfa/Yubikey.test.js +47 -0
  283. package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.js +55 -0
  284. package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.test.js +37 -0
  285. package/src/shared/models/selfRegistration/SelfRegistrationDto.js +42 -0
  286. package/src/shared/models/selfRegistration/SelfRegistrationDto.test.js +48 -0
  287. package/src/shared/models/selfRegistration/SelfRegistrationEnumeration.js +17 -0
  288. package/src/shared/models/subscription/SubscriptionDto.js +34 -0
  289. package/src/shared/models/subscription/SubscriptionDto.test.js +31 -0
  290. package/src/shared/models/subscription/SubscriptionModel.js +33 -0
  291. package/src/shared/models/subscription/SubscriptionModel.test.js +48 -0
  292. package/src/shared/models/user/UserModel.js +37 -0
  293. package/src/shared/models/userDirectory/UserDirectoryDTO.js +57 -0
  294. package/src/shared/models/userDirectory/UserDirectoryDTO.test.js +40 -0
  295. package/src/shared/models/userDirectory/UserDirectoryEnum.js +22 -0
  296. package/src/shared/models/userDirectory/UserDirectoryModel.js +64 -0
  297. package/src/shared/models/userDirectory/UserDirectoryModel.test.js +37 -0
  298. package/src/shared/services/actions/subscription/SubscriptionActionService.js +69 -0
  299. package/src/shared/services/actions/subscription/SubscriptionActionService.test.js +73 -0
  300. package/src/shared/services/api/Internationalisation/InternationalisationService.js +46 -0
  301. package/src/shared/services/api/Mfa/MfaService.js +54 -0
  302. package/src/shared/services/{accountRecovery → api/accountRecovery}/ApiAppAccountRecoveryUserService.js +2 -2
  303. package/src/shared/services/{accountRecovery → api/accountRecovery}/ExtAppAccountRecoveryUserService.js +0 -0
  304. package/src/shared/services/api/secrets/pownedService.js +64 -0
  305. package/src/shared/services/api/secrets/pownedService.test.js +63 -0
  306. package/src/shared/services/api/selfRegistration/selfRegistrationService.js +64 -0
  307. package/src/shared/services/api/user/UserService.js +45 -0
  308. package/src/shared/services/api/userDirectory/UserDirectoryService.js +108 -0
  309. package/src/shared/services/forms/Mfa/MfaFormService.js +195 -0
  310. package/src/shared/services/forms/Mfa/MfaFormService.test.js +341 -0
  311. package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.js +92 -0
  312. package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.test.js +101 -0
  313. package/src/shared/services/forms/userDirectory/UserDirectoryFormService.js +118 -0
  314. package/src/shared/services/forms/userDirectory/UserDirectoryFormService.test.js +128 -0
  315. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.js +0 -205
  316. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.data.js +0 -37
  317. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.js +0 -197
  318. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.page.js +0 -133
@@ -0,0 +1,353 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
4
+ *
5
+ * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
+ * For full copyright and license information, please see the LICENSE.txt
7
+ * Redistributions of files must retain the above copyright notice.
8
+ *
9
+ * @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
10
+ * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
+ * @link https://www.passbolt.com Passbolt(tm)
12
+ * @since 3.8.0
13
+ */
14
+
15
+ import React from "react";
16
+ import PropTypes from "prop-types";
17
+ import {withAppContext} from "../../AppContext";
18
+ import UserDirectoryService from '../../../../shared/services/api/userDirectory/UserDirectoryService';
19
+ import UserService from '../../../../shared/services/api/user/UserService';
20
+ import UserDirectoryModel from '../../../../shared/models/userDirectory/UserDirectoryModel';
21
+ import UserDirectoryDTO from '../../../../shared/models/userDirectory/UserDirectoryDTO';
22
+
23
+ /**
24
+ * The Administration user directory Context
25
+ * @type {React.Context<Object>}
26
+ */
27
+ export const AdminUserDirectoryContext = React.createContext({
28
+ getCurrentSettings: () => {}, // Returns settings saved
29
+ getSettings: () => {}, // Returns settings for UI changes
30
+ setSettings: () => {}, // Set the settings object with changes
31
+ getUsers: () => {}, // Returns users for UI changes
32
+ hasSettingsChanges: () => {}, // Check if the policy has changes
33
+ findUserDirectorySettings: () => {}, // Find the current user directory settings and store it in the state
34
+ save: () => {}, // Save settings
35
+ delete: () => {}, // Save the current settings
36
+ test: () => {}, // Test settings method
37
+ setProcessing: () => {}, //Update processing object
38
+ isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
39
+ getErrors: () => {}, // Return current errors
40
+ setError: () => {}, // Init errors object message
41
+ simulateUsers: () => {}, // synchronize users directory request.
42
+ requestSynchronization: () => {}, // request a synchronization,
43
+ mustOpenSynchronizePopUp: () => {}, // return the mustSynchronize value
44
+ synchronizeUsers: () => {}, // simulate synchronize users directory
45
+ isSubmitted: () => {}, // returns the value submitted
46
+ setSubmitted: () => {}, // Set the submitted variab
47
+ setErrors: () => {}, // Set errors to object object
48
+ clearContext: () => {}, // put the data to its default state value
49
+ });
50
+
51
+ /**
52
+ * The Administration user directory context provider
53
+ */
54
+ export class AdminUserDirectoryContextProvider extends React.Component {
55
+ /**
56
+ * Default constructor
57
+ * @param props The component props
58
+ */
59
+ constructor(props) {
60
+ super(props);
61
+ this.state = this.defaultState;
62
+ this.userDirectoryService = new UserDirectoryService(props.context.getApiClientOptions());
63
+ this.userService = new UserService(props.context.getApiClientOptions());
64
+ }
65
+
66
+ /**
67
+ * Returns the default component state
68
+ */
69
+ get defaultState() {
70
+ return {
71
+ users: [], //The users from server
72
+ errors: this.initErrors(), // The errors provided by forms
73
+ mustSynchronize: false, // request a synchronization with a popup
74
+ currentSettings: null, // The current settings
75
+ settings: new UserDirectoryModel(), // Change done to the settings object
76
+ submitted: false, // The informations about the form state
77
+ processing: true, // Context is processing data
78
+ getCurrentSettings: this.getCurrentSettings.bind(this), // Returns settings saved
79
+ getSettings: this.getSettings.bind(this), // Returns settings for UI changes
80
+ setSettings: this.setSettings.bind(this), // Set the settings object with changes
81
+ findUserDirectorySettings: this.findUserDirectorySettings.bind(this), // Find the current settings and store it in the state
82
+ hasSettingsChanges: this.hasSettingsChanges.bind(this), // Check if setting has changes
83
+ isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
84
+ isSubmitted: this.isSubmitted.bind(this), // returns the value submitted
85
+ setSubmitted: this.setSubmitted.bind(this), // Set the submitted variable
86
+ setProcessing: this.setProcessing.bind(this), // Set the processing
87
+ simulateUsers: this.simulateUsers.bind(this), // synchronize users directory request.
88
+ synchronizeUsers: this.synchronizeUsers.bind(this), // simulate synchronize users directory
89
+ save: this.save.bind(this), // Save the policy changes
90
+ delete: this.delete.bind(this), // Save the current settings
91
+ test: this.test.bind(this), // test the settings for the user directory
92
+ getErrors: this.getErrors.bind(this), // Return current errors
93
+ setError: this.setError.bind(this), // Set an error to object object
94
+ setErrors: this.setErrors.bind(this), // Set errors to object object
95
+ getUsers: this.getUsers.bind(this), // return the users object
96
+ requestSynchronization: this.requestSynchronization.bind(this), // request a synchronization,
97
+ mustOpenSynchronizePopUp: this.mustOpenSynchronizePopUp.bind(this), // return the mustSynchronize value
98
+ clearContext: this.clearContext.bind(this), // put the data to its default state value
99
+ };
100
+ }
101
+
102
+ /**
103
+ * init the errors object
104
+ * @return {Promise<void>}
105
+ */
106
+ initErrors() {
107
+ return {
108
+ hostError: null, // host error
109
+ portError: null, // port error
110
+ domainError: null, // domain error
111
+ };
112
+ }
113
+
114
+ /**
115
+ * Find the User directory settings
116
+ * @return {Promise<void>}
117
+ */
118
+ async findUserDirectorySettings() {
119
+ this.setProcessing(true);
120
+ const result = await this.userDirectoryService.findAll();
121
+ const usersResult = await this.userService.findAll();
122
+
123
+ const userLogged = usersResult.body.find(user => this.props.context.loggedInUser.id === user.id);
124
+
125
+ const currentSettings = new UserDirectoryModel(result, userLogged.id);
126
+ //Init users
127
+ this.setState({users: this.sortUsers(usersResult.body)});
128
+ //Init saved setting
129
+ this.setState({currentSettings});
130
+ //Init setting which will interact with UI
131
+ this.setState({settings: Object.assign({}, currentSettings)});
132
+
133
+ this.setProcessing(false);
134
+ }
135
+
136
+ /**
137
+ * sort users
138
+ * @param {Array<User>} users
139
+ * @return {Promise<void>}
140
+ */
141
+ sortUsers(users) {
142
+ const getUserFullName = user => `${user.profile.first_name} ${user.profile.last_name}`;
143
+ const nameSorter = (u1, u2) => getUserFullName(u1).localeCompare(getUserFullName(u2));
144
+ return users.sort(nameSorter);
145
+ }
146
+
147
+ /**
148
+ * Returns the setting actually saved inside DB
149
+ * @returns {object}
150
+ */
151
+ getCurrentSettings() {
152
+ return this.state.currentSettings;
153
+ }
154
+
155
+ /**
156
+ * Returns the User directory settings that have been fetch previously.
157
+ * @returns {object}
158
+ */
159
+ getSettings() {
160
+ return this.state.settings;
161
+ }
162
+
163
+ /**
164
+ * Request to open the synchronization popup
165
+ * @returns {object}
166
+ */
167
+ requestSynchronization(result) {
168
+ this.setState({mustSynchronize: result});
169
+ }
170
+
171
+ /**
172
+ * Return the mustSynchronize value
173
+ * @returns {object}
174
+ */
175
+ mustOpenSynchronizePopUp() {
176
+ return this.state.mustSynchronize;
177
+ }
178
+
179
+ /**
180
+ * Handle settings changes.
181
+ * @params {ReactEvent} The react event
182
+ * @returns {void}
183
+ */
184
+ async setSettings(key, value) {
185
+ const newSettings = Object.assign({}, this.state.settings, {[key]: value});
186
+ await this.setState({settings: newSettings});
187
+ }
188
+
189
+ /**
190
+ * Returns true when the data is under processing
191
+ * @returns {boolean}
192
+ *
193
+ */
194
+ isProcessing() {
195
+ return this.state.processing;
196
+ }
197
+
198
+ /**
199
+ * Handle processing change.
200
+ * @params {Boolean} processing value
201
+ * @returns {void}
202
+ */
203
+ setProcessing(processing) {
204
+ this.setState({processing});
205
+ }
206
+
207
+ /**
208
+ * Check if there are changes to apply
209
+ * @returns {Boolean}
210
+ */
211
+ hasSettingsChanges() {
212
+ return JSON.stringify(this.state.currentSettings) !== JSON.stringify(this.state.settings);
213
+ }
214
+
215
+ /**
216
+ * return true if the form has been submitted
217
+ * @returns {Boolean}
218
+ */
219
+ isSubmitted() {
220
+ return this.state.submitted;
221
+ }
222
+
223
+ /**
224
+ * rchange value for submitted
225
+ * @returns {Boolean}
226
+ */
227
+ setSubmitted(submitted) {
228
+ this.setState({submitted});
229
+ }
230
+
231
+ /**
232
+ * Puts the state to its default in order to avoid keeping the data users didn't want to save.
233
+ */
234
+ clearContext() {
235
+ const {currentSettings, settings, processing} = this.defaultState;
236
+ this.setState({
237
+ currentSettings, settings, processing
238
+ });
239
+ }
240
+
241
+ /**
242
+ * Whenever the save has been requested
243
+ */
244
+ async save() {
245
+ this.setProcessing(true);
246
+ const newSettings = new UserDirectoryDTO(this.state.settings);
247
+ await this.userDirectoryService.update(newSettings);
248
+ await this.findUserDirectorySettings();
249
+ }
250
+
251
+ /**
252
+ * Whenever the delete has been requested
253
+ */
254
+ async delete() {
255
+ this.setProcessing(true);
256
+ await this.userDirectoryService.delete();
257
+ await this.findUserDirectorySettings();
258
+ }
259
+
260
+ /**
261
+ * Whenever the test has been requested
262
+ */
263
+ async test() {
264
+ this.setProcessing(true);
265
+ const newSettings = new UserDirectoryDTO(this.state.settings);
266
+ const result = await this.userDirectoryService.test(newSettings);
267
+ this.setProcessing(false);
268
+ return result;
269
+ }
270
+
271
+ /**
272
+ * Whenever the simulate users has been requested
273
+ */
274
+ async simulateUsers() {
275
+ return this.userDirectoryService.simulate();
276
+ }
277
+
278
+ /**
279
+ * Whenever the synchronize users has been requested
280
+ */
281
+ async synchronizeUsers() {
282
+ return this.userDirectoryService.synchronize();
283
+ }
284
+
285
+ /**
286
+ * return the errors object
287
+ */
288
+ getErrors() {
289
+ return this.state.errors;
290
+ }
291
+
292
+ /**
293
+ * set an error to object
294
+ */
295
+ setError(key, value) {
296
+ const errors = Object.assign({}, this.state.errors, {[key]: value});
297
+ this.setState({errors});
298
+ }
299
+
300
+ /**
301
+ * return the users object
302
+ */
303
+ getUsers() {
304
+ return this.state.users;
305
+ }
306
+
307
+ /**
308
+ * set errors to object
309
+ */
310
+ setErrors(newErrors, callback = () => {}) {
311
+ const errors = Object.assign({}, this.state.errors, newErrors);
312
+ return this.setState({errors}, callback);
313
+ }
314
+
315
+ /**
316
+ * Render the component
317
+ * @returns {JSX}
318
+ */
319
+ render() {
320
+ return (
321
+ <AdminUserDirectoryContext.Provider value={this.state}>
322
+ {this.props.children}
323
+ </AdminUserDirectoryContext.Provider>
324
+ );
325
+ }
326
+ }
327
+
328
+ AdminUserDirectoryContextProvider.propTypes = {
329
+ context: PropTypes.any, // The application context
330
+ children: PropTypes.any, // The children components
331
+ };
332
+
333
+ export default withAppContext(AdminUserDirectoryContextProvider);
334
+
335
+
336
+ /**
337
+ * Resource Workspace Context Consumer HOC
338
+ * @param WrappedComponent
339
+ */
340
+ export function withAdminUserDirectory(WrappedComponent) {
341
+ return class WithAdminUserDirectory extends React.Component {
342
+ render() {
343
+ return (
344
+ <AdminUserDirectoryContext.Consumer>
345
+ {
346
+ adminUserDirectoryContext => <WrappedComponent adminUserDirectoryContext={adminUserDirectoryContext} {...this.props} />
347
+ }
348
+ </AdminUserDirectoryContext.Consumer>
349
+ );
350
+ }
351
+ };
352
+ }
353
+
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
4
+ *
5
+ * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
+ * For full copyright and license information, please see the LICENSE.txt
7
+ * Redistributions of files must retain the above copyright notice.
8
+ *
9
+ * @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
10
+ * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
+ * @link https://www.passbolt.com Passbolt(tm)
12
+ * @since 3.8.0
13
+ */
14
+
15
+ import {defaultProps} from "../../../../react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data";
16
+ import {enableFetchMocks} from 'jest-fetch-mock';
17
+ import {AdminUserDirectoryContextProvider} from "./AdministrationUserDirectoryContext";
18
+ import {mockApiResponse} from '../../../../../test/mocks/mockApiResponse';
19
+ import {mockResult, mockUsers} from '../../../components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data';
20
+ import UserDirectoryModel from '../../../../shared/models/userDirectory/UserDirectoryModel';
21
+ import UserDirectoryDTO from '../../../../shared/models/userDirectory/UserDirectoryDTO';
22
+ import {mockErrors} from '../../../components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data';
23
+
24
+ describe("AdminUserDirectoryContext", () => {
25
+ let adminUserDirectoryContext; // The adminUserDirectoryContext to test
26
+ const props = defaultProps(null, mockUsers[4].id); // The props to pass
27
+
28
+ const mockApiCalls = () => {
29
+ fetch.doMockOnceIf(/directorysync\/settings*/, () => mockApiResponse(mockResult));
30
+ fetch.doMockOnceIf(/users*/, () => mockApiResponse(mockUsers));
31
+ };
32
+
33
+ //Initialize context by default
34
+ const initContext = async() => {
35
+ mockApiCalls();
36
+ await adminUserDirectoryContext.findUserDirectorySettings();
37
+ };
38
+
39
+ beforeEach(() => {
40
+ jest.resetAllMocks();
41
+ adminUserDirectoryContext = new AdminUserDirectoryContextProvider(props);
42
+ const setStateMock = state => adminUserDirectoryContext.state = Object.assign(adminUserDirectoryContext.state, state);
43
+ jest.spyOn(adminUserDirectoryContext, "setState").mockImplementation(setStateMock);
44
+ enableFetchMocks();
45
+ });
46
+
47
+ describe("AdminUserDirectoryContext::findUserDirectorySettings", () => {
48
+ it("should get the current settings and store it in its state", async() => {
49
+ // Mock the call to API
50
+ mockApiCalls();
51
+ const expectedResult = new UserDirectoryModel(mockResult);
52
+ await adminUserDirectoryContext.findUserDirectorySettings();
53
+
54
+ expect.assertions(3);
55
+
56
+ expect(adminUserDirectoryContext.getSettings()).toEqual(expectedResult);
57
+ expect(adminUserDirectoryContext.getCurrentSettings()).toEqual(expectedResult);
58
+ expect(adminUserDirectoryContext.isProcessing()).toBeFalsy();
59
+ });
60
+ it("should sort users", async() => {
61
+ // Mock the call to API
62
+ mockApiCalls();
63
+ jest.spyOn(adminUserDirectoryContext, "sortUsers");
64
+
65
+ await adminUserDirectoryContext.findUserDirectorySettings();
66
+
67
+ expect.assertions(2);
68
+
69
+ expect(adminUserDirectoryContext.sortUsers).toHaveBeenCalled();
70
+ expect(adminUserDirectoryContext.getUsers()).toEqual(adminUserDirectoryContext.sortUsers(mockUsers));
71
+ });
72
+ it("should set processing to true when loading settings", async() => {
73
+ adminUserDirectoryContext.setProcessing(false);
74
+ try {
75
+ await adminUserDirectoryContext.findUserDirectorySettings();
76
+ } catch {
77
+ expect.assertions(1);
78
+ expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
79
+ }
80
+ });
81
+ });
82
+ describe("AdminUserDirectoryContext::hasSettingsChanges", () => {
83
+ beforeEach(async() => {
84
+ await initContext();
85
+ });
86
+ it("should return true if settings is different then current setting", () => {
87
+ adminUserDirectoryContext.setSettings("userDirectoryToggle", false);
88
+
89
+ expect.assertions(1);
90
+
91
+ expect(adminUserDirectoryContext.hasSettingsChanges()).toBeTruthy();
92
+ });
93
+
94
+ it("should return false if settings is different then current setting", () => {
95
+ adminUserDirectoryContext.setSettings("createGroups", false);
96
+ adminUserDirectoryContext.setSettings("createGroups", true);
97
+
98
+ expect.assertions(1);
99
+
100
+ expect(adminUserDirectoryContext.hasSettingsChanges()).toBeFalsy();
101
+ });
102
+ });
103
+
104
+ describe("AdminUserDirectoryContext::clearContext", () => {
105
+ beforeEach(async() => {
106
+ await initContext();
107
+ });
108
+ it("should clear the context and set it by default", () => {
109
+ adminUserDirectoryContext.setSettings("userDirectoryToggle", true);
110
+ adminUserDirectoryContext.clearContext();
111
+
112
+ expect.assertions(3);
113
+
114
+ expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
115
+ expect(adminUserDirectoryContext.getCurrentSettings()).toBe(null);
116
+ expect(adminUserDirectoryContext.getSettings().userDirectoryToggle).toBeFalsy();
117
+ });
118
+ });
119
+
120
+ describe("AdminUserDirectoryContext::save", () => {
121
+ it("should save settings and call findUserDirectorySettings", async() => {
122
+ fetch.doMockOnceIf(/directorysync*/, () => mockApiResponse({}));
123
+ const findSettings = jest.spyOn(adminUserDirectoryContext, "findUserDirectorySettings").mockImplementation();
124
+
125
+ await adminUserDirectoryContext.save();
126
+
127
+ expect.assertions(3);
128
+
129
+ expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
130
+ expect(findSettings).toHaveBeenCalled();
131
+ expect(JSON.parse(fetch.mock.calls[0][1].body)).toEqual(expect.objectContaining(new UserDirectoryDTO(new UserDirectoryModel())));
132
+ });
133
+ });
134
+
135
+ describe("AdminUserDirectoryContext::delete", () => {
136
+ it("should delete settings and call findUserDirectorySettings", async() => {
137
+ fetch.doMockOnceIf(/directorysync*/, () => mockApiResponse({}));
138
+ const findSettings = jest.spyOn(adminUserDirectoryContext, "findUserDirectorySettings").mockImplementation();
139
+
140
+ await adminUserDirectoryContext.delete();
141
+
142
+ expect.assertions(2);
143
+
144
+ expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
145
+ expect(findSettings).toHaveBeenCalled();
146
+ });
147
+ });
148
+
149
+ describe("AdminUserDirectoryContext::test", () => {
150
+ it("should test configuration", async() => {
151
+ fetch.doMockOnceIf(/directorysync\/settings\/test*/, () => mockApiResponse(mockResult));
152
+ const result = await adminUserDirectoryContext.test();
153
+
154
+ expect.assertions(2);
155
+
156
+ expect(adminUserDirectoryContext.isProcessing()).toBeFalsy();
157
+ expect(result.body).toEqual(mockResult);
158
+ });
159
+ });
160
+
161
+
162
+ describe("AdminUserDirectoryContext::simulateUsers", () => {
163
+ it("should simulate configuration", async() => {
164
+ fetch.doMockOnceIf(/directorysync*/, () => mockApiResponse(mockResult));
165
+ const result = await adminUserDirectoryContext.simulateUsers();
166
+
167
+ expect.assertions(1);
168
+
169
+ expect(result).toEqual(mockResult);
170
+ });
171
+ });
172
+
173
+ describe("AdminUserDirectoryContext::synchronizeUsers", () => {
174
+ it("should synchronize configuration", async() => {
175
+ fetch.doMockOnceIf(/directorysync\/synchronize*/, () => mockApiResponse(mockResult));
176
+ const result = await adminUserDirectoryContext.synchronizeUsers();
177
+
178
+ expect.assertions(1);
179
+
180
+ expect(result).toEqual(mockResult);
181
+ });
182
+ });
183
+
184
+ describe("AdminUserDirectoryContext::setSettings", () => {
185
+ it("should update settings object and not the current object", async() => {
186
+ await initContext();
187
+ adminUserDirectoryContext.setSettings("userDirectoryToggle", false);
188
+
189
+ expect.assertions(2);
190
+
191
+ expect(adminUserDirectoryContext.getCurrentSettings().userDirectoryToggle).toBeTruthy();
192
+ expect(adminUserDirectoryContext.getSettings().userDirectoryToggle).toBeFalsy();
193
+ });
194
+ });
195
+
196
+ describe("AdminUserDirectoryContext::errors", () => {
197
+ it("should update error object with targeted property", async() => {
198
+ await initContext();
199
+ adminUserDirectoryContext.setError("hostError", "error");
200
+
201
+ expect.assertions(1);
202
+
203
+ expect(adminUserDirectoryContext.getErrors().hostError).toBe("error");
204
+ });
205
+
206
+ it("should init errors with default property", async() => {
207
+ expect(adminUserDirectoryContext.getErrors()).toEqual(adminUserDirectoryContext.initErrors());
208
+ });
209
+
210
+ it("should update error object with all properties ", async() => {
211
+ const mockError = mockErrors();
212
+ adminUserDirectoryContext.setErrors(mockError);
213
+ expect.assertions(3);
214
+ expect(adminUserDirectoryContext.getErrors().hostError).toEqual(mockError.hostError);
215
+ expect(adminUserDirectoryContext.getErrors().domainError).toEqual(mockError.domainError);
216
+ expect(adminUserDirectoryContext.getErrors().portError).toEqual(mockError.portError);
217
+ });
218
+ });
219
+ });
220
+