diff --git a/src/apps/geoserver/pom.xml b/src/apps/geoserver/pom.xml
index 4729ee95d..837bf79df 100644
--- a/src/apps/geoserver/pom.xml
+++ b/src/apps/geoserver/pom.xml
@@ -67,5 +67,20 @@
spring-boot-starter-test
test
+
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.xmlunit
+ xmlunit-matchers
+ test
+
+
+ org.xmlunit
+ xmlunit-assertj3
+ test
+
diff --git a/src/apps/geoserver/wcs/src/test/java/org/geoserver/cloud/wcs/WcsApplicationTest.java b/src/apps/geoserver/wcs/src/test/java/org/geoserver/cloud/wcs/WcsApplicationTest.java
index 7c13217e5..656a9568a 100644
--- a/src/apps/geoserver/wcs/src/test/java/org/geoserver/cloud/wcs/WcsApplicationTest.java
+++ b/src/apps/geoserver/wcs/src/test/java/org/geoserver/cloud/wcs/WcsApplicationTest.java
@@ -4,14 +4,123 @@
*/
package org.geoserver.cloud.wcs;
+import static org.assertj.core.api.Assertions.assertThat;
+
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.test.context.ActiveProfiles;
+import java.util.stream.Stream;
+
@SpringBootTest
@ActiveProfiles("test")
class WcsApplicationTest {
+ protected @Autowired ConfigurableApplicationContext context;
+
+ @Test
+ void testWcsCoreBeans() {
+ expectBean("legacyWcsLoader", org.geoserver.wcs.WCSLoader.class);
+ expectBean("wcsLoader", org.geoserver.wcs.WCSXStreamLoader.class);
+ expectBean("wcsFactoryExtension", org.geoserver.wcs.WCSFactoryExtension.class);
+ expectBean("wcsURLMapping", org.geoserver.ows.OWSHandlerMapping.class);
+ expectBean("wcsLocalWorkspaceURLManger", org.geoserver.ows.LocalWorkspaceURLMangler.class);
+ expectBean("cqlKvpParser", org.geoserver.ows.kvp.CQLFilterKvpParser.class);
+ expectBean(
+ "coverageResponseDelegateFactory",
+ org.geoserver.wcs.responses.CoverageResponseDelegateFinder.class);
+ expectBean(
+ "geotiffCoverageResponseDelegate",
+ org.geoserver.wcs.responses.GeoTIFFCoverageResponseDelegate.class);
+ expectBean(
+ "imgCoverageResponseDelegate",
+ org.geoserver.wcs.responses.IMGCoverageResponseDelegate.class);
+ expectBean(
+ "debugCoverageResponseDelegate",
+ org.geoserver.wcs.responses.DebugCoverageResponseDelegate.class);
+ expectBean("coverageCleaner", org.geoserver.wcs.CoverageCleanerCallback.class);
+ expectBean("wcsResourceVoter", org.geoserver.wcs.WCSResourceVoter.class);
+ expectBean("legacyWcsLoader", org.geoserver.wcs.WCSLoader.class);
+ expectBean("wcsLoader", org.geoserver.wcs.WCSXStreamLoader.class);
+ expectBean("wcsFactoryExtension", org.geoserver.wcs.WCSFactoryExtension.class);
+ expectBean("wcsURLMapping", org.geoserver.ows.OWSHandlerMapping.class);
+ expectBean("wcsLocalWorkspaceURLManger", org.geoserver.ows.LocalWorkspaceURLMangler.class);
+ expectBean("cqlKvpParser", org.geoserver.ows.kvp.CQLFilterKvpParser.class);
+ expectBean(
+ "coverageResponseDelegateFactory",
+ org.geoserver.wcs.responses.CoverageResponseDelegateFinder.class);
+ expectBean(
+ "geotiffCoverageResponseDelegate",
+ org.geoserver.wcs.responses.GeoTIFFCoverageResponseDelegate.class);
+ expectBean(
+ "imgCoverageResponseDelegate",
+ org.geoserver.wcs.responses.IMGCoverageResponseDelegate.class);
+ expectBean(
+ "debugCoverageResponseDelegate",
+ org.geoserver.wcs.responses.DebugCoverageResponseDelegate.class);
+ expectBean("coverageCleaner", org.geoserver.wcs.CoverageCleanerCallback.class);
+ expectBean("wcsResourceVoter", org.geoserver.wcs.WCSResourceVoter.class);
+ }
@Test
- void contextLoads() {}
+ void testBeansWcs_1_0() {
+ expectBeans(
+ "wcs100ServiceTarget",
+ "wcsLogger",
+ "wcs100Service",
+ "wcsService-1.0.0",
+ "wcs100ExceptionHandler",
+ "wcs100AxisSubsetKvpParser",
+ "wcs100BBoxKvpParser",
+ "wcs100InterpolationKvpParser",
+ "wcs100CoverageKvpParser",
+ "wcs100SourceCoverageKvpParser",
+ "wcs100SectionKvpParser",
+ "wcs100TimeKvpParser",
+ "wcs100ElevationKvpParser",
+ "wcs100GetCapabilitiesKvpReader",
+ "wcs100DescribeCoverageKvpReader",
+ "wcs100GetCoverageRequestReader",
+ "wcs-1.0.0-configuration",
+ "wcs100CapabilitiesRequestReader",
+ "wcs100DescribeCoverageRequestReader",
+ "wcs100GetCoverageRequestXMLReader",
+ "wcs100GetCapabilitiesResponse",
+ "wcs100DescribeCoverageResponse",
+ "wcs100GetCoverageResponse",
+ "workspaceQualifier",
+ "wcs100ServiceTarget",
+ "wcsLogger",
+ "wcs100Service",
+ "wcsService-1.0.0",
+ "wcs100ExceptionHandler",
+ "wcs100AxisSubsetKvpParser",
+ "wcs100BBoxKvpParser",
+ "wcs100InterpolationKvpParser",
+ "wcs100CoverageKvpParser",
+ "wcs100SourceCoverageKvpParser",
+ "wcs100SectionKvpParser",
+ "wcs100TimeKvpParser",
+ "wcs100ElevationKvpParser",
+ "wcs100GetCapabilitiesKvpReader",
+ "wcs100DescribeCoverageKvpReader",
+ "wcs100GetCoverageRequestReader",
+ "wcs-1.0.0-configuration",
+ "wcs100CapabilitiesRequestReader",
+ "wcs100DescribeCoverageRequestReader",
+ "wcs100GetCoverageRequestXMLReader",
+ "wcs100GetCapabilitiesResponse",
+ "wcs100DescribeCoverageResponse",
+ "wcs100GetCoverageResponse",
+ "workspaceQualifier");
+ }
+
+ protected void expectBeans(String... names) {
+ Stream.of(names).forEach(name -> assertThat(context.getBean(name)).isNotNull());
+ }
+
+ protected void expectBean(String name, Class> type) {
+ assertThat(context.getBean(name)).isInstanceOf(type);
+ }
}
diff --git a/src/apps/geoserver/wfs/src/main/resources/bootstrap.yml b/src/apps/geoserver/wfs/src/main/resources/bootstrap.yml
index 0058360d1..bcd10bd4f 100644
--- a/src/apps/geoserver/wfs/src/main/resources/bootstrap.yml
+++ b/src/apps/geoserver/wfs/src/main/resources/bootstrap.yml
@@ -30,6 +30,7 @@ spring:
name: wfs-service
autoconfigure:
exclude:
+ - org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration
- org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
- org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
diff --git a/src/apps/geoserver/wfs/src/test/java/org/geoserver/cloud/wfs/app/WfsApplicationTest.java b/src/apps/geoserver/wfs/src/test/java/org/geoserver/cloud/wfs/app/WfsApplicationTest.java
index 578e75766..5acba2725 100644
--- a/src/apps/geoserver/wfs/src/test/java/org/geoserver/cloud/wfs/app/WfsApplicationTest.java
+++ b/src/apps/geoserver/wfs/src/test/java/org/geoserver/cloud/wfs/app/WfsApplicationTest.java
@@ -5,15 +5,57 @@
package org.geoserver.cloud.wfs.app;
import org.junit.jupiter.api.Test;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.junit.jupiter.api.io.TempDir;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.xmlunit.assertj3.XmlAssert;
-@SpringBootTest
-@EnableAutoConfiguration
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Map;
+
+@SpringBootTest(classes = WfsApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
class WfsApplicationTest {
+ static @TempDir Path tmpdir;
+ static Path datadir;
+
+ @DynamicPropertySource
+ static void setUpDataDir(DynamicPropertyRegistry registry) throws IOException {
+ datadir = Files.createDirectory(tmpdir.resolve("datadir"));
+ registry.add("geoserver.backend.data-directory.location", datadir::toAbsolutePath);
+ }
+
+ private TestRestTemplate restTemplate = new TestRestTemplate("admin", "geoserver");
+
+ @Test
+ void owsGetCapabilitiesSmokeTest(@LocalServerPort int servicePort) {
+ String url =
+ "http://localhost:%d/ows?SERVICE=WFS&REQUEST=GETCAPABILITIES&VERSION=1.1.0"
+ .formatted(servicePort);
+ String caps = restTemplate.getForObject(url, String.class);
+ Map nscontext = Map.of("wfs", "http://www.opengis.net/wfs");
+ XmlAssert.assertThat(caps)
+ .withNamespaceContext(nscontext)
+ .hasXPath("/wfs:WFS_Capabilities");
+ }
+
@Test
- void contextLoads() {}
+ void wfsGetCapabilitiesSmokeTest(@LocalServerPort int servicePort) {
+ String url =
+ "http://localhost:%d/wfs?SERVICE=WFS&REQUEST=GETCAPABILITIES&VERSION=1.1.0"
+ .formatted(servicePort);
+ String caps = restTemplate.getForObject(url, String.class);
+ Map nscontext = Map.of("wfs", "http://www.opengis.net/wfs");
+ XmlAssert.assertThat(caps)
+ .withNamespaceContext(nscontext)
+ .hasXPath("/wfs:WFS_Capabilities");
+ }
}
diff --git a/src/apps/geoserver/wfs/src/test/resources/bootstrap-test.yml b/src/apps/geoserver/wfs/src/test/resources/bootstrap-test.yml
index 2e0d739a3..98d7bd758 100644
--- a/src/apps/geoserver/wfs/src/test/resources/bootstrap-test.yml
+++ b/src/apps/geoserver/wfs/src/test/resources/bootstrap-test.yml
@@ -3,6 +3,7 @@ spring:
banner-mode: off
allow-bean-definition-overriding: true
allow-circular-references: true # false by default since spring-boot 2.6.0, breaks geoserver initialization
+ cloud.bus.enabled: false
cloud.config.enabled: false
cloud.config.discovery.enabled: false
cloud.discovery.enabled: false
diff --git a/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/KMLAutoConfigurationTest.java b/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/KMLAutoConfigurationTest.java
deleted file mode 100644
index 6f0f9ff50..000000000
--- a/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/KMLAutoConfigurationTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * (c) 2022 Open Source Geospatial Foundation - all rights reserved This code is licensed under the
- * GPL 2.0 license, available at the root application directory.
- */
-package org.geoserver.cloud.wms.app;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.geoserver.cloud.wms.controller.kml.KMLIconsController;
-import org.geoserver.cloud.wms.controller.kml.KMLReflectorController;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.test.context.ActiveProfiles;
-
-/**
- * @since 1.0
- */
-@SpringBootTest
-@ActiveProfiles({"test", "testdatadir"})
-class KMLAutoConfigurationTest {
-
- private @Autowired ConfigurableApplicationContext context;
-
- /**
- * @throws java.lang.Exception
- */
- @BeforeEach
- void setUp() throws Exception {}
-
- @Test
- void testControllers() {
- expecteBean("kmlIconsController", KMLIconsController.class);
- expecteBean("kmlReflectorController", KMLReflectorController.class);
- }
-
- private void expecteBean(String name, Class> type) {
- assertThat(context.getBean(name)).isInstanceOf(type);
- }
-}
diff --git a/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationDataDirectoryTest.java b/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationDataDirectoryTest.java
index 9ed44098b..6a61d32ac 100644
--- a/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationDataDirectoryTest.java
+++ b/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationDataDirectoryTest.java
@@ -4,25 +4,55 @@
*/
package org.geoserver.cloud.wms.app;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
+import org.xmlunit.assertj3.XmlAssert;
-import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Map;
-/** See {@code src/test/resources/bootstrap-testdatadir.yml} */
-@SpringBootTest(properties = "gwc.wms-integration=true")
-@ActiveProfiles({"test", "testdatadir"})
+@SpringBootTest(
+ classes = WmsApplication.class,
+ webEnvironment = WebEnvironment.RANDOM_PORT,
+ properties = {"geoserver.backend.data-directory.enabled=true", "gwc.wms-integration=true"})
+@ActiveProfiles({"test"})
class WmsApplicationDataDirectoryTest extends WmsApplicationTest {
- private static @TempDir File tmpDataDir;
+ static @TempDir Path tmpdir;
+ static Path datadir;
@DynamicPropertySource
- static void registerPgProperties(DynamicPropertyRegistry registry) {
- String datadir = tmpDataDir.getAbsolutePath();
- registry.add("data_directory", () -> datadir);
- registry.add("gwc.wms-integration", () -> "true");
+ static void setUpDataDir(DynamicPropertyRegistry registry) throws IOException {
+ datadir = Files.createDirectory(tmpdir.resolve("datadir"));
+ registry.add("geoserver.backend.data-directory.location", datadir::toAbsolutePath);
+ }
+
+ private String baseURL;
+
+ private TestRestTemplate restTemplate = new TestRestTemplate("admin", "geoserver");
+
+ @BeforeEach
+ void setUp(@LocalServerPort int servicePort) {
+ baseURL = "http://localhost:%d/ows".formatted(servicePort);
+ }
+
+ @Test
+ void getCapabilitiesSmokeTest() {
+ String url = baseURL + "?SERVICE=WMS&REQUEST=GETCAPABILITIES&VERSION=1.3.0";
+ String caps = restTemplate.getForObject(url, String.class);
+ Map nscontext = Map.of("wms", "http://www.opengis.net/wms");
+ XmlAssert.assertThat(caps)
+ .withNamespaceContext(nscontext)
+ .hasXPath("/wms:WMS_Capabilities");
}
}
diff --git a/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationTest.java b/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationTest.java
index 81cb02b8b..b707f63e6 100644
--- a/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationTest.java
+++ b/src/apps/geoserver/wms/src/test/java/org/geoserver/cloud/wms/app/WmsApplicationTest.java
@@ -10,6 +10,8 @@
import org.geoserver.cloud.virtualservice.VirtualServiceVerifier;
import org.geoserver.cloud.wms.controller.GetMapReflectorController;
import org.geoserver.cloud.wms.controller.WMSController;
+import org.geoserver.cloud.wms.controller.kml.KMLIconsController;
+import org.geoserver.cloud.wms.controller.kml.KMLReflectorController;
import org.geoserver.gwc.wms.CachingExtendedCapabilitiesProvider;
import org.geoserver.ows.FlatKvpParser;
import org.geoserver.ows.kvp.CQLFilterKvpParser;
@@ -28,53 +30,58 @@ abstract class WmsApplicationTest {
@Test
void testExpectedBeansFromWmsApplicationAutoConfiguration() {
- expecteBean("wfsConfiguration", WFSConfiguration.class);
- expecteBean("webMapServiceController", WMSController.class);
- expecteBean("virtualServiceVerifier", VirtualServiceVerifier.class);
- expecteBean("getMapReflectorController", GetMapReflectorController.class);
- expecteBean(
+ expectBean("wfsConfiguration", WFSConfiguration.class);
+ expectBean("webMapServiceController", WMSController.class);
+ expectBean("virtualServiceVerifier", VirtualServiceVerifier.class);
+ expectBean("getMapReflectorController", GetMapReflectorController.class);
+ expectBean(
"wms_1_1_1_GetCapabilitiesResponse",
org.geoserver.wms.capabilities.GetCapabilitiesResponse.class);
}
@Test
void testExpectedBeansFromGsWfsJarFile() {
- expecteBean("bboxKvpParser", BBoxKvpParser.class);
- expecteBean("featureIdKvpParser", FlatKvpParser.class);
- expecteBean("cqlKvpParser", CQLFilterKvpParser.class);
- expecteBean("maxFeatureKvpParser", NumericKvpParser.class);
- expecteBean("sortByKvpParser", SortByKvpParser.class);
- expecteBean("wfsSqlViewKvpParser", ViewParamsKvpParser.class);
+ expectBean("bboxKvpParser", BBoxKvpParser.class);
+ expectBean("featureIdKvpParser", FlatKvpParser.class);
+ expectBean("cqlKvpParser", CQLFilterKvpParser.class);
+ expectBean("maxFeatureKvpParser", NumericKvpParser.class);
+ expectBean("sortByKvpParser", SortByKvpParser.class);
+ expectBean("wfsSqlViewKvpParser", ViewParamsKvpParser.class);
- expecteBean("wfsXsd-1.0", org.geoserver.wfs.xml.v1_0_0.WFS.class);
- expecteBean("wfsXmlConfiguration-1.0", org.geoserver.wfs.xml.v1_0_0.WFSConfiguration.class);
+ expectBean("wfsXsd-1.0", org.geoserver.wfs.xml.v1_0_0.WFS.class);
+ expectBean("wfsXmlConfiguration-1.0", org.geoserver.wfs.xml.v1_0_0.WFSConfiguration.class);
- expecteBean("wfsXsd-1.1", org.geoserver.wfs.xml.v1_1_0.WFS.class);
- expecteBean("wfsXmlConfiguration-1.1", org.geoserver.wfs.xml.v1_1_0.WFSConfiguration.class);
+ expectBean("wfsXsd-1.1", org.geoserver.wfs.xml.v1_1_0.WFS.class);
+ expectBean("wfsXmlConfiguration-1.1", org.geoserver.wfs.xml.v1_1_0.WFSConfiguration.class);
- expecteBean("wfsXsd-1.0", org.geoserver.wfs.xml.v1_0_0.WFS.class);
- expecteBean("wfsXmlConfiguration-1.0", org.geoserver.wfs.xml.v1_0_0.WFSConfiguration.class);
+ expectBean("wfsXsd-1.0", org.geoserver.wfs.xml.v1_0_0.WFS.class);
+ expectBean("wfsXmlConfiguration-1.0", org.geoserver.wfs.xml.v1_0_0.WFSConfiguration.class);
- expecteBean("filter1_0_0_KvpParser", org.geoserver.wfs.kvp.Filter_1_0_0_KvpParser.class);
- expecteBean("filter1_1_0_KvpParser", org.geoserver.wfs.kvp.Filter_1_1_0_KvpParser.class);
- expecteBean("filter2_0_0_KvpParser", org.geoserver.wfs.kvp.Filter_2_0_0_KvpParser.class);
+ expectBean("filter1_0_0_KvpParser", org.geoserver.wfs.kvp.Filter_1_0_0_KvpParser.class);
+ expectBean("filter1_1_0_KvpParser", org.geoserver.wfs.kvp.Filter_1_1_0_KvpParser.class);
+ expectBean("filter2_0_0_KvpParser", org.geoserver.wfs.kvp.Filter_2_0_0_KvpParser.class);
- expecteBean("gml2SchemaBuilder", org.geoserver.wfs.xml.FeatureTypeSchemaBuilder.GML2.class);
- expecteBean("gml3SchemaBuilder", org.geoserver.wfs.xml.FeatureTypeSchemaBuilder.GML3.class);
+ expectBean("gml2SchemaBuilder", org.geoserver.wfs.xml.FeatureTypeSchemaBuilder.GML2.class);
+ expectBean("gml3SchemaBuilder", org.geoserver.wfs.xml.FeatureTypeSchemaBuilder.GML3.class);
- expecteBean("gml2OutputFormat", org.geoserver.wfs.xml.GML2OutputFormat.class);
- expecteBean("gml3OutputFormat", org.geoserver.wfs.xml.GML3OutputFormat.class);
- expecteBean("gml32OutputFormat", org.geoserver.wfs.xml.GML32OutputFormat.class);
+ expectBean("gml2OutputFormat", org.geoserver.wfs.xml.GML2OutputFormat.class);
+ expectBean("gml3OutputFormat", org.geoserver.wfs.xml.GML3OutputFormat.class);
+ expectBean("gml32OutputFormat", org.geoserver.wfs.xml.GML32OutputFormat.class);
}
@Test
void testGwcWmsIntegration() {
- expecteBean(
- "gwcWMSExtendedCapabilitiesProvider", CachingExtendedCapabilitiesProvider.class);
- expecteBean("gwcGetMapAdvise", ForwardGetMapToGwcAspect.class);
+ expectBean("gwcWMSExtendedCapabilitiesProvider", CachingExtendedCapabilitiesProvider.class);
+ expectBean("gwcGetMapAdvise", ForwardGetMapToGwcAspect.class);
}
- protected void expecteBean(String name, Class> type) {
+ @Test
+ void testKmlIntegration() {
+ expectBean("kmlIconsController", KMLIconsController.class);
+ expectBean("kmlReflectorController", KMLReflectorController.class);
+ }
+
+ protected void expectBean(String name, Class> type) {
assertThat(context.getBean(name)).isInstanceOf(type);
}
}
diff --git a/src/apps/geoserver/wms/src/test/resources/bootstrap-testdatadir.yml b/src/apps/geoserver/wms/src/test/resources/bootstrap-testdatadir.yml
deleted file mode 100644
index 7c9d79162..000000000
--- a/src/apps/geoserver/wms/src/test/resources/bootstrap-testdatadir.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-geoserver:
- backend:
- data-directory:
- enabled: true
- location: ${data_directory:${java.io.tmpdir}/geoserver_cloud_data_directory}
diff --git a/src/apps/geoserver/wps/src/test/java/org/geoserver/cloud/wps/WpsApplicationTest.java b/src/apps/geoserver/wps/src/test/java/org/geoserver/cloud/wps/WpsApplicationTest.java
index c3ebc1d86..0922584ef 100644
--- a/src/apps/geoserver/wps/src/test/java/org/geoserver/cloud/wps/WpsApplicationTest.java
+++ b/src/apps/geoserver/wps/src/test/java/org/geoserver/cloud/wps/WpsApplicationTest.java
@@ -5,15 +5,53 @@
package org.geoserver.cloud.wps;
import org.junit.jupiter.api.Test;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.junit.jupiter.api.io.TempDir;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.xmlunit.assertj3.XmlAssert;
-@SpringBootTest
-@EnableAutoConfiguration
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Map;
+
+@SpringBootTest(classes = WpsApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
class WpsApplicationTest {
+ static @TempDir Path tmpdir;
+ static Path datadir;
+
+ @DynamicPropertySource
+ static void setUpDataDir(DynamicPropertyRegistry registry) throws IOException {
+ datadir = Files.createDirectory(tmpdir.resolve("datadir"));
+ registry.add("geoserver.backend.data-directory.location", datadir::toAbsolutePath);
+ }
+
+ private TestRestTemplate restTemplate = new TestRestTemplate("admin", "geoserver");
+
+ @Test
+ void owsGetCapabilitiesSmokeTest(@LocalServerPort int servicePort) {
+ String url =
+ "http://localhost:%d/ows?SERVICE=WPS&REQUEST=GETCAPABILITIES&VERSION=1.0.0"
+ .formatted(servicePort);
+ String caps = restTemplate.getForObject(url, String.class);
+ Map nscontext = Map.of("wps", "http://www.opengis.net/wps/1.0.0");
+ XmlAssert.assertThat(caps).withNamespaceContext(nscontext).hasXPath("/wps:Capabilities");
+ }
+
@Test
- void contextLoads() {}
+ void wpsGetCapabilitiesSmokeTest(@LocalServerPort int servicePort) {
+ String url =
+ "http://localhost:%d/wps?SERVICE=WPS&REQUEST=GETCAPABILITIES&VERSION=1.0.0"
+ .formatted(servicePort);
+ String caps = restTemplate.getForObject(url, String.class);
+ Map nscontext = Map.of("wps", "http://www.opengis.net/wps/1.0.0");
+ XmlAssert.assertThat(caps).withNamespaceContext(nscontext).hasXPath("/wps:Capabilities");
+ }
}
diff --git a/src/apps/geoserver/wps/src/test/resources/bootstrap-test.yml b/src/apps/geoserver/wps/src/test/resources/bootstrap-test.yml
index 59181b330..bb021d0ec 100644
--- a/src/apps/geoserver/wps/src/test/resources/bootstrap-test.yml
+++ b/src/apps/geoserver/wps/src/test/resources/bootstrap-test.yml
@@ -3,6 +3,7 @@ spring:
banner-mode: off
allow-bean-definition-overriding: true
allow-circular-references: true # false by default since spring-boot 2.6.0, breaks geoserver initialization
+ cloud.bus.enabled: false
cloud.config.enabled: false
cloud.config.discovery.enabled: false
cloud.discovery.enabled: false
diff --git a/src/apps/infrastructure/discovery/src/test/java/org/geoserver/cloud/discovery/DiscoveryApplicationTests.java b/src/apps/infrastructure/discovery/src/test/java/org/geoserver/cloud/discovery/DiscoveryApplicationTests.java
index 1b76e4b6a..d0d447a18 100644
--- a/src/apps/infrastructure/discovery/src/test/java/org/geoserver/cloud/discovery/DiscoveryApplicationTests.java
+++ b/src/apps/infrastructure/discovery/src/test/java/org/geoserver/cloud/discovery/DiscoveryApplicationTests.java
@@ -4,12 +4,33 @@
*/
package org.geoserver.cloud.discovery;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.json.JSONException;
import org.junit.jupiter.api.Test;
+import org.skyscreamer.jsonassert.JSONAssert;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.test.web.server.LocalServerPort;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
-@SpringBootTest
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
class DiscoveryApplicationTests {
+ private TestRestTemplate restTemplate = new TestRestTemplate();
+
@Test
- void contextLoads() {}
+ void getApps(@LocalServerPort int servicePort) throws JSONException {
+ String url = "http://localhost:%d/eureka/apps".formatted(servicePort);
+ ResponseEntity response = restTemplate.getForEntity(url, String.class);
+ assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
+ JSONAssert.assertEquals(
+ """
+ {"applications":{"versions__delta":"1","apps__hashcode":"","application":[]}}
+ """,
+ response.getBody(),
+ false);
+ }
}
diff --git a/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryBackendConfiguration.java b/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryBackendConfiguration.java
index aafabf92e..1203f89e9 100644
--- a/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryBackendConfiguration.java
+++ b/src/catalog/backends/datadir/src/main/java/org/geoserver/cloud/config/catalog/backend/datadirectory/DataDirectoryBackendConfiguration.java
@@ -51,8 +51,9 @@ public DataDirectoryBackendConfiguration(
this.dataDirectoryConfig = dataDirectoryConfig;
this.catalogProperties = catalogProperties;
log.info(
- "Loading geoserver config backend with {}",
- DataDirectoryBackendConfiguration.class.getSimpleName());
+ "Loading geoserver config backend with {} from {}",
+ DataDirectoryBackendConfiguration.class.getSimpleName(),
+ dataDirectoryConfig.getLocation());
}
@Bean
diff --git a/src/catalog/backends/jdbcconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/jdbcconfig/JdbcConfigUpdateSequenceTest.java b/src/catalog/backends/jdbcconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/jdbcconfig/JdbcConfigUpdateSequenceTest.java
index 895dba378..3bb15c1e9 100644
--- a/src/catalog/backends/jdbcconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/jdbcconfig/JdbcConfigUpdateSequenceTest.java
+++ b/src/catalog/backends/jdbcconfig/src/test/java/org/geoserver/cloud/autoconfigure/catalog/backend/jdbcconfig/JdbcConfigUpdateSequenceTest.java
@@ -4,6 +4,8 @@
*/
package org.geoserver.cloud.autoconfigure.catalog.backend.jdbcconfig;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
import org.geoserver.cloud.config.catalog.backend.jdbcconfig.JdbcConfigUpdateSequence;
import org.geoserver.config.GeoServer;
import org.geoserver.platform.config.UpdateSequence;
@@ -35,5 +37,6 @@ public GeoServer getGeoSever() {
@Override
public @Test void testUpdateSequence() {
// no-op
+ assertFalse(false);
}
}
diff --git a/src/catalog/cache/src/test/java/org/geoserver/cloud/catalog/cache/GeoServerBackendCacheConfigurationTest.java b/src/catalog/cache/src/test/java/org/geoserver/cloud/catalog/cache/GeoServerBackendCacheConfigurationTest.java
index c8f35d52b..207496023 100644
--- a/src/catalog/cache/src/test/java/org/geoserver/cloud/catalog/cache/GeoServerBackendCacheConfigurationTest.java
+++ b/src/catalog/cache/src/test/java/org/geoserver/cloud/catalog/cache/GeoServerBackendCacheConfigurationTest.java
@@ -4,6 +4,7 @@
*/
package org.geoserver.cloud.catalog.cache;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import org.geoserver.catalog.plugin.CatalogPlugin;
@@ -39,14 +40,21 @@ class GeoServerBackendCacheConfigurationTest {
@Test
void testCachingCatalogFacade() {
contextRunner.run(
- context -> context.isTypeMatch("cachingCatalogFacade", CachingCatalogFacade.class));
+ context ->
+ assertThat(
+ context.isTypeMatch(
+ "cachingCatalogFacade", CachingCatalogFacade.class))
+ .isTrue());
}
@Test
void testCachingGeoServerFacade() {
contextRunner.run(
context ->
- context.isTypeMatch(
- "cachingGeoServerFacade", CachingGeoServerFacade.class));
+ assertThat(
+ context.isTypeMatch(
+ "cachingGeoServerFacade",
+ CachingGeoServerFacade.class))
+ .isTrue());
}
}