Match one of multiple names in ContainerConnectionDetailsFactory

Closes gh-41543

Co-Authored-By: Eddú Meléndez <eddu.melendez@gmail.com>
This commit is contained in:
Andy Wilkinson
2024-07-17 10:43:50 +01:00
parent 8917c94a04
commit 2216b48e64
2 changed files with 54 additions and 4 deletions

View File

@@ -16,6 +16,8 @@
package org.springframework.boot.testcontainers.service.connection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
@@ -34,6 +36,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.core.annotation.MergedAnnotation;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.then;
@@ -83,6 +86,14 @@ class ContainerConnectionDetailsFactoryTests {
assertThat(connectionDetails).isNotNull();
}
@Test
void getConnectionDetailsWhenTypesMatchAndNameRestrictionsMatchReturnsDetails() {
TestContainerConnectionDetailsFactory factory = new TestContainerConnectionDetailsFactory(
List.of("notmyname", "myname"));
ConnectionDetails connectionDetails = getConnectionDetails(factory, this.source);
assertThat(connectionDetails).isNotNull();
}
@Test
void getConnectionDetailsWhenTypesMatchAndNameRestrictionDoesNotMatchReturnsNull() {
TestContainerConnectionDetailsFactory factory = new TestContainerConnectionDetailsFactory("notmyname");
@@ -90,6 +101,14 @@ class ContainerConnectionDetailsFactoryTests {
assertThat(connectionDetails).isNull();
}
@Test
void getConnectionDetailsWhenTypesMatchAndNameRestrictionsDoNotMatchReturnsNull() {
TestContainerConnectionDetailsFactory factory = new TestContainerConnectionDetailsFactory(
List.of("notmyname", "alsonotmyname"));
ConnectionDetails connectionDetails = getConnectionDetails(factory, this.source);
assertThat(connectionDetails).isNull();
}
@Test
void getConnectionDetailsWhenContainerTypeDoesNotMatchReturnsNull() {
ElasticsearchContainer container = mock(ElasticsearchContainer.class);
@@ -126,6 +145,18 @@ class ContainerConnectionDetailsFactoryTests {
then(context).should().publishEvent(any(BeforeTestcontainerUsedEvent.class));
}
@Test
void creatingFactoryWithEmptyNamesThrows() {
assertThatIllegalArgumentException()
.isThrownBy(() -> new TestContainerConnectionDetailsFactory(Collections.emptyList()));
}
@Test
void creatingFactoryWithNullNamesThrows() {
assertThatIllegalArgumentException()
.isThrownBy(() -> new TestContainerConnectionDetailsFactory((List<String>) null));
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private TestContainerConnectionDetails getConnectionDetails(ConnectionDetailsFactory<?, ?> factory,
ContainerConnectionSource<?> source) {
@@ -146,6 +177,10 @@ class ContainerConnectionDetailsFactoryTests {
super(connectionName);
}
TestContainerConnectionDetailsFactory(List<String> connectionNames) {
super(connectionNames);
}
@Override
protected JdbcConnectionDetails getContainerConnectionDetails(
ContainerConnectionSource<JdbcDatabaseContainer<?>> source) {