From 3803d1c6d63729d5641bb5ecb7096aaa9f05ebc1 Mon Sep 17 00:00:00 2001 From: "Jean Pierre Mandujano G." Date: Fri, 11 Sep 2026 03:02:03 -0500 Subject: [PATCH] test: validate Kibana managed networks without Docker --- .../elasticsearch/KibanaContainer.java | 7 +-- .../elasticsearch/KibanaContainerTest.java | 58 +++++++++++-------- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/KibanaContainer.java b/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/KibanaContainer.java index 116dad23e87..5c78539b096 100644 --- a/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/KibanaContainer.java +++ b/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/KibanaContainer.java @@ -330,7 +330,7 @@ private void configureExternalElasticsearch() { } private void configureManagedElasticsearch() { - ensureCorrectNetworkSetupForManagedMode(); + ensureCorrectNetworkSetupForManagedMode(elasticsearch.getNetwork(), getNetwork()); if (getNetwork() == null) { createAdHocNetwork(); @@ -379,10 +379,7 @@ private byte[] copyElasticsearchHttpCaCertificateOrThrow() { } } - private void ensureCorrectNetworkSetupForManagedMode() { - Network esNetwork = elasticsearch.getNetwork(); - Network kbNetwork = this.getNetwork(); - + static void ensureCorrectNetworkSetupForManagedMode(Network esNetwork, Network kbNetwork) { if ((esNetwork == null) != (kbNetwork == null)) { throw new IllegalStateException( "Managed mode requires either both containers share the same explicit network, " + diff --git a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/KibanaContainerTest.java b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/KibanaContainerTest.java index 1ed994b4820..6dd74f09a92 100644 --- a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/KibanaContainerTest.java +++ b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/KibanaContainerTest.java @@ -30,6 +30,7 @@ import java.nio.charset.StandardCharsets; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assumptions.assumeThat; @@ -132,40 +133,47 @@ void managedModeUsesCustomElasticsearchNetworkAlias() throws Exception { } } + @Test + void managedModeAcceptsNoExplicitNetwork() { + assertThatCode(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(null, null)) + .doesNotThrowAnyException(); + } + + @Test + void managedModeAcceptsSharedExplicitNetwork() { + try (Network network = Network.newNetwork()) { + assertThatCode(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(network, network)) + .doesNotThrowAnyException(); + } + } + @Test void managedModeRejectsWhenOnlyElasticsearchHasExplicitNetwork() { - Network network = Network.newNetwork(); - try ( - ElasticsearchContainer es = new ElasticsearchContainer(ELASTICSEARCH_IMAGE_LATEST).withNetwork(network); - KibanaContainer kibana = new KibanaContainer(es) - ) { - assertThatThrownBy(kibana::start) + try (Network network = Network.newNetwork()) { + assertThatThrownBy(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(network, null)) .as("managed mode requires Kibana to join the same explicit network as Elasticsearch") - .isInstanceOf(ContainerLaunchException.class) - .satisfies(ex -> { - assertThat(ex.getCause()) - .isInstanceOf(IllegalStateException.class) - .hasMessageContaining("explicit network"); - }); + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("explicit network"); + } + } + + @Test + void managedModeRejectsWhenOnlyKibanaHasExplicitNetwork() { + try (Network network = Network.newNetwork()) { + assertThatThrownBy(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(null, network)) + .as("managed mode requires Elasticsearch to join the same explicit network as Kibana") + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("explicit network"); } } @Test void managedModeRejectsWhenNetworksDiffer() { - try ( - Network esNetwork = Network.newNetwork(); - Network kibanaNetwork = Network.newNetwork(); - ElasticsearchContainer es = new ElasticsearchContainer(ELASTICSEARCH_IMAGE_LATEST).withNetwork(esNetwork); - KibanaContainer kibana = new KibanaContainer(es).withNetwork(kibanaNetwork) - ) { - assertThatThrownBy(kibana::start) + try (Network esNetwork = Network.newNetwork(); Network kibanaNetwork = Network.newNetwork()) { + assertThatThrownBy(() -> KibanaContainer.ensureCorrectNetworkSetupForManagedMode(esNetwork, kibanaNetwork)) .as("managed mode rejects Kibana and Elasticsearch on different networks") - .isInstanceOf(ContainerLaunchException.class) - .satisfies(ex -> { - assertThat(ex.getCause()) - .isInstanceOf(IllegalStateException.class) - .hasMessageContaining("different networks"); - }); + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("different networks"); } }