diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 117a3b86..0af1e58b 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -27,6 +27,7 @@ services: SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/wcc SPRING_DATASOURCE_USERNAME: postgres SPRING_DATASOURCE_PASSWORD: MFpFnhhICniFNPA + SPRING_APP_BASE_URL: http://localhost:8080 networks: - app-network diff --git a/src/main/java/com/wcc/platform/configuration/OpenApiConfig.java b/src/main/java/com/wcc/platform/configuration/OpenApiConfig.java index 8d798396..30295dfd 100644 --- a/src/main/java/com/wcc/platform/configuration/OpenApiConfig.java +++ b/src/main/java/com/wcc/platform/configuration/OpenApiConfig.java @@ -1,6 +1,5 @@ package com.wcc.platform.configuration; -import com.wcc.platform.domain.platform.config.PlatformServers; import io.swagger.v3.oas.annotations.enums.SecuritySchemeType; import io.swagger.v3.oas.annotations.security.SecurityScheme; import io.swagger.v3.oas.models.OpenAPI; @@ -11,6 +10,7 @@ import java.util.stream.IntStream; import org.springdoc.core.customizers.OpenApiCustomizer; import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -27,6 +27,9 @@ public class OpenApiConfig implements WebMvcConfigurer { private static final String ACTUATOR = "actuator"; private static final String ACTUATOR_SPRING = "Spring Boot Actuator"; + @Value("${backend.app.url}") + private String appBaseUrl; + private static Consumer renameActuator() { return tag -> { if (ACTUATOR.equalsIgnoreCase(tag.getName())) { @@ -58,9 +61,7 @@ public GroupedOpenApi publicApi() { /** Customize servers for open API. */ @Bean public OpenAPI customOpenApi() { - return new OpenAPI() - .addServersItem(new Server().url(PlatformServers.DEV.getUri()).description("Dev")) - .addServersItem(new Server().url(PlatformServers.LOCAL.getUri()).description("Localhost")); + return new OpenAPI().addServersItem(new Server().url(appBaseUrl)); } /** Customize Actuator endpoint tag. */ diff --git a/src/main/java/com/wcc/platform/configuration/WebConfig.java b/src/main/java/com/wcc/platform/configuration/WebConfig.java index 03cc70a8..76d8a734 100644 --- a/src/main/java/com/wcc/platform/configuration/WebConfig.java +++ b/src/main/java/com/wcc/platform/configuration/WebConfig.java @@ -2,7 +2,7 @@ import com.wcc.platform.configuration.converter.StringToEnumConverter; import com.wcc.platform.configuration.converter.StringToEnumConverterFactory; -import com.wcc.platform.domain.platform.config.PlatformServers; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.web.servlet.config.annotation.CorsRegistry; @@ -12,11 +12,14 @@ @Configuration public class WebConfig implements WebMvcConfigurer { + @Value("${backend.app.url}") + private String appBaseUrl; + @Override public void addCorsMappings(final CorsRegistry registry) { registry .addMapping("/**") - .allowedOrigins(PlatformServers.LOCAL.getUri(), PlatformServers.DEV.getUri()) + .allowedOrigins(appBaseUrl) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("*"); } diff --git a/src/main/java/com/wcc/platform/domain/platform/config/PlatformServers.java b/src/main/java/com/wcc/platform/domain/platform/config/PlatformServers.java deleted file mode 100644 index 40a3306c..00000000 --- a/src/main/java/com/wcc/platform/domain/platform/config/PlatformServers.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.wcc.platform.domain.platform.config; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** List of available servers. */ -@Getter -@AllArgsConstructor -public enum PlatformServers { - LOCAL("http://localhost:8080"), - DEV("https://wcc-backend.fly.dev"); - - private final String uri; -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1e9f0078..2430a38b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -32,6 +32,10 @@ spring: timeout: 5000 writetimeout: 5000 +backend: + app: + url: ${SPRING_APP_BASE_URL:http://localhost:8080} + mentorship: daysCycleOpen: 10 validation: diff --git a/src/test/java/com/wcc/platform/configuration/OpenApiConfigTest.java b/src/test/java/com/wcc/platform/configuration/OpenApiConfigTest.java new file mode 100644 index 00000000..3e604c14 --- /dev/null +++ b/src/test/java/com/wcc/platform/configuration/OpenApiConfigTest.java @@ -0,0 +1,33 @@ +package com.wcc.platform.configuration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import io.swagger.v3.oas.models.OpenAPI; +import java.lang.reflect.Field; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class OpenApiConfigTest { + + private OpenApiConfig config; + + @BeforeEach + void setUp() throws Exception { + config = new OpenApiConfig(); + // set the private appBaseUrl field used by customOpenApi() + Field f = OpenApiConfig.class.getDeclaredField("appBaseUrl"); + f.setAccessible(true); + f.set(config, "https://example.com/base"); + } + + @Test + void customOpenApi_setsServerUrlFromAppBaseUrl() { + OpenAPI openAPI = config.customOpenApi(); + assertNotNull(openAPI); + + // verify there's a server with the configured URL + assertNotNull(openAPI.getServers()); + assertEquals("https://example.com/base", openAPI.getServers().get(0).getUrl()); + } +}