generator-jhipster 8.0.0-beta.1 → 8.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -5
- package/dist/generators/angular/resources/package.json +14 -14
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/user-management.route.ts.ejs +9 -14
- package/dist/generators/angular/templates/src/main/webapp/app/app-routing.module.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/user-route-access.service.ts.ejs +26 -33
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.ts.ejs +1 -1
- package/dist/generators/app/generator.mjs +0 -1
- package/dist/generators/app/prompts.mjs +1 -1
- package/dist/generators/base/generator-base-blueprint.mjs +5 -3
- package/dist/generators/base/generator-base-todo.mjs +5 -12
- package/dist/generators/base/support/faker.mjs +6 -8
- package/dist/generators/base-application/support/prepare-field.mjs +9 -9
- package/dist/generators/base-core/generator-base.mjs +565 -0
- package/dist/generators/base-core/index.mjs +1 -1
- package/dist/generators/base-docker/generator.mjs +0 -7
- package/dist/generators/bootstrap/generator.mjs +10 -26
- package/dist/generators/ci-cd/templates/jenkins/idea.gdsl.ejs +1 -1
- package/dist/generators/client/needle-api/needle-client-webpack.mjs +1 -1
- package/dist/generators/client/resources/package.json +6 -6
- package/dist/generators/client/templates/src/main/webapp/index.html.ejs +7 -8
- package/dist/generators/client/templates/src/main/webapp/swagger-ui/index.html.ejs +2 -1
- package/dist/generators/common/resources/package.json +3 -3
- package/dist/generators/docker/generator.mjs +1 -1
- package/dist/generators/docker/templates/src/main/docker/app.yml.ejs +1 -2
- package/dist/generators/docker/templates/src/main/docker/mariadb.yml.ejs +5 -5
- package/dist/generators/docker-compose/generator.mjs +1 -1
- package/dist/generators/entities/generator.mjs +0 -1
- package/dist/generators/generate-blueprint/files.mjs +1 -0
- package/dist/generators/generate-blueprint/generator.mjs +3 -1
- package/dist/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +1 -1
- package/dist/generators/generate-blueprint/templates/tsconfig.json.ejs +31 -0
- package/dist/generators/generator-constants.mjs +11 -14
- package/dist/generators/gradle/constants.mjs +1 -1
- package/dist/generators/heroku/generator.mjs +42 -2
- package/dist/generators/init/constants.mjs +0 -1
- package/dist/generators/init/generator.mjs +3 -2
- package/dist/generators/init/templates/package.json.ejs +1 -1
- package/dist/generators/jdl/generator.mjs +22 -15
- package/dist/generators/kubernetes/kubernetes-base.mjs +2 -2
- package/dist/generators/kubernetes/templates/deployment.yml.ejs +1 -3
- package/dist/generators/kubernetes-helm/templates/app/Chart.yml.ejs +1 -1
- package/dist/generators/kubernetes-helm/templates/app/requirements.yml.ejs +1 -1
- package/dist/generators/kubernetes-knative/templates/service.yml.ejs +1 -3
- package/dist/generators/languages/templates/entity/i18n/entity_ja.json.ejs +11 -11
- package/dist/generators/languages/templates/src/main/resources/i18n/messages_ja.properties.ejs +7 -7
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/error.json +5 -5
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/gateway.json +6 -6
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +37 -37
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/health.json.ejs +6 -6
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/home.json +2 -2
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/login.json +2 -2
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/metrics.json +54 -46
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/register.json +1 -1
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/reset.json.ejs +10 -10
- package/dist/generators/languages/templates/src/main/webapp/i18n/ja/user-management.json +21 -21
- package/dist/generators/liquibase/generator.mjs +6 -0
- package/dist/generators/liquibase/support/maven-plugin.mjs +2 -1
- package/dist/generators/liquibase/templates/gradle/liquibase.gradle.ejs +14 -4
- package/dist/generators/liquibase-changelogs/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +1 -1
- package/dist/generators/openshift/templates/deployment.yml.ejs +1 -3
- package/dist/generators/page/generator.mjs +0 -1
- package/dist/generators/react/resources/package.json +26 -26
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder/_entityFile.tsx.ejs +1 -0
- package/dist/generators/react/templates/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +1 -1
- package/dist/generators/server/command.mjs +1 -1
- package/dist/generators/server/generator.mjs +1 -7
- package/dist/generators/server/resources/Dockerfile +11 -11
- package/dist/generators/server/resources/gradle/libs.versions.toml +5 -3
- package/dist/generators/server/resources/pom.xml +35 -17
- package/dist/generators/server/support/spring-factories.mjs +8 -13
- package/dist/generators/server/templates/.devcontainer/devcontainer.json.ejs +24 -19
- package/dist/generators/server/templates/build.gradle.ejs +10 -1
- package/dist/generators/server/templates/entity/src/test/java/package/web/rest/_EntityClass_ResourceIT.java.ejs +2 -2
- package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +16 -4
- package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +16 -4
- package/dist/generators/server/templates/gradle.properties.ejs +1 -0
- package/dist/generators/server/templates/pom.xml.ejs +39 -9
- package/dist/generators/server/templates/settings.gradle.ejs +1 -0
- package/dist/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +3 -3
- package/dist/generators/server/templates/src/main/java/package/config/SecurityConfiguration_imperative.java.ejs +11 -4
- package/dist/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +5 -3
- package/dist/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +3 -3
- package/dist/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +2 -4
- package/dist/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/package/service/UserService.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +3 -3
- package/dist/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/java/package/web/rest/errors/BadRequestAlertException.java.ejs +0 -9
- package/dist/generators/server/templates/src/main/java/package/web/rest/errors/ExceptionTranslator.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -2
- package/dist/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -2
- package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +1 -1
- package/dist/generators/server/templates/src/main/resources/logback-spring.xml.ejs +4 -0
- package/dist/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +70 -37
- package/dist/generators/server/templates/src/test/java/package/web/filter/SpaWebFilterIT_imperative.java.ejs +1 -1
- package/dist/generators/server/templates/src/test/java/package/web/filter/SpaWebFilterIT_reactive.java.ejs +1 -1
- package/dist/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +7 -7
- package/dist/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +5 -5
- package/dist/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +6 -6
- package/dist/generators/spring-cache/internal/dependencies.mjs +3 -0
- package/dist/generators/spring-controller/generator.mjs +0 -1
- package/dist/generators/spring-data-relational/internal/dependencies.mjs +6 -6
- package/dist/generators/spring-data-relational/support/database-data.mjs +0 -4
- package/dist/generators/spring-data-relational/templates/src/test/java/package/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
- package/dist/generators/spring-service/generator.mjs +0 -1
- package/dist/generators/upgrade/generator.mjs +25 -55
- package/dist/generators/vue/resources/package.json +23 -23
- package/dist/types/generators/angular/support/index.d.mts +23 -0
- package/dist/types/generators/angular/support/needles.d.mts +35 -0
- package/dist/types/generators/angular/support/path-utils.d.mts +1 -0
- package/dist/types/generators/angular/support/translate-angular.d.mts +11 -0
- package/dist/types/generators/angular/support/update-languages.d.mts +21 -0
- package/dist/types/generators/angular/types-export.d.ts +1 -0
- package/dist/types/generators/app/support/check-node.d.mts +10 -0
- package/dist/types/generators/app/support/index.d.mts +19 -0
- package/dist/types/generators/app/types-export.d.ts +1 -0
- package/dist/types/generators/aws/types-export.d.ts +1 -0
- package/dist/types/generators/azure-app-service/types-export.d.ts +1 -0
- package/dist/types/generators/azure-spring-cloud/types-export.d.ts +1 -0
- package/dist/types/generators/base/generator-base-blueprint.d.mts +1 -1
- package/dist/types/generators/base/generator-base-todo.d.mts +9 -15
- package/dist/types/generators/base/support/needles.d.mts +1 -1
- package/dist/types/generators/base/types-export.d.ts +4 -0
- package/dist/types/generators/base-application/generator.d.mts +1 -22
- package/dist/types/generators/base-application/types-export.d.ts +4 -0
- package/dist/types/generators/base-core/generator-base.d.mts +166 -0
- package/dist/types/generators/base-core/index.d.mts +1 -1
- package/dist/types/generators/base-core/types-export.d.ts +1 -0
- package/dist/types/generators/bootstrap/support/auto-crlf-transform.d.mts +7 -0
- package/dist/types/generators/bootstrap/support/force-write-config-files-transform.d.mts +3 -0
- package/dist/types/generators/bootstrap/support/index.d.mts +23 -0
- package/dist/types/generators/bootstrap/support/multi-step-transform/index.d.mts +24 -0
- package/dist/types/generators/bootstrap/support/multi-step-transform/template-data.d.mts +18 -0
- package/dist/types/generators/bootstrap/support/multi-step-transform/template-file-fs.d.mts +11 -0
- package/dist/types/generators/bootstrap/support/multi-step-transform/template-file.d.mts +18 -0
- package/dist/types/generators/bootstrap/support/prettier-support.d.mts +2 -0
- package/dist/types/generators/bootstrap/support/sort-config-files-transform.d.mts +2 -0
- package/dist/types/generators/bootstrap/types-export.d.ts +1 -0
- package/dist/types/generators/bootstrap-application/types-export.d.ts +1 -0
- package/dist/types/generators/bootstrap-application-base/types-export.d.ts +1 -0
- package/dist/types/generators/bootstrap-application-client/types-export.d.ts +1 -0
- package/dist/types/generators/bootstrap-application-server/types-export.d.ts +1 -0
- package/dist/types/generators/ci-cd/types-export.d.ts +1 -0
- package/dist/types/generators/client/needle-api/needle-client-webpack.d.mts +1 -1
- package/dist/types/generators/client/types-export.d.ts +1 -0
- package/dist/types/generators/cloudfoundry/types-export.d.ts +1 -0
- package/dist/types/generators/common/types-export.d.ts +1 -0
- package/dist/types/generators/cucumber/types-export.d.ts +1 -0
- package/dist/types/generators/cypress/types-export.d.ts +1 -0
- package/dist/types/generators/docker/types-export.d.ts +1 -0
- package/dist/types/generators/docker-compose/types-export.d.ts +1 -0
- package/dist/types/generators/entities/types-export.d.ts +1 -0
- package/dist/types/generators/entity/support/asserts.d.mts +18 -0
- package/dist/types/generators/entity/support/index.d.mts +19 -0
- package/dist/types/generators/entity/types-export.d.ts +1 -0
- package/dist/types/generators/export-jdl/types-export.d.ts +1 -0
- package/dist/types/generators/gae/types-export.d.ts +1 -0
- package/dist/types/generators/gatling/types-export.d.ts +1 -0
- package/dist/types/generators/generate-blueprint/types-export.d.ts +1 -0
- package/dist/types/generators/generator-constants.d.mts +6 -6
- package/dist/types/generators/git/types-export.d.ts +1 -0
- package/dist/types/generators/gradle/types-export.d.ts +1 -0
- package/dist/types/generators/heroku/types-export.d.ts +1 -0
- package/dist/types/generators/info/types-export.d.ts +1 -0
- package/dist/types/generators/init/types-export.d.ts +1 -0
- package/dist/types/generators/java/support/add-java-annotation.d.mts +22 -0
- package/dist/types/generators/java/support/checks/check-java.d.mts +9 -0
- package/dist/types/generators/java/support/checks/index.d.mts +1 -0
- package/dist/types/generators/java/support/generated-annotation-transform.d.mts +3 -0
- package/dist/types/generators/java/support/index.d.mts +23 -0
- package/dist/types/generators/java/support/package-info-transform.d.mts +11 -0
- package/dist/types/generators/java/types-export.d.ts +1 -0
- package/dist/types/generators/jdl/types-export.d.ts +1 -0
- package/dist/types/generators/kubernetes/types-export.d.ts +1 -0
- package/dist/types/generators/kubernetes-helm/types-export.d.ts +1 -0
- package/dist/types/generators/kubernetes-knative/types-export.d.ts +1 -0
- package/dist/types/generators/languages/types-export.d.ts +1 -0
- package/dist/types/generators/liquibase/support/index.d.mts +21 -0
- package/dist/types/generators/liquibase/support/maven-plugin.d.mts +13 -0
- package/dist/types/generators/liquibase/support/post-prepare-entity.d.mts +2 -0
- package/dist/types/generators/liquibase/support/prepare-field.d.mts +1 -0
- package/dist/types/generators/liquibase/support/relationship.d.mts +15 -0
- package/dist/types/generators/liquibase/types-export.d.ts +1 -0
- package/dist/types/generators/liquibase/types.d.mts +8 -0
- package/dist/types/generators/liquibase-changelogs/support/formatting.d.mts +9 -0
- package/dist/types/generators/liquibase-changelogs/support/index.d.mts +19 -0
- package/dist/types/generators/liquibase-changelogs/types-export.d.ts +1 -0
- package/dist/types/generators/maven/internal/xml-store.d.mts +40 -0
- package/dist/types/generators/maven/support/index.d.mts +20 -0
- package/dist/types/generators/maven/support/pom-store.d.mts +47 -0
- package/dist/types/generators/maven/types-export.d.ts +1 -0
- package/dist/types/generators/needle-base.d.mts +1 -1
- package/dist/types/generators/openapi-client/types-export.d.ts +1 -0
- package/dist/types/generators/openshift/types-export.d.ts +1 -0
- package/dist/types/generators/page/support/index.d.mts +19 -0
- package/dist/types/generators/page/support/needles.d.mts +22 -0
- package/dist/types/generators/page/types-export.d.ts +1 -0
- package/dist/types/generators/project-name/types-export.d.ts +1 -0
- package/dist/types/generators/react/support/index.d.mts +22 -0
- package/dist/types/generators/react/support/needles.d.mts +1 -0
- package/dist/types/generators/react/support/translate-react.d.mts +5 -0
- package/dist/types/generators/react/support/update-languages.d.mts +21 -0
- package/dist/types/generators/react/types-export.d.ts +1 -0
- package/dist/types/generators/server/types-export.d.ts +1 -0
- package/dist/types/generators/server/types.d.mts +2 -0
- package/dist/types/generators/spring-cache/types-export.d.ts +1 -0
- package/dist/types/generators/spring-cloud-stream/types-export.d.ts +1 -0
- package/dist/types/generators/spring-controller/types-export.d.ts +1 -0
- package/dist/types/generators/spring-data-cassandra/types-export.d.ts +1 -0
- package/dist/types/generators/spring-data-couchbase/types-export.d.ts +1 -0
- package/dist/types/generators/spring-data-elasticsearch/types-export.d.ts +1 -0
- package/dist/types/generators/spring-data-mongodb/types-export.d.ts +1 -0
- package/dist/types/generators/spring-data-neo4j/types-export.d.ts +1 -0
- package/dist/types/generators/spring-data-relational/types-export.d.ts +1 -0
- package/dist/types/generators/spring-service/types-export.d.ts +1 -0
- package/dist/types/generators/spring-websocket/types-export.d.ts +1 -0
- package/dist/types/generators/upgrade/types-export.d.ts +1 -0
- package/dist/types/generators/vue/support/convert-translation.d.mts +11 -0
- package/dist/types/generators/vue/support/index.d.mts +23 -0
- package/dist/types/generators/vue/support/needles.d.mts +1 -0
- package/dist/types/generators/vue/support/translate-vue.d.mts +22 -0
- package/dist/types/generators/vue/support/update-languages.d.mts +21 -0
- package/dist/types/generators/vue/types-export.d.ts +1 -0
- package/dist/types/generators/workspaces/types-export.d.ts +1 -0
- package/package.json +33 -26
|
@@ -18,12 +18,22 @@
|
|
|
18
18
|
-%>
|
|
19
19
|
package <%= packageName %>.security.oauth2;
|
|
20
20
|
|
|
21
|
+
import static org.junit.jupiter.api.Assertions.fail;
|
|
22
|
+
import static org.mockito.ArgumentMatchers.*;
|
|
23
|
+
import static org.mockito.Mockito.*;
|
|
24
|
+
|
|
25
|
+
import java.time.Duration;
|
|
26
|
+
import java.time.Instant;
|
|
27
|
+
import java.util.List;
|
|
28
|
+
import java.util.Map;
|
|
29
|
+
import java.util.Optional;
|
|
21
30
|
import org.assertj.core.api.Assertions;
|
|
22
31
|
import org.junit.jupiter.api.BeforeEach;
|
|
23
32
|
import org.junit.jupiter.api.Test;
|
|
33
|
+
import org.junit.jupiter.api.extension.ExtendWith;
|
|
24
34
|
import org.mockito.InjectMocks;
|
|
25
35
|
import org.mockito.Mock;
|
|
26
|
-
import org.mockito.
|
|
36
|
+
import org.mockito.junit.jupiter.MockitoExtension;
|
|
27
37
|
import org.springframework.boot.web.client.RestTemplateBuilder;
|
|
28
38
|
import org.springframework.http.RequestEntity;
|
|
29
39
|
import org.springframework.http.ResponseEntity;
|
|
@@ -44,36 +54,30 @@ import org.springframework.security.oauth2.server.resource.authentication.JwtAut
|
|
|
44
54
|
import org.springframework.web.client.ResponseErrorHandler;
|
|
45
55
|
import org.springframework.web.client.RestTemplate;
|
|
46
56
|
|
|
47
|
-
import java.time.Duration;
|
|
48
|
-
import java.time.Instant;
|
|
49
|
-
import java.util.List;
|
|
50
|
-
import java.util.Map;
|
|
51
|
-
import java.util.Optional;
|
|
52
|
-
|
|
53
|
-
import static org.junit.jupiter.api.Assertions.fail;
|
|
54
|
-
import static org.mockito.ArgumentMatchers.*;
|
|
55
|
-
import static org.mockito.Mockito.*;
|
|
56
|
-
|
|
57
57
|
/**
|
|
58
58
|
* Test class for the {@link AuthorizationHeaderUtil} utility class.
|
|
59
59
|
*/
|
|
60
|
+
@ExtendWith(MockitoExtension.class)
|
|
60
61
|
class AuthorizationHeaderUtilTest {
|
|
61
62
|
|
|
62
63
|
public static final String VALID_REGISTRATION_ID = "OIDC";
|
|
63
64
|
public static final String SUB_VALUE = "123456";
|
|
64
|
-
|
|
65
|
-
@Mock
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
|
|
66
|
+
@Mock
|
|
67
|
+
private OAuth2AuthorizedClientService clientService;
|
|
68
|
+
|
|
69
|
+
@Mock
|
|
70
|
+
private RestTemplateBuilder restTemplateBuilder;
|
|
71
|
+
|
|
72
|
+
@Mock
|
|
73
|
+
private SecurityContext securityContext;
|
|
74
|
+
|
|
75
|
+
@InjectMocks
|
|
76
|
+
private AuthorizationHeaderUtil authorizationHeaderUtil;
|
|
68
77
|
|
|
69
78
|
@BeforeEach
|
|
70
79
|
public void setup() {
|
|
71
|
-
MockitoAnnotations.openMocks(this);
|
|
72
80
|
SecurityContextHolder.setContext(securityContext);
|
|
73
|
-
|
|
74
|
-
doReturn(restTemplateBuilder).when(restTemplateBuilder).additionalMessageConverters(any(HttpMessageConverter.class));
|
|
75
|
-
doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
|
|
76
|
-
doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
@Test
|
|
@@ -88,8 +92,9 @@ class AuthorizationHeaderUtilTest {
|
|
|
88
92
|
|
|
89
93
|
@Test
|
|
90
94
|
void getAuthorizationHeader_JwtAuthentication() {
|
|
91
|
-
JwtAuthenticationToken jwtToken = new JwtAuthenticationToken(
|
|
92
|
-
Instant.now().plus(Duration.ofMinutes(3)), Map.of("alg", "HS256"), Map.of("sub",SUB_VALUE))
|
|
95
|
+
JwtAuthenticationToken jwtToken = new JwtAuthenticationToken(
|
|
96
|
+
new Jwt("tokenVal", Instant.now(), Instant.now().plus(Duration.ofMinutes(3)), Map.of("alg", "HS256"), Map.of("sub", SUB_VALUE))
|
|
97
|
+
);
|
|
93
98
|
doReturn(jwtToken).when(securityContext).getAuthentication();
|
|
94
99
|
|
|
95
100
|
Optional<String> header = authorizationHeaderUtil.getAuthorizationHeader();
|
|
@@ -100,15 +105,15 @@ class AuthorizationHeaderUtilTest {
|
|
|
100
105
|
@Test
|
|
101
106
|
void getAuthorizationHeader_OAuth2Authentication_InvalidClient() {
|
|
102
107
|
OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken("INVALID");
|
|
103
|
-
OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient();
|
|
104
108
|
|
|
105
109
|
doReturn(oauth2Token).when(securityContext).getAuthentication();
|
|
106
|
-
doReturn(authorizedClient).when(clientService).loadAuthorizedClient(eq(VALID_REGISTRATION_ID), eq(SUB_VALUE));
|
|
107
110
|
|
|
108
|
-
Assertions
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
111
|
+
Assertions
|
|
112
|
+
.assertThatThrownBy(() -> {
|
|
113
|
+
authorizationHeaderUtil.getAuthorizationHeader();
|
|
114
|
+
})
|
|
115
|
+
.isInstanceOf(OAuth2AuthorizationException.class)
|
|
116
|
+
.hasMessageContaining("[access_denied] The token is expired");
|
|
112
117
|
}
|
|
113
118
|
|
|
114
119
|
@Test
|
|
@@ -125,6 +130,12 @@ class AuthorizationHeaderUtilTest {
|
|
|
125
130
|
|
|
126
131
|
@Test
|
|
127
132
|
void getAuthorizationHeader_OAuth2Authentication_RefreshToken() {
|
|
133
|
+
doReturn(restTemplateBuilder)
|
|
134
|
+
.when(restTemplateBuilder)
|
|
135
|
+
.additionalMessageConverters(any(HttpMessageConverter.class), any(HttpMessageConverter.class));
|
|
136
|
+
doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
|
|
137
|
+
doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
|
|
138
|
+
|
|
128
139
|
OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken(VALID_REGISTRATION_ID);
|
|
129
140
|
OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient(true);
|
|
130
141
|
|
|
@@ -142,6 +153,12 @@ class AuthorizationHeaderUtilTest {
|
|
|
142
153
|
|
|
143
154
|
@Test
|
|
144
155
|
void getAuthorizationHeader_OAuth2Authentication_RefreshToken_NoRefreshToken() {
|
|
156
|
+
doReturn(restTemplateBuilder)
|
|
157
|
+
.when(restTemplateBuilder)
|
|
158
|
+
.additionalMessageConverters(any(HttpMessageConverter.class), any(HttpMessageConverter.class));
|
|
159
|
+
doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
|
|
160
|
+
doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
|
|
161
|
+
|
|
145
162
|
OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken(VALID_REGISTRATION_ID);
|
|
146
163
|
OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient(true);
|
|
147
164
|
|
|
@@ -159,6 +176,12 @@ class AuthorizationHeaderUtilTest {
|
|
|
159
176
|
|
|
160
177
|
@Test
|
|
161
178
|
void getAuthorizationHeader_OAuth2Authentication_RefreshTokenFails() {
|
|
179
|
+
doReturn(restTemplateBuilder)
|
|
180
|
+
.when(restTemplateBuilder)
|
|
181
|
+
.additionalMessageConverters(any(HttpMessageConverter.class), any(HttpMessageConverter.class));
|
|
182
|
+
doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
|
|
183
|
+
doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
|
|
184
|
+
|
|
162
185
|
OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken(VALID_REGISTRATION_ID);
|
|
163
186
|
OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient(true);
|
|
164
187
|
|
|
@@ -166,12 +189,16 @@ class AuthorizationHeaderUtilTest {
|
|
|
166
189
|
doReturn(authorizedClient).when(clientService).loadAuthorizedClient(eq(VALID_REGISTRATION_ID), eq(SUB_VALUE));
|
|
167
190
|
|
|
168
191
|
RestTemplate restTemplate = mock(RestTemplate.class);
|
|
169
|
-
doThrow(new OAuth2AuthorizationException(new OAuth2Error("E"), "error"))
|
|
192
|
+
doThrow(new OAuth2AuthorizationException(new OAuth2Error("E"), "error"))
|
|
193
|
+
.when(restTemplate)
|
|
194
|
+
.exchange(any(RequestEntity.class), eq(OAuthIdpTokenResponseDTO.class));
|
|
170
195
|
doReturn(restTemplate).when(restTemplateBuilder).build();
|
|
171
196
|
|
|
172
|
-
Assertions
|
|
173
|
-
|
|
174
|
-
|
|
197
|
+
Assertions
|
|
198
|
+
.assertThatThrownBy(() -> {
|
|
199
|
+
authorizationHeaderUtil.getAuthorizationHeader();
|
|
200
|
+
})
|
|
201
|
+
.isInstanceOf(OAuth2AuthenticationException.class)
|
|
175
202
|
.hasMessageContaining("error");
|
|
176
203
|
}
|
|
177
204
|
|
|
@@ -195,7 +222,8 @@ class AuthorizationHeaderUtilTest {
|
|
|
195
222
|
OAuth2AccessToken token = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, "tokenVal", issuedAt, expiresAt);
|
|
196
223
|
|
|
197
224
|
return new OAuth2AuthorizedClient(
|
|
198
|
-
ClientRegistration
|
|
225
|
+
ClientRegistration
|
|
226
|
+
.withRegistrationId(VALID_REGISTRATION_ID)
|
|
199
227
|
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
|
|
200
228
|
.clientId("web-app")
|
|
201
229
|
.clientSecret("secret")
|
|
@@ -205,14 +233,19 @@ class AuthorizationHeaderUtilTest {
|
|
|
205
233
|
.build(),
|
|
206
234
|
"sub",
|
|
207
235
|
token,
|
|
208
|
-
new OAuth2RefreshToken("refreshVal", Instant.now())
|
|
236
|
+
new OAuth2RefreshToken("refreshVal", Instant.now())
|
|
237
|
+
);
|
|
209
238
|
}
|
|
210
239
|
|
|
211
240
|
private OAuth2AuthenticationToken getTestOAuth2AuthenticationToken(String registrationId) {
|
|
212
241
|
return new OAuth2AuthenticationToken(
|
|
213
|
-
new DefaultOidcUser(
|
|
214
|
-
|
|
215
|
-
|
|
242
|
+
new DefaultOidcUser(
|
|
243
|
+
List.of(new SimpleGrantedAuthority("USER")),
|
|
244
|
+
OidcIdToken.withTokenValue("tokenVal").claim("sub", SUB_VALUE).build()
|
|
245
|
+
),
|
|
246
|
+
List.of(new SimpleGrantedAuthority("USER")),
|
|
247
|
+
registrationId
|
|
248
|
+
);
|
|
216
249
|
}
|
|
217
250
|
|
|
218
251
|
private Optional<OAuthIdpTokenResponseDTO> getTestOAuthIdpTokenResponseDTO(boolean hasRefreshToken) {
|
|
@@ -13,7 +13,7 @@ import org.springframework.http.MediaType;
|
|
|
13
13
|
@AutoConfigureWebTestClient(timeout = IntegrationTest.DEFAULT_TIMEOUT)
|
|
14
14
|
@WithMockUser
|
|
15
15
|
@IntegrationTest
|
|
16
|
-
|
|
16
|
+
class SpaWebFilterIT {
|
|
17
17
|
|
|
18
18
|
@Autowired
|
|
19
19
|
private WebTestClient webTestClient;
|
package/dist/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs
CHANGED
|
@@ -520,8 +520,8 @@ class AccountResourceIT {
|
|
|
520
520
|
|
|
521
521
|
Optional<<%= user.persistClass %>> testUser = userRepository.findOneByEmailIgnoreCase("alice2@example.com")<% if (reactive) { %>.blockOptional()<% } %>;
|
|
522
522
|
assertThat(testUser).isPresent();
|
|
523
|
-
testUser.
|
|
524
|
-
userRepository.save(testUser.
|
|
523
|
+
testUser.orElseThrow().setActivated(true);
|
|
524
|
+
userRepository.save(testUser.orElseThrow())<% if (reactive) { %>.block()<% } %>;
|
|
525
525
|
|
|
526
526
|
// Second (already activated) user
|
|
527
527
|
<%_ if (reactive) { _%>
|
|
@@ -644,10 +644,10 @@ class AccountResourceIT {
|
|
|
644
644
|
|
|
645
645
|
Optional<<%= user.persistClass %>> testUser4 = userRepository.findOneByLogin("test-register-duplicate-email-3")<% if (reactive) { %>.blockOptional()<% } %>;
|
|
646
646
|
assertThat(testUser4).isPresent();
|
|
647
|
-
assertThat(testUser4.
|
|
647
|
+
assertThat(testUser4.orElseThrow().getEmail()).isEqualTo("test-register-duplicate-email@example.com");
|
|
648
648
|
|
|
649
|
-
testUser4.
|
|
650
|
-
userService.updateUser((new <%= user.adminUserDto %>(testUser4.
|
|
649
|
+
testUser4.orElseThrow().setActivated(true);
|
|
650
|
+
userService.updateUser((new <%= user.adminUserDto %>(testUser4.orElseThrow())))<% if (reactive) { %>.block()<% } %>;
|
|
651
651
|
|
|
652
652
|
// Register 4th (already activated) user
|
|
653
653
|
<%_ if (reactive) { _%>
|
|
@@ -701,8 +701,8 @@ class AccountResourceIT {
|
|
|
701
701
|
|
|
702
702
|
Optional<<%= user.persistClass %>> userDup = userRepository.findOne<% if (databaseTypeSql) { %>WithAuthorities<% } %>ByLogin("badguy")<% if (reactive) { %>.blockOptional()<% } %>;
|
|
703
703
|
assertThat(userDup).isPresent();
|
|
704
|
-
assertThat(userDup.
|
|
705
|
-
.containsExactly(<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { %>authorityRepository.findById(AuthoritiesConstants.USER).<% if (reactive) { %>block<% } else { %>
|
|
704
|
+
assertThat(userDup.orElseThrow().getAuthorities()).hasSize(1)
|
|
705
|
+
.containsExactly(<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { %>authorityRepository.findById(AuthoritiesConstants.USER).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>()<% } %><% if (databaseTypeCassandra || databaseTypeCouchbase) { %>AuthoritiesConstants.USER<% } %>);
|
|
706
706
|
}
|
|
707
707
|
|
|
708
708
|
@Test
|
|
@@ -239,16 +239,16 @@ public final class TestUtil {
|
|
|
239
239
|
<%_ if (databaseTypeSql) { _%>
|
|
240
240
|
|
|
241
241
|
/**
|
|
242
|
-
*
|
|
242
|
+
* Executes a query on the EntityManager finding all stored objects.
|
|
243
243
|
* @param <T> The type of objects to be searched
|
|
244
244
|
* @param em The instance of the EntityManager
|
|
245
|
-
* @param
|
|
245
|
+
* @param clazz The class type to be searched
|
|
246
246
|
* @return A list of all found objects
|
|
247
247
|
*/
|
|
248
|
-
public static <T> List<T> findAll(EntityManager em, Class<T>
|
|
248
|
+
public static <T> List<T> findAll(EntityManager em, Class<T> clazz) {
|
|
249
249
|
CriteriaBuilder cb = em.getCriteriaBuilder();
|
|
250
|
-
CriteriaQuery<T> cq = cb.createQuery(
|
|
251
|
-
Root<T> rootEntry = cq.from(
|
|
250
|
+
CriteriaQuery<T> cq = cb.createQuery(clazz);
|
|
251
|
+
Root<T> rootEntry = cq.from(clazz);
|
|
252
252
|
CriteriaQuery<T> all = cq.select(rootEntry);
|
|
253
253
|
TypedQuery<T> allQuery = em.createQuery(all);
|
|
254
254
|
return allQuery.getResultList();
|
package/dist/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs
CHANGED
|
@@ -630,7 +630,7 @@ class UserResourceIT {
|
|
|
630
630
|
.collectList().block()<% } %>.size();
|
|
631
631
|
|
|
632
632
|
// Update the user
|
|
633
|
-
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>
|
|
633
|
+
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
|
|
634
634
|
|
|
635
635
|
<%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
|
|
636
636
|
user.setId(updatedUser.getId());
|
|
@@ -668,7 +668,7 @@ class UserResourceIT {
|
|
|
668
668
|
// Validate the User in the database
|
|
669
669
|
assertPersistedUsers(users -> {
|
|
670
670
|
assertThat(users).hasSize(databaseSizeBeforeUpdate);
|
|
671
|
-
<%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().
|
|
671
|
+
<%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().orElseThrow();
|
|
672
672
|
assertThat(testUser.getFirstName()).isEqualTo(UPDATED_FIRSTNAME);
|
|
673
673
|
assertThat(testUser.getLastName()).isEqualTo(UPDATED_LASTNAME);
|
|
674
674
|
assertThat(testUser.getEmail()).isEqualTo(UPDATED_EMAIL);
|
|
@@ -695,7 +695,7 @@ class UserResourceIT {
|
|
|
695
695
|
.collectList().block()<% } %>.size();
|
|
696
696
|
|
|
697
697
|
// Update the user
|
|
698
|
-
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>
|
|
698
|
+
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
|
|
699
699
|
|
|
700
700
|
<%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
|
|
701
701
|
user.setId(updatedUser.getId());
|
|
@@ -733,7 +733,7 @@ class UserResourceIT {
|
|
|
733
733
|
// Validate the User in the database
|
|
734
734
|
assertPersistedUsers(users -> {
|
|
735
735
|
assertThat(users).hasSize(databaseSizeBeforeUpdate);
|
|
736
|
-
<%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().
|
|
736
|
+
<%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().orElseThrow();
|
|
737
737
|
assertThat(testUser.getLogin()).isEqualTo(UPDATED_LOGIN);
|
|
738
738
|
assertThat(testUser.getFirstName()).isEqualTo(UPDATED_FIRSTNAME);
|
|
739
739
|
assertThat(testUser.getLastName()).isEqualTo(UPDATED_LASTNAME);
|
|
@@ -784,7 +784,7 @@ class UserResourceIT {
|
|
|
784
784
|
<%_ } _%>
|
|
785
785
|
|
|
786
786
|
// Update the user
|
|
787
|
-
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>
|
|
787
|
+
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
|
|
788
788
|
|
|
789
789
|
<%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
|
|
790
790
|
user.setId(updatedUser.getId());
|
|
@@ -859,7 +859,7 @@ class UserResourceIT {
|
|
|
859
859
|
<%_ } _%>
|
|
860
860
|
|
|
861
861
|
// Update the user
|
|
862
|
-
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>
|
|
862
|
+
<%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
|
|
863
863
|
|
|
864
864
|
<%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
|
|
865
865
|
user.setId(updatedUser.getId());
|
|
@@ -23,6 +23,9 @@ const javaxCacheApi = {
|
|
|
23
23
|
const hibernateJCache = {
|
|
24
24
|
groupId: 'org.hibernate.orm',
|
|
25
25
|
artifactId: 'hibernate-jcache',
|
|
26
|
+
// TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579
|
|
27
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
28
|
+
version: '${hibernate.version}',
|
|
26
29
|
};
|
|
27
30
|
// eslint-disable-next-line import/prefer-default-export
|
|
28
31
|
export const getCacheProviderMavenDefinition = (cacheProvider, javaDependencies) => {
|
|
@@ -50,8 +50,10 @@ export const getImperativeMavenDefinition = ({ javaDependencies }) => ({
|
|
|
50
50
|
properties: [{ property: 'hibernate.version', value: javaDependencies.hibernate }],
|
|
51
51
|
dependencies: [
|
|
52
52
|
{ groupId: 'org.springframework.boot', artifactId: 'spring-boot-starter-data-jpa' },
|
|
53
|
-
{ groupId: 'com.fasterxml.jackson.datatype', artifactId: 'jackson-datatype-
|
|
54
|
-
|
|
53
|
+
{ groupId: 'com.fasterxml.jackson.datatype', artifactId: 'jackson-datatype-hibernate6' },
|
|
54
|
+
// TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579
|
|
55
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
56
|
+
{ groupId: 'org.hibernate.orm', artifactId: 'hibernate-core', version: '${hibernate.version}' },
|
|
55
57
|
{ groupId: 'org.hibernate.orm', artifactId: 'hibernate-jpamodelgen', scope: 'provided' },
|
|
56
58
|
{ groupId: 'org.hibernate.validator', artifactId: 'hibernate-validator' },
|
|
57
59
|
{ groupId: 'org.springframework.security', artifactId: 'spring-security-data' },
|
|
@@ -101,9 +103,7 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile, javaDe
|
|
|
101
103
|
],
|
|
102
104
|
},
|
|
103
105
|
r2dbc: {
|
|
104
|
-
|
|
105
|
-
// dependencies: [{ inProfile, groupId: 'org.mariadb', artifactId: 'r2dbc-mariadb', version: javaDependencies['r2dbc-mariadb'] }],
|
|
106
|
-
dependencies: [{ inProfile, groupId: 'io.asyncer', artifactId: 'r2dbc-mysql', version: javaDependencies['r2dbc-mysql'] }],
|
|
106
|
+
dependencies: [{ inProfile, groupId: 'org.mariadb', artifactId: 'r2dbc-mariadb' }],
|
|
107
107
|
},
|
|
108
108
|
},
|
|
109
109
|
mssql: {
|
|
@@ -125,7 +125,7 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile, javaDe
|
|
|
125
125
|
],
|
|
126
126
|
},
|
|
127
127
|
r2dbc: {
|
|
128
|
-
dependencies: [{ inProfile, groupId: 'io.asyncer', artifactId: 'r2dbc-mysql'
|
|
128
|
+
dependencies: [{ inProfile, groupId: 'io.asyncer', artifactId: 'r2dbc-mysql' }],
|
|
129
129
|
},
|
|
130
130
|
},
|
|
131
131
|
oracle: {
|
|
@@ -75,10 +75,6 @@ const databaseData = {
|
|
|
75
75
|
defaultUsername: 'root',
|
|
76
76
|
constraintNameMaxLength: 64,
|
|
77
77
|
tableNameMaxLength: 64,
|
|
78
|
-
r2dbc: {
|
|
79
|
-
// TODO switch to mariadb if r2dbc-mariadb is reinstated
|
|
80
|
-
protocolSuffix: 'mysql://',
|
|
81
|
-
},
|
|
82
78
|
},
|
|
83
79
|
[MYSQL]: {
|
|
84
80
|
name: 'MySQL',
|
|
@@ -69,7 +69,7 @@ public class SqlTestContainersSpringContextCustomizerFactory implements ContextC
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
<%_ if (reactive) { _%>
|
|
72
|
-
testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (
|
|
72
|
+
testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (prodDatabaseTypeMssql) { %>.replace(";encrypt=false", "")<% } %> + "<%- prodDatabaseExtraOptions %>");
|
|
73
73
|
testValues = testValues.and("spring.r2dbc.username=" + prodTestContainer.getTestContainer().getUsername());
|
|
74
74
|
testValues = testValues.and("spring.r2dbc.password=" + prodTestContainer.getTestContainer().getPassword());
|
|
75
75
|
testValues = testValues.and("spring.liquibase.url=" + prodTestContainer.getTestContainer().getJdbcUrl() + "<%- prodDatabaseExtraOptions %>");
|
|
@@ -22,7 +22,7 @@ import semver from 'semver';
|
|
|
22
22
|
import fs from 'fs';
|
|
23
23
|
import gitignore from 'parse-gitignore';
|
|
24
24
|
import path from 'path';
|
|
25
|
-
import
|
|
25
|
+
import latestVersion from 'latest-version';
|
|
26
26
|
import BaseGenerator from '../base/index.mjs';
|
|
27
27
|
import { upgradeFilesTask as upgradeLanguagesFilesTask } from '../languages/index.mjs';
|
|
28
28
|
import { SERVER_MAIN_RES_DIR } from '../generator-constants.mjs';
|
|
@@ -78,24 +78,12 @@ export default class UpgradeGenerator extends BaseGenerator {
|
|
|
78
78
|
description: 'Upgrade to specific blueprint versions instead of the latest, e.g. --target-blueprint-versions foo@0.0.1,bar@1.0.2',
|
|
79
79
|
type: String,
|
|
80
80
|
});
|
|
81
|
-
// This adds support for a `--skip-install` flag
|
|
82
|
-
this.option('skip-install', {
|
|
83
|
-
description: 'Skips installing dependencies during the upgrade process',
|
|
84
|
-
type: Boolean,
|
|
85
|
-
default: false,
|
|
86
|
-
});
|
|
87
81
|
// This adds support for a `--silent` flag
|
|
88
82
|
this.option('silent', {
|
|
89
83
|
description: 'Hides output of the generation process',
|
|
90
84
|
type: Boolean,
|
|
91
85
|
default: false,
|
|
92
86
|
});
|
|
93
|
-
// This adds support for a `--skip-checks` flag
|
|
94
|
-
this.option('skip-checks', {
|
|
95
|
-
description: 'Disable checks during project regeneration',
|
|
96
|
-
type: Boolean,
|
|
97
|
-
default: false,
|
|
98
|
-
});
|
|
99
87
|
if (this.options.help) {
|
|
100
88
|
return;
|
|
101
89
|
}
|
|
@@ -109,7 +97,7 @@ export default class UpgradeGenerator extends BaseGenerator {
|
|
|
109
97
|
}
|
|
110
98
|
}
|
|
111
99
|
get [BaseGenerator.INITIALIZING]() {
|
|
112
|
-
return {
|
|
100
|
+
return this.asInitializingTaskGroup({
|
|
113
101
|
displayLogo() {
|
|
114
102
|
this.log.log(chalk.green('Welcome to the JHipster Upgrade Sub-Generator'));
|
|
115
103
|
this.log.log(chalk.green('This will upgrade your current application codebase to the latest JHipster version'));
|
|
@@ -121,7 +109,7 @@ export default class UpgradeGenerator extends BaseGenerator {
|
|
|
121
109
|
this.currentJhipsterVersion = this.config.get('jhipsterVersion');
|
|
122
110
|
this.clientPackageManager = this.config.get('clientPackageManager');
|
|
123
111
|
},
|
|
124
|
-
};
|
|
112
|
+
});
|
|
125
113
|
}
|
|
126
114
|
_rmRf(file) {
|
|
127
115
|
const absolutePath = path.resolve(file);
|
|
@@ -178,13 +166,11 @@ export default class UpgradeGenerator extends BaseGenerator {
|
|
|
178
166
|
const skipChecksOption = this.skipChecks ? '--skip-checks' : '';
|
|
179
167
|
const regenerateCmd = `${generatorCommand} --with-entities --force --skip-install --skip-git --ignore-errors --no-insight ${skipChecksOption}`;
|
|
180
168
|
this.log.verboseInfo(regenerateCmd);
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
catch (err) {
|
|
186
|
-
throw new Error(`Something went wrong while generating project! ${err}`);
|
|
169
|
+
const result = this.spawnCommandSync(regenerateCmd);
|
|
170
|
+
if (result.exitCode !== 0) {
|
|
171
|
+
throw new Error(`Something went wrong while generating project! ${result.exitCode}`);
|
|
187
172
|
}
|
|
173
|
+
this.success(`Successfully regenerated application with JHipster ${jhipsterVersion}${blueprintInfo}`);
|
|
188
174
|
}
|
|
189
175
|
_gitCommitAll(commitMsg) {
|
|
190
176
|
const gitAdd = this.gitExec(['add', '-A'], { maxBuffer: 1024 * 10000, silent: this.silent });
|
|
@@ -204,17 +190,6 @@ export default class UpgradeGenerator extends BaseGenerator {
|
|
|
204
190
|
this._rmRf(keystore);
|
|
205
191
|
this._gitCommitAll(`Generated with JHipster ${jhipsterVersion}${blueprintInfo}`);
|
|
206
192
|
}
|
|
207
|
-
_retrieveLatestVersion(packageName) {
|
|
208
|
-
this.log.verboseInfo(`Looking for latest ${packageName} version...`);
|
|
209
|
-
const commandPrefix = 'npm show';
|
|
210
|
-
const pkgInfo = shelljs.exec(`${commandPrefix} ${packageName} version`, { silent: this.silent });
|
|
211
|
-
if (pkgInfo.stderr) {
|
|
212
|
-
this.log.warn(pkgInfo.stderr);
|
|
213
|
-
throw new Error(`Something went wrong fetching the latest ${packageName} version number...\n${pkgInfo.stderr}`);
|
|
214
|
-
}
|
|
215
|
-
const msg = pkgInfo.stdout;
|
|
216
|
-
return msg.replace('\n', '');
|
|
217
|
-
}
|
|
218
193
|
_installNpmPackageLocally(npmPackage, version) {
|
|
219
194
|
this.log.verboseInfo(`Installing ${npmPackage} ${version} locally`);
|
|
220
195
|
const commandPrefix = 'npm install';
|
|
@@ -261,32 +236,28 @@ export default class UpgradeGenerator extends BaseGenerator {
|
|
|
261
236
|
}
|
|
262
237
|
return true;
|
|
263
238
|
})
|
|
264
|
-
.map(blueprint => {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if (this.newBlueprintVersionFound === undefined) {
|
|
278
|
-
this.newBlueprintVersionFound = false;
|
|
279
|
-
}
|
|
280
|
-
this.log.warn(`${chalk.green('No update available.')} Application has already been generated with latest version for blueprint: ${blueprint.name}`);
|
|
239
|
+
.map(async (blueprint) => {
|
|
240
|
+
blueprint.latestBlueprintVersion = await latestVersion(blueprint.name);
|
|
241
|
+
if (semver.lt(blueprint.version, blueprint.latestBlueprintVersion)) {
|
|
242
|
+
this.newBlueprintVersionFound = true;
|
|
243
|
+
this.success(`New ${blueprint.name} version found: ${blueprint.latestBlueprintVersion}`);
|
|
244
|
+
}
|
|
245
|
+
else if (this.force) {
|
|
246
|
+
this.newBlueprintVersionFound = true;
|
|
247
|
+
this.log.log(chalk.yellow('Forced re-generation'));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
if (this.newBlueprintVersionFound === undefined) {
|
|
251
|
+
this.newBlueprintVersionFound = false;
|
|
281
252
|
}
|
|
282
|
-
this.
|
|
283
|
-
|
|
284
|
-
});
|
|
253
|
+
this.log.warn(`${chalk.green('No update available.')} Application has already been generated with latest version for blueprint: ${blueprint.name}`);
|
|
254
|
+
}
|
|
255
|
+
this.success(`Done checking for new version for blueprint ${blueprint.name}`);
|
|
285
256
|
})).then(() => {
|
|
286
257
|
this.success('Done checking for new version of blueprints');
|
|
287
258
|
});
|
|
288
259
|
},
|
|
289
|
-
checkLatestJhipsterVersion() {
|
|
260
|
+
async checkLatestJhipsterVersion() {
|
|
290
261
|
if (this.targetJhipsterVersion) {
|
|
291
262
|
if (this.targetJhipsterVersion === GLOBAL_VERSION) {
|
|
292
263
|
this.originalTargetJhipsterVersion = this.targetJhipsterVersion;
|
|
@@ -296,8 +267,7 @@ export default class UpgradeGenerator extends BaseGenerator {
|
|
|
296
267
|
return;
|
|
297
268
|
}
|
|
298
269
|
this.log.verboseInfo(`Looking for latest ${GENERATOR_JHIPSTER} version...`);
|
|
299
|
-
|
|
300
|
-
this.targetJhipsterVersion = latestVersion;
|
|
270
|
+
this.targetJhipsterVersion = await latestVersion(GENERATOR_JHIPSTER);
|
|
301
271
|
if (semver.lt(this.currentJhipsterVersion, this.targetJhipsterVersion)) {
|
|
302
272
|
this.success(`New ${GENERATOR_JHIPSTER} version found: ${this.targetJhipsterVersion}`);
|
|
303
273
|
}
|