generator-jhipster 7.2.0 → 7.4.1

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 (313) hide show
  1. package/cli/environment-builder.js +1 -0
  2. package/cli/import-jdl.js +3 -2
  3. package/cli/jdl.js +1 -0
  4. package/cli/jhipster-command.js +2 -2
  5. package/cli/program.js +32 -29
  6. package/generators/app/index.js +35 -26
  7. package/generators/aws/index.js +8 -8
  8. package/generators/aws/lib/eb.js +1 -1
  9. package/generators/azure-app-service/index.js +16 -9
  10. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +2 -2
  11. package/generators/azure-spring-cloud/index.js +16 -9
  12. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +2 -2
  13. package/generators/bootstrap/index.js +57 -61
  14. package/generators/ci-cd/index.js +11 -8
  15. package/generators/ci-cd/templates/github-actions.yml.ejs +1 -1
  16. package/generators/ci-cd/templates/travis.yml.ejs +9 -4
  17. package/generators/client/__workflow/devserver-angular.json +1 -1
  18. package/generators/client/__workflow/devserver-react.json +1 -1
  19. package/generators/client/__workflow/devserver-vue.json +1 -1
  20. package/generators/client/files-angular.js +6 -0
  21. package/generators/client/files-common.js +6 -2
  22. package/generators/client/files-react.js +13 -2
  23. package/generators/client/files-vue.js +56 -6
  24. package/generators/client/index.js +114 -32
  25. package/generators/client/needle-api/needle-client-angular.js +1 -1
  26. package/generators/client/needle-api/needle-client-vue.js +57 -7
  27. package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
  28. package/generators/client/templates/angular/package.json +19 -19
  29. package/generators/client/templates/angular/package.json.ejs +2 -1
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +52 -54
  31. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +65 -0
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.spec.ts.ejs +35 -37
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.spec.ts.ejs +78 -80
  34. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.service.spec.ts.ejs +41 -0
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +73 -75
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +62 -0
  37. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +44 -46
  38. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +61 -0
  39. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.spec.ts.ejs +116 -118
  40. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.service.spec.ts.ejs +66 -0
  41. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +75 -77
  42. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +74 -76
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +48 -50
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +50 -52
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +45 -47
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +66 -0
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +99 -101
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +61 -63
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +19 -21
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +28 -30
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +62 -64
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +35 -37
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +40 -42
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +87 -89
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +41 -43
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +81 -83
  58. package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +3 -0
  59. package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +178 -180
  60. package/generators/client/templates/angular/src/main/webapp/app/core/config/application-config.service.ts.ejs +9 -0
  61. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.spec.ts.ejs +87 -89
  62. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.spec.ts.ejs +93 -95
  63. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +166 -168
  64. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +66 -68
  65. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +27 -29
  66. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.spec.ts.ejs +112 -114
  67. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +132 -134
  68. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +29 -31
  69. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +2 -3
  70. package/generators/client/templates/common/README.md.jhi.client.ejs +34 -0
  71. package/generators/client/templates/common/package.json +7 -7
  72. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
  73. package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
  74. package/generators/client/templates/react/package.json +57 -56
  75. package/generators/client/templates/react/package.json.ejs +5 -2
  76. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
  77. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +2 -2
  78. package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +2 -2
  79. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
  80. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
  81. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
  82. package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  83. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +1 -1
  84. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
  85. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
  86. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
  87. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +17 -1
  88. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +13 -1
  89. package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
  90. package/generators/client/templates/vue/package.json +40 -49
  91. package/generators/client/templates/vue/package.json.ejs +14 -18
  92. package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +6 -5
  93. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
  94. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +1 -1
  95. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
  96. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
  97. package/generators/client/templates/vue/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -4
  98. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +9 -0
  99. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-view.component.ts.ejs +5 -0
  100. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management.component.ts.ejs +5 -0
  101. package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +16 -6
  102. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +27 -8
  103. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
  104. package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
  105. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
  106. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
  107. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +14 -0
  108. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
  109. package/generators/client/templates/vue/{webpack/utils.js.ejs → src/main/webapp/app/index.ts.ejs} +1 -12
  110. package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -9
  111. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +23 -11
  112. package/generators/client/templates/vue/src/main/webapp/app/router/admin.ts.ejs +4 -4
  113. package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +45 -3
  114. package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +19 -3
  115. package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +61 -0
  116. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +0 -2
  117. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +3 -1
  118. package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +17 -3
  119. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +25 -10
  120. package/generators/client/templates/vue/src/test/javascript/spec/app/account/account.service.spec.ts.ejs +2 -2
  121. package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +2 -2
  122. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.component.spec.ts.ejs +12 -12
  123. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.service.spec.ts.ejs +2 -1
  124. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +5 -1
  125. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-view.component.spec.ts.ejs +2 -1
  126. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +5 -1
  127. package/generators/client/templates/vue/src/test/javascript/spec/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +10 -4
  128. package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
  129. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
  130. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
  131. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
  132. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/alert/alert.service.spec.ts.ejs +124 -0
  133. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +0 -1
  134. package/generators/client/templates/vue/tsconfig.json.ejs +6 -10
  135. package/generators/client/templates/vue/tsconfig.spec.json.ejs +37 -0
  136. package/generators/client/templates/vue/webpack/config.js.ejs +50 -0
  137. package/generators/client/templates/vue/webpack/vue.utils.js.ejs +33 -32
  138. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +152 -126
  139. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -76
  140. package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
  141. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +5 -41
  142. package/generators/cloudfoundry/index.js +9 -9
  143. package/generators/common/index.js +12 -10
  144. package/generators/common/templates/.husky/pre-commit +1 -1
  145. package/generators/common/templates/.prettierrc.ejs +1 -1
  146. package/generators/common/templates/README.md.jhi.ejs +21 -0
  147. package/generators/common/templates/package.json +4 -4
  148. package/generators/cypress/index.js +12 -9
  149. package/generators/cypress/templates/cypress.json.ejs +9 -2
  150. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +4 -4
  151. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +30 -2
  152. package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +4 -4
  153. package/generators/cypress/templates/src/test/javascript/cypress/support/index.ts.ejs +1 -1
  154. package/generators/cypress/templates/src/test/javascript/cypress/support/management.ts.ejs +1 -1
  155. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +1 -1
  156. package/generators/database-changelog/index.js +33 -22
  157. package/generators/database-changelog-liquibase/index.js +12 -8
  158. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +1 -1
  159. package/generators/docker-compose/index.js +11 -12
  160. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +13 -12
  161. package/generators/entities/index.js +35 -26
  162. package/generators/entities-client/index.js +10 -7
  163. package/generators/entity/index.js +49 -29
  164. package/generators/entity-client/files.js +7 -16
  165. package/generators/entity-client/index.js +74 -11
  166. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.spec.ts.ejs +42 -44
  167. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.spec.ts.ejs +58 -60
  168. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +1 -1
  169. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +105 -107
  170. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +8 -1
  171. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +52 -54
  172. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +1 -1
  173. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +173 -175
  174. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +2 -4
  175. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +193 -195
  176. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +7 -0
  177. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +269 -109
  178. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +5 -2
  179. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +17 -14
  180. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +11 -13
  181. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-details.component.ts.ejs +5 -0
  182. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +23 -8
  183. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.vue.ejs +6 -9
  184. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +9 -1
  185. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  186. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
  187. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-details.component.spec.ts.ejs +2 -1
  188. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +8 -1
  189. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +8 -2
  190. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
  191. package/generators/entity-i18n/index.js +7 -4
  192. package/generators/entity-server/files-couchbase.js +2 -2
  193. package/generators/entity-server/files.js +35 -30
  194. package/generators/entity-server/index.js +12 -8
  195. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
  196. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +1 -1
  197. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +6 -2
  198. package/generators/entity-server/templates/src/main/java/package/domain/enumeration/Enum.java.ejs +1 -1
  199. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
  200. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +17 -30
  201. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +5 -5
  202. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +46 -0
  203. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +3 -3
  204. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +2 -2
  205. package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +8 -8
  206. package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +4 -4
  207. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +4 -4
  208. package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +7 -3
  209. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +8 -8
  210. package/generators/entity-server/templates/src/main/java/package/service/mapper/BaseEntityMapper.java.ejs +1 -1
  211. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +7 -3
  212. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +51 -53
  213. package/generators/entity-server/templates/src/test/java/package/domain/EntityTest.java.ejs +1 -1
  214. package/generators/entity-server/templates/src/test/java/package/repository/search/EntitySearchRepositoryMockConfiguration.java.ejs +1 -1
  215. package/generators/entity-server/templates/src/test/java/package/service/dto/EntityDTOTest.java.ejs +1 -1
  216. package/generators/entity-server/templates/src/test/java/package/service/mapper/EntityMapperTest.java.ejs +1 -1
  217. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +17 -14
  218. package/generators/gae/index.js +10 -10
  219. package/generators/generator-base-blueprint.js +14 -46
  220. package/generators/generator-base-private.js +42 -22
  221. package/generators/generator-base.js +57 -20
  222. package/generators/generator-constants.js +29 -21
  223. package/generators/generator-transforms.js +39 -27
  224. package/generators/heroku/index.js +27 -48
  225. package/generators/init/constants.cjs +1 -1
  226. package/generators/init/templates/.husky/pre-commit +1 -1
  227. package/generators/java/constants.cjs +1 -1
  228. package/generators/kubernetes/files.js +3 -0
  229. package/generators/kubernetes/index.js +10 -10
  230. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -1
  231. package/generators/kubernetes/templates/deployment.yml.ejs +8 -3
  232. package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
  233. package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
  234. package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
  235. package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
  236. package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
  237. package/generators/kubernetes/templates/istio/gateway.yml.ejs +7 -5
  238. package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
  239. package/generators/kubernetes-base.js +1 -0
  240. package/generators/kubernetes-helm/files.js +3 -8
  241. package/generators/kubernetes-helm/index.js +10 -10
  242. package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +0 -1
  243. package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +27 -0
  244. package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +0 -11
  245. package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +7 -2
  246. package/generators/kubernetes-helm/templates/app/values.yml.ejs +68 -5
  247. package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +17 -0
  248. package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +2 -2
  249. package/generators/kubernetes-knative/index.js +10 -10
  250. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +6 -4
  251. package/generators/kubernetes-knative/templates/service.yml.ejs +1 -1
  252. package/generators/languages/index.js +13 -13
  253. package/generators/languages/templates/src/main/webapp/i18n/hr/reset.json.ejs +1 -2
  254. package/generators/languages/templates/src/main/webapp/i18n/vi/login.json +1 -1
  255. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
  256. package/generators/openapi-client/index.js +13 -10
  257. package/generators/openshift/index.js +10 -11
  258. package/generators/openshift/templates/deployment.yml.ejs +1 -1
  259. package/generators/page/index.js +12 -10
  260. package/generators/server/__snapshots__/generator.spec.mjs.snap +12 -0
  261. package/generators/server/files-sql.js +52 -0
  262. package/generators/server/files.js +15 -0
  263. package/generators/server/index.js +100 -33
  264. package/generators/server/needle-api/needle-server-cache.js +4 -6
  265. package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
  266. package/generators/server/templates/build.gradle.ejs +17 -1
  267. package/generators/server/templates/gradle.properties.ejs +11 -11
  268. package/generators/server/templates/npmw +1 -1
  269. package/generators/server/templates/npmw.cmd +1 -1
  270. package/generators/server/templates/pom.xml.ejs +128 -9
  271. package/generators/server/templates/settings.gradle.ejs +9 -0
  272. package/generators/server/templates/sql/reactive/src/main/java/package/repository/UserSqlHelper.java.ejs +48 -0
  273. package/generators/server/templates/src/main/docker/app.yml.ejs +2 -1
  274. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +13 -12
  275. package/generators/server/templates/src/main/java/package/aop/logging/LoggingAspect.java.ejs +1 -1
  276. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_cassandra.java.ejs +0 -6
  277. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_sql.java.ejs +2 -2
  278. package/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +1 -1
  279. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +0 -2
  280. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +2 -5
  281. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +9 -1
  282. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +0 -1
  283. package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
  284. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +0 -23
  285. package/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +0 -2
  286. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +29 -4
  287. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +21 -9
  288. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +13 -5
  289. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
  290. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -1
  291. package/generators/server/templates/src/main/resources/config/application.yml.ejs +7 -7
  292. package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
  293. package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
  294. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +6 -1
  295. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
  296. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
  297. package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +16 -2
  298. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +63 -0
  299. package/generators/spring-controller/index.js +9 -7
  300. package/generators/spring-service/index.js +10 -7
  301. package/generators/upgrade/index.js +4 -5
  302. package/generators/utils.js +2 -2
  303. package/generators/workspaces/index.js +16 -7
  304. package/jdl/jhipster/default-application-options.js +9 -7
  305. package/package.json +23 -23
  306. package/utils/entity.js +21 -4
  307. package/utils/field.js +12 -2
  308. package/utils/multi-step-transform/index.js +8 -8
  309. package/generators/client/templates/react/.npmrc.ejs +0 -1
  310. package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -17
  311. package/generators/client/templates/vue/webpack/env.js.ejs +0 -67
  312. package/generators/client/templates/vue/webpack/loader.conf.js.ejs +0 -20
  313. package/generators/client/templates/vue/webpack/prod.env.js.ejs +0 -15
@@ -58,257 +58,255 @@ function accountWithAuthorities(authorities: string[]): Account {
58
58
  };
59
59
  }
60
60
 
61
- describe('Service Tests', () => {
62
- describe('Account Service', () => {
63
- let service: AccountService;
61
+ describe('Account Service', () => {
62
+ let service: AccountService;
64
63
  <%_ if (!skipUserManagement) { _%>
65
- let applicationConfigService: ApplicationConfigService;
64
+ let applicationConfigService: ApplicationConfigService;
66
65
  <%_ } _%>
67
- let httpMock: HttpTestingController;
68
- let mockStorageService: StateStorageService;
69
- let mockRouter: Router;
66
+ let httpMock: HttpTestingController;
67
+ let mockStorageService: StateStorageService;
68
+ let mockRouter: Router;
70
69
  <%_ if (communicationSpringWebsocket) { _%>
71
- let mockTrackerService: TrackerService;
70
+ let mockTrackerService: TrackerService;
72
71
  <%_ } _%>
73
72
  <%_ if (enableTranslation) { _%>
74
- let mockTranslateService: TranslateService;
75
- let sessionStorageService: SessionStorageService;
73
+ let mockTranslateService: TranslateService;
74
+ let sessionStorageService: SessionStorageService;
76
75
  <%_ } _%>
77
76
 
78
- beforeEach(() => {
79
- TestBed.configureTestingModule({
80
- imports: [HttpClientTestingModule, NgxWebstorageModule.forRoot()],
81
- providers: [
77
+ beforeEach(() => {
78
+ TestBed.configureTestingModule({
79
+ imports: [HttpClientTestingModule, NgxWebstorageModule.forRoot()],
80
+ providers: [
82
81
  <%_ if (enableTranslation) { _%>
83
- TranslateService,
82
+ TranslateService,
84
83
  <%_ } _%>
85
84
  <%_ if (communicationSpringWebsocket) { _%>
86
- TrackerService,
85
+ TrackerService,
87
86
  <%_ } _%>
88
- StateStorageService,
89
- Router,
90
- ],
91
- });
87
+ StateStorageService,
88
+ Router,
89
+ ],
90
+ });
92
91
 
93
- service = TestBed.inject(AccountService);
92
+ service = TestBed.inject(AccountService);
94
93
  <%_ if (!skipUserManagement) { _%>
95
- applicationConfigService = TestBed.inject(ApplicationConfigService);
94
+ applicationConfigService = TestBed.inject(ApplicationConfigService);
96
95
  <%_ } _%>
97
- httpMock = TestBed.inject(HttpTestingController);
98
- mockStorageService = TestBed.inject(StateStorageService);
99
- mockRouter = TestBed.inject(Router);
96
+ httpMock = TestBed.inject(HttpTestingController);
97
+ mockStorageService = TestBed.inject(StateStorageService);
98
+ mockRouter = TestBed.inject(Router);
100
99
  <%_ if (communicationSpringWebsocket) { _%>
101
- mockTrackerService = TestBed.inject(TrackerService);
100
+ mockTrackerService = TestBed.inject(TrackerService);
102
101
  <%_ } _%>
103
102
  <%_ if (enableTranslation) { _%>
104
- mockTranslateService = TestBed.inject(TranslateService);
105
- sessionStorageService = TestBed.inject(SessionStorageService);
103
+ mockTranslateService = TestBed.inject(TranslateService);
104
+ sessionStorageService = TestBed.inject(SessionStorageService);
106
105
  <%_ } _%>
107
- });
106
+ });
108
107
 
109
- afterEach(() => {
110
- httpMock.verify();
111
- });
108
+ afterEach(() => {
109
+ httpMock.verify();
110
+ });
112
111
 
113
112
  <%_ if (!skipUserManagement) { _%>
114
- describe('save', () => {
115
- it('should call account saving endpoint with correct values', () => {
113
+ describe('save', () => {
114
+ it('should call account saving endpoint with correct values', () => {
115
+ // GIVEN
116
+ const account = accountWithAuthorities([]);
117
+
118
+ // WHEN
119
+ service.save(account).subscribe();
120
+ const testRequest = httpMock.expectOne({ method: 'POST', url: applicationConfigService.getEndpointFor('api/account') });
121
+ testRequest.flush({});
122
+
123
+ // THEN
124
+ expect(testRequest.request.body).toEqual(account);
125
+ });
126
+ });
127
+
128
+ <%_ } _%>
129
+ describe('authenticate', () => {
130
+ it('authenticationState should emit null if input is null', () => {
116
131
  // GIVEN
117
- const account = accountWithAuthorities([]);
132
+ let userIdentity: Account | null = accountWithAuthorities([]);
133
+ service.getAuthenticationState().subscribe(account => (userIdentity = account));
118
134
 
119
135
  // WHEN
120
- service.save(account).subscribe();
121
- const testRequest = httpMock.expectOne({ method: 'POST', url: applicationConfigService.getEndpointFor('api/account') });
122
- testRequest.flush({});
136
+ service.authenticate(null);
123
137
 
124
138
  // THEN
125
- expect(testRequest.request.body).toEqual(account);
139
+ expect(userIdentity).toBeNull();
140
+ expect(service.isAuthenticated()).toBe(false);
141
+ <%_ if (communicationSpringWebsocket) { _%>
142
+ expect(mockTrackerService.disconnect).toHaveBeenCalled();
143
+ expect(mockTrackerService.connect).not.toHaveBeenCalled();
144
+ <%_ } _%>
126
145
  });
127
- });
128
146
 
147
+ it('authenticationState should emit the same account as was in input parameter', () => {
148
+ // GIVEN
149
+ const expectedResult = accountWithAuthorities([]);
150
+ let userIdentity: Account | null = null;
151
+ service.getAuthenticationState().subscribe(account => (userIdentity = account));
152
+
153
+ // WHEN
154
+ service.authenticate(expectedResult);
155
+
156
+ // THEN
157
+ expect(userIdentity).toEqual(expectedResult);
158
+ expect(service.isAuthenticated()).toBe(true);
159
+ <%_ if (communicationSpringWebsocket) { _%>
160
+ expect(mockTrackerService.connect).toHaveBeenCalled();
161
+ expect(mockTrackerService.disconnect).not.toHaveBeenCalled();
129
162
  <%_ } _%>
130
- describe('authenticate', () => {
131
- it('authenticationState should emit null if input is null', () => {
163
+ });
164
+ });
165
+
166
+ describe('identity', () => {
167
+ it('should call /account only once if last call have not returned', () => {
168
+ // When I call
169
+ service.identity().subscribe();
170
+ // Once more
171
+ service.identity().subscribe();
172
+ // Then there is only request
173
+ httpMock.expectOne({ method: 'GET' });
174
+ });
175
+
176
+ it('should call /account only once if not logged out after first authentication and should call /account again if user has logged out', () => {
177
+ // Given the user is authenticated
178
+ service.identity().subscribe();
179
+ httpMock.expectOne({ method: 'GET' }).flush({});
180
+
181
+ // When I call
182
+ service.identity().subscribe();
183
+
184
+ // Then there is no second request
185
+ httpMock.expectNone({ method: 'GET' });
186
+
187
+ // When I log out
188
+ service.authenticate(null);
189
+ // and then call
190
+ service.identity().subscribe();
191
+
192
+ // Then there is a new request
193
+ httpMock.expectOne({ method: 'GET' });
194
+ });
195
+
196
+ <%_ if (enableTranslation) { _%>
197
+ describe('should change the language on authentication if necessary', () => {
198
+ it('should change language if user has not changed language manually', () => {
132
199
  // GIVEN
133
- let userIdentity: Account | null = accountWithAuthorities([]);
134
- service.getAuthenticationState().subscribe(account => (userIdentity = account));
200
+ sessionStorageService.retrieve = jest.fn(key => (key === 'locale' ? undefined : 'otherSessionStorageValue'));
135
201
 
136
202
  // WHEN
137
- service.authenticate(null);
203
+ service.identity().subscribe();
204
+ httpMock.expectOne({ method: 'GET' }).flush({ ...accountWithAuthorities([]), langKey: 'accountLang' });
138
205
 
139
206
  // THEN
140
- expect(userIdentity).toBeNull();
141
- expect(service.isAuthenticated()).toBe(false);
142
- <%_ if (communicationSpringWebsocket) { _%>
143
- expect(mockTrackerService.disconnect).toHaveBeenCalled();
144
- expect(mockTrackerService.connect).not.toHaveBeenCalled();
145
- <%_ } _%>
207
+ expect(mockTranslateService.use).toHaveBeenCalledWith('accountLang');
146
208
  });
147
209
 
148
- it('authenticationState should emit the same account as was in input parameter', () => {
210
+ it('should not change language if user has changed language manually', () => {
149
211
  // GIVEN
150
- const expectedResult = accountWithAuthorities([]);
151
- let userIdentity: Account | null = null;
152
- service.getAuthenticationState().subscribe(account => (userIdentity = account));
212
+ sessionStorageService.retrieve = jest.fn(key => (key === 'locale' ? 'sessionLang' : undefined));
153
213
 
154
214
  // WHEN
155
- service.authenticate(expectedResult);
215
+ service.identity().subscribe();
216
+ httpMock.expectOne({ method: 'GET' }).flush({ ...accountWithAuthorities([]), langKey: 'accountLang' });
156
217
 
157
218
  // THEN
158
- expect(userIdentity).toEqual(expectedResult);
159
- expect(service.isAuthenticated()).toBe(true);
160
- <%_ if (communicationSpringWebsocket) { _%>
161
- expect(mockTrackerService.connect).toHaveBeenCalled();
162
- expect(mockTrackerService.disconnect).not.toHaveBeenCalled();
163
- <%_ } _%>
219
+ expect(mockTranslateService.use).not.toHaveBeenCalled();
164
220
  });
165
221
  });
166
222
 
167
- describe('identity', () => {
168
- it('should call /account only once if last call have not returned', () => {
169
- // When I call
170
- service.identity().subscribe();
171
- // Once more
172
- service.identity().subscribe();
173
- // Then there is only request
174
- httpMock.expectOne({ method: 'GET' });
175
- });
223
+ <%_ } _%>
224
+ describe('navigateToStoredUrl', () => {
225
+ it('should navigate to the previous stored url post successful authentication', () => {
226
+ // GIVEN
227
+ mockStorageService.getUrl = jest.fn(() => 'admin/users?page=0');
176
228
 
177
- it('should call /account only once if not logged out after first authentication and should call /account again if user has logged out', () => {
178
- // Given the user is authenticated
229
+ // WHEN
179
230
  service.identity().subscribe();
180
231
  httpMock.expectOne({ method: 'GET' }).flush({});
181
232
 
182
- // When I call
183
- service.identity().subscribe();
184
-
185
- // Then there is no second request
186
- httpMock.expectNone({ method: 'GET' });
233
+ // THEN
234
+ expect(mockStorageService.getUrl).toHaveBeenCalledTimes(1);
235
+ expect(mockStorageService.clearUrl).toHaveBeenCalledTimes(1);
236
+ expect(mockRouter.navigateByUrl).toHaveBeenCalledWith('admin/users?page=0');
237
+ });
187
238
 
188
- // When I log out
189
- service.authenticate(null);
190
- // and then call
239
+ it('should not navigate to the previous stored url when authentication fails', () => {
240
+ // WHEN
191
241
  service.identity().subscribe();
242
+ httpMock.expectOne({ method: 'GET' }).error(new ErrorEvent(''));
192
243
 
193
- // Then there is a new request
194
- httpMock.expectOne({ method: 'GET' });
244
+ // THEN
245
+ expect(mockStorageService.getUrl).not.toHaveBeenCalled();
246
+ expect(mockStorageService.clearUrl).not.toHaveBeenCalled();
247
+ expect(mockRouter.navigateByUrl).not.toHaveBeenCalled();
195
248
  });
196
249
 
197
- <%_ if (enableTranslation) { _%>
198
- describe('should change the language on authentication if necessary', () => {
199
- it('should change language if user has not changed language manually', () => {
200
- // GIVEN
201
- sessionStorageService.retrieve = jest.fn(key => (key === 'locale' ? undefined : 'otherSessionStorageValue'));
202
-
203
- // WHEN
204
- service.identity().subscribe();
205
- httpMock.expectOne({ method: 'GET' }).flush({ ...accountWithAuthorities([]), langKey: 'accountLang' });
206
-
207
- // THEN
208
- expect(mockTranslateService.use).toHaveBeenCalledWith('accountLang');
209
- });
210
-
211
- it('should not change language if user has changed language manually', () => {
212
- // GIVEN
213
- sessionStorageService.retrieve = jest.fn(key => (key === 'locale' ? 'sessionLang' : undefined));
214
-
215
- // WHEN
216
- service.identity().subscribe();
217
- httpMock.expectOne({ method: 'GET' }).flush({ ...accountWithAuthorities([]), langKey: 'accountLang' });
218
-
219
- // THEN
220
- expect(mockTranslateService.use).not.toHaveBeenCalled();
221
- });
222
- });
250
+ it('should not navigate to the previous stored url when no such url exists post successful authentication', () => {
251
+ // GIVEN
252
+ mockStorageService.getUrl = jest.fn(() => null);
223
253
 
224
- <%_ } _%>
225
- describe('navigateToStoredUrl', () => {
226
- it('should navigate to the previous stored url post successful authentication', () => {
227
- // GIVEN
228
- mockStorageService.getUrl = jest.fn(() => 'admin/users?page=0');
229
-
230
- // WHEN
231
- service.identity().subscribe();
232
- httpMock.expectOne({ method: 'GET' }).flush({});
233
-
234
- // THEN
235
- expect(mockStorageService.getUrl).toHaveBeenCalledTimes(1);
236
- expect(mockStorageService.clearUrl).toHaveBeenCalledTimes(1);
237
- expect(mockRouter.navigateByUrl).toHaveBeenCalledWith('admin/users?page=0');
238
- });
239
-
240
- it('should not navigate to the previous stored url when authentication fails', () => {
241
- // WHEN
242
- service.identity().subscribe();
243
- httpMock.expectOne({ method: 'GET' }).error(new ErrorEvent(''));
244
-
245
- // THEN
246
- expect(mockStorageService.getUrl).not.toHaveBeenCalled();
247
- expect(mockStorageService.clearUrl).not.toHaveBeenCalled();
248
- expect(mockRouter.navigateByUrl).not.toHaveBeenCalled();
249
- });
250
-
251
- it('should not navigate to the previous stored url when no such url exists post successful authentication', () => {
252
- // GIVEN
253
- mockStorageService.getUrl = jest.fn(() => null);
254
-
255
- // WHEN
256
- service.identity().subscribe();
257
- httpMock.expectOne({ method: 'GET' }).flush({});
258
-
259
- // THEN
260
- expect(mockStorageService.getUrl).toHaveBeenCalledTimes(1);
261
- expect(mockStorageService.clearUrl).not.toHaveBeenCalled();
262
- expect(mockRouter.navigateByUrl).not.toHaveBeenCalled();
263
- });
254
+ // WHEN
255
+ service.identity().subscribe();
256
+ httpMock.expectOne({ method: 'GET' }).flush({});
257
+
258
+ // THEN
259
+ expect(mockStorageService.getUrl).toHaveBeenCalledTimes(1);
260
+ expect(mockStorageService.clearUrl).not.toHaveBeenCalled();
261
+ expect(mockRouter.navigateByUrl).not.toHaveBeenCalled();
264
262
  });
265
263
  });
264
+ });
266
265
 
267
- describe('hasAnyAuthority', () => {
268
- describe('hasAnyAuthority string parameter', () => {
269
- it('should return false if user is not logged', () => {
270
- const hasAuthority = service.hasAnyAuthority(Authority.USER);
271
- expect(hasAuthority).toBe(false);
272
- });
266
+ describe('hasAnyAuthority', () => {
267
+ describe('hasAnyAuthority string parameter', () => {
268
+ it('should return false if user is not logged', () => {
269
+ const hasAuthority = service.hasAnyAuthority(Authority.USER);
270
+ expect(hasAuthority).toBe(false);
271
+ });
273
272
 
274
- it('should return false if user is logged and has not authority', () => {
275
- service.authenticate(accountWithAuthorities([Authority.USER]));
273
+ it('should return false if user is logged and has not authority', () => {
274
+ service.authenticate(accountWithAuthorities([Authority.USER]));
276
275
 
277
- const hasAuthority = service.hasAnyAuthority(Authority.ADMIN);
276
+ const hasAuthority = service.hasAnyAuthority(Authority.ADMIN);
278
277
 
279
- expect(hasAuthority).toBe(false);
280
- });
278
+ expect(hasAuthority).toBe(false);
279
+ });
281
280
 
282
- it('should return true if user is logged and has authority', () => {
283
- service.authenticate(accountWithAuthorities([Authority.USER]));
281
+ it('should return true if user is logged and has authority', () => {
282
+ service.authenticate(accountWithAuthorities([Authority.USER]));
284
283
 
285
- const hasAuthority = service.hasAnyAuthority(Authority.USER);
284
+ const hasAuthority = service.hasAnyAuthority(Authority.USER);
286
285
 
287
- expect(hasAuthority).toBe(true);
288
- });
286
+ expect(hasAuthority).toBe(true);
289
287
  });
288
+ });
290
289
 
291
- describe('hasAnyAuthority array parameter', () => {
292
- it('should return false if user is not logged', () => {
293
- const hasAuthority = service.hasAnyAuthority([Authority.USER]);
294
- expect(hasAuthority).toBeFalsy();
295
- });
290
+ describe('hasAnyAuthority array parameter', () => {
291
+ it('should return false if user is not logged', () => {
292
+ const hasAuthority = service.hasAnyAuthority([Authority.USER]);
293
+ expect(hasAuthority).toBeFalsy();
294
+ });
296
295
 
297
- it('should return false if user is logged and has not authority', () => {
298
- service.authenticate(accountWithAuthorities([Authority.USER]));
296
+ it('should return false if user is logged and has not authority', () => {
297
+ service.authenticate(accountWithAuthorities([Authority.USER]));
299
298
 
300
- const hasAuthority = service.hasAnyAuthority([Authority.ADMIN]);
299
+ const hasAuthority = service.hasAnyAuthority([Authority.ADMIN]);
301
300
 
302
- expect(hasAuthority).toBe(false);
303
- });
301
+ expect(hasAuthority).toBe(false);
302
+ });
304
303
 
305
- it('should return true if user is logged and has authority', () => {
306
- service.authenticate(accountWithAuthorities([Authority.USER]));
304
+ it('should return true if user is logged and has authority', () => {
305
+ service.authenticate(accountWithAuthorities([Authority.USER]));
307
306
 
308
- const hasAuthority = service.hasAnyAuthority([Authority.USER, Authority.ADMIN]);
307
+ const hasAuthority = service.hasAnyAuthority([Authority.USER, Authority.ADMIN]);
309
308
 
310
- expect(hasAuthority).toBe(true);
311
- });
309
+ expect(hasAuthority).toBe(true);
312
310
  });
313
311
  });
314
312
  });
@@ -23,11 +23,20 @@ import { Injectable } from '@angular/core';
23
23
  })
24
24
  export class ApplicationConfigService {
25
25
  private endpointPrefix = '';
26
+ private microfrontend = false;
26
27
 
27
28
  setEndpointPrefix(endpointPrefix: string): void {
28
29
  this.endpointPrefix = endpointPrefix;
29
30
  }
30
31
 
32
+ setMicrofrontend(microfrontend = true): void {
33
+ this.microfrontend = microfrontend;
34
+ }
35
+
36
+ isMicrofrontend(): boolean {
37
+ return this.microfrontend;
38
+ }
39
+
31
40
  getEndpointFor(api: string, microservice?: string): string {
32
41
  if (microservice) {
33
42
  return `${this.endpointPrefix}services/${microservice}/${api}`;
@@ -29,105 +29,103 @@ import { User, IUser } from './user.model';
29
29
 
30
30
  import { UserService } from './user.service';
31
31
 
32
- describe('Service Tests', () => {
33
- describe('User Service', () => {
34
- let service: UserService;
35
- let httpMock: HttpTestingController;
36
- let expectedResult: IUser | IUser[] | boolean | number | null;
37
-
38
- beforeEach(() => {
39
- TestBed.configureTestingModule({
40
- imports: [HttpClientTestingModule],
32
+ describe('User Service', () => {
33
+ let service: UserService;
34
+ let httpMock: HttpTestingController;
35
+ let expectedResult: IUser | IUser[] | boolean | number | null;
36
+
37
+ beforeEach(() => {
38
+ TestBed.configureTestingModule({
39
+ imports: [HttpClientTestingModule],
40
+ });
41
+ expectedResult = null;
42
+ service = TestBed.inject(UserService);
43
+ httpMock = TestBed.inject(HttpTestingController);
44
+ });
45
+
46
+ afterEach(() => {
47
+ httpMock.verify();
48
+ });
49
+
50
+ describe('Service methods', () => {
51
+ it('should return Users', () => {
52
+ service.query().subscribe(received => {
53
+ expectedResult = received.body;
41
54
  });
42
- expectedResult = null;
43
- service = TestBed.inject(UserService);
44
- httpMock = TestBed.inject(HttpTestingController);
55
+
56
+ const req = httpMock.expectOne({ method: 'GET' });
57
+ req.flush([new User(<%- tsKeyId %>, 'user')]);
58
+ expect(expectedResult).toEqual([{ id: <%- tsKeyId %>, login: 'user' }]);
45
59
  });
46
60
 
47
- afterEach(() => {
48
- httpMock.verify();
61
+ it('should propagate not found response', () => {
62
+ service.query().subscribe({
63
+ error: (error: HttpErrorResponse) => expectedResult = error.status
64
+ });
65
+
66
+ const req = httpMock.expectOne({ method: 'GET' });
67
+ req.flush('Internal Server Error', {
68
+ status: 500,
69
+ statusText: 'Inernal Server Error',
70
+ });
71
+ expect(expectedResult).toEqual(500);
49
72
  });
50
73
 
51
- describe('Service methods', () => {
52
- it('should return Users', () => {
53
- service.query().subscribe(received => {
54
- expectedResult = received.body;
55
- });
74
+ describe('addUserToCollectionIfMissing', () => {
75
+ it('should add a User to an empty array', () => {
76
+ const user: IUser = <%- testEntityPrimaryKey0 %>;
77
+ expectedResult = service.addUserToCollectionIfMissing([], user);
78
+ expect(expectedResult).toHaveLength(1);
79
+ expect(expectedResult).toContain(user);
80
+ });
81
+
82
+ it('should not add a User to an array that contains it', () => {
83
+ const user: IUser = <%- testEntityPrimaryKey0 %>;
84
+ const userCollection: IUser[] = [
85
+ {
86
+ ...user,
87
+ },
88
+ <%- testEntityPrimaryKey1 %>,
89
+ ];
90
+ expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
91
+ expect(expectedResult).toHaveLength(2);
92
+ });
93
+
94
+ it("should add a User to an array that doesn't contain it", () => {
95
+ const user: IUser = <%- testEntityPrimaryKey0 %>;
96
+ const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
97
+ expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
98
+ expect(expectedResult).toHaveLength(2);
99
+ expect(expectedResult).toContain(user);
100
+ });
101
+
102
+ it('should add only unique User to an array', () => {
103
+ const userArray: IUser[] = [<%- testEntityPrimaryKey0 %>, <%- testEntityPrimaryKey1 %>, <%- generateTestEntityPrimaryKey(user.primaryKey) %>];
104
+ const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
105
+ expectedResult = service.addUserToCollectionIfMissing(userCollection, ...userArray);
106
+ expect(expectedResult).toHaveLength(3);
107
+ });
56
108
 
57
- const req = httpMock.expectOne({ method: 'GET' });
58
- req.flush([new User(<%- tsKeyId %>, 'user')]);
59
- expect(expectedResult).toEqual([{ id: <%- tsKeyId %>, login: 'user' }]);
109
+ it("should accept varargs", () => {
110
+ const user: IUser = <%- testEntityPrimaryKey0 %>;
111
+ const user2: IUser = <%- testEntityPrimaryKey1 %>;
112
+ expectedResult = service.addUserToCollectionIfMissing([], user, user2);
113
+ expect(expectedResult).toHaveLength(2);
114
+ expect(expectedResult).toContain(user);
115
+ expect(expectedResult).toContain(user2);
60
116
  });
61
117
 
62
- it('should propagate not found response', () => {
63
- service.query().subscribe({
64
- error: (error: HttpErrorResponse) => expectedResult = error.status
65
- });
66
-
67
- const req = httpMock.expectOne({ method: 'GET' });
68
- req.flush('Internal Server Error', {
69
- status: 500,
70
- statusText: 'Inernal Server Error',
71
- });
72
- expect(expectedResult).toEqual(500);
118
+ it("should accept null and undefined values", () => {
119
+ const user: IUser = <%- testEntityPrimaryKey0 %>;
120
+ expectedResult = service.addUserToCollectionIfMissing([], null, user, undefined);
121
+ expect(expectedResult).toHaveLength(1);
122
+ expect(expectedResult).toContain(user);
73
123
  });
74
124
 
75
- describe('addUserToCollectionIfMissing', () => {
76
- it('should add a User to an empty array', () => {
77
- const user: IUser = <%- testEntityPrimaryKey0 %>;
78
- expectedResult = service.addUserToCollectionIfMissing([], user);
79
- expect(expectedResult).toHaveLength(1);
80
- expect(expectedResult).toContain(user);
81
- });
82
-
83
- it('should not add a User to an array that contains it', () => {
84
- const user: IUser = <%- testEntityPrimaryKey0 %>;
85
- const userCollection: IUser[] = [
86
- {
87
- ...user,
88
- },
89
- <%- testEntityPrimaryKey1 %>,
90
- ];
91
- expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
92
- expect(expectedResult).toHaveLength(2);
93
- });
94
-
95
- it("should add a User to an array that doesn't contain it", () => {
96
- const user: IUser = <%- testEntityPrimaryKey0 %>;
97
- const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
98
- expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
99
- expect(expectedResult).toHaveLength(2);
100
- expect(expectedResult).toContain(user);
101
- });
102
-
103
- it('should add only unique User to an array', () => {
104
- const userArray: IUser[] = [<%- testEntityPrimaryKey0 %>, <%- testEntityPrimaryKey1 %>, <%- generateTestEntityPrimaryKey(user.primaryKey) %>];
105
- const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
106
- expectedResult = service.addUserToCollectionIfMissing(userCollection, ...userArray);
107
- expect(expectedResult).toHaveLength(3);
108
- });
109
-
110
- it("should accept varargs", () => {
111
- const user: IUser = <%- testEntityPrimaryKey0 %>;
112
- const user2: IUser = <%- testEntityPrimaryKey1 %>;
113
- expectedResult = service.addUserToCollectionIfMissing([], user, user2);
114
- expect(expectedResult).toHaveLength(2);
115
- expect(expectedResult).toContain(user);
116
- expect(expectedResult).toContain(user2);
117
- });
118
-
119
- it("should accept null and undefined values", () => {
120
- const user: IUser = <%- testEntityPrimaryKey0 %>;
121
- expectedResult = service.addUserToCollectionIfMissing([], null, user, undefined);
122
- expect(expectedResult).toHaveLength(1);
123
- expect(expectedResult).toContain(user);
124
- });
125
-
126
- it('should return initial array if no users is added', () => {
127
- const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
128
- expectedResult = service.addUserToCollectionIfMissing(userCollection, null, undefined);
129
- expect(expectedResult).toEqual(userCollection);
130
- });
125
+ it('should return initial array if no users is added', () => {
126
+ const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
127
+ expectedResult = service.addUserToCollectionIfMissing(userCollection, null, undefined);
128
+ expect(expectedResult).toEqual(userCollection);
131
129
  });
132
130
  });
133
131
  });