Skip to content

Commit

Permalink
test(autoconfigure): Improve setup with Spring Boot utilities
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Vitale <[email protected]>
  • Loading branch information
ThomasVitale committed Jan 27, 2024
1 parent 78c2073 commit 35a24de
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 44 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.arconia.autoconfigure.core.multitenancy;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;

Expand All @@ -10,11 +9,9 @@
import io.arconia.core.multitenancy.context.events.MdcTenantContextEventListener;
import io.arconia.core.multitenancy.context.events.ObservationTenantContextEventListener;
import io.arconia.core.multitenancy.context.resolvers.FixedTenantResolver;
import io.arconia.core.multitenancy.events.DefaultTenantEventPublisher;
import io.arconia.core.multitenancy.events.TenantEventPublisher;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

/**
* Unit tests for {@link MultitenancyCoreAutoConfiguration}.
Expand All @@ -29,72 +26,63 @@ class MultitenancyCoreAutoConfigurationTests {
@Test
void tenantKeyGenerator() {
contextRunner.run(context -> {
var bean = context.getBean(TenantKeyGenerator.class);
assertThat(bean).isInstanceOf(TenantKeyGenerator.class);
assertThat(context).hasSingleBean(TenantKeyGenerator.class);
});
}

@Test
void holderTenantContextEventListener() {
contextRunner.run(context -> {
var bean = context.getBean(HolderTenantContextEventListener.class);
assertThat(bean).isInstanceOf(HolderTenantContextEventListener.class);
assertThat(context).hasSingleBean(HolderTenantContextEventListener.class);
});
}

@Test
void observationTenantContextEventListenerWhenDefault() {
contextRunner.run(context -> {
var bean = context.getBean(ObservationTenantContextEventListener.class);
assertThat(bean).isInstanceOf(ObservationTenantContextEventListener.class);
assertThat(context).hasSingleBean(ObservationTenantContextEventListener.class);
});
}

@Test
void observationTenantContextEventListenerWhenDisabled() {
contextRunner.withPropertyValues("arconia.multitenancy.management.observations.enabled=false").run(context -> {
assertThatThrownBy(() -> context.getBean(ObservationTenantContextEventListener.class))
.isInstanceOf(NoSuchBeanDefinitionException.class);
assertThat(context).doesNotHaveBean(ObservationTenantContextEventListener.class);
});
}

@Test
void mdcTenantContextEventListenerWhenDefault() {
contextRunner.run(context -> {
var bean = context.getBean(MdcTenantContextEventListener.class);
assertThat(bean).isInstanceOf(MdcTenantContextEventListener.class);
assertThat(context).hasSingleBean(MdcTenantContextEventListener.class);
});
}

@Test
void mdcTenantContextEventListenerWhenDisabled() {
contextRunner.withPropertyValues("arconia.multitenancy.management.mdc.enabled=false").run(context -> {
assertThatThrownBy(() -> context.getBean(MdcTenantContextEventListener.class))
.isInstanceOf(NoSuchBeanDefinitionException.class);
assertThat(context).doesNotHaveBean(MdcTenantContextEventListener.class);
});
}

@Test
void fixedTenantResolverWhenDefault() {
contextRunner.run(context -> {
assertThatThrownBy(() -> context.getBean(FixedTenantResolver.class))
.isInstanceOf(NoSuchBeanDefinitionException.class);
assertThat(context).doesNotHaveBean(FixedTenantResolver.class);
});
}

@Test
void fixedTenantResolverWhenEnabled() {
contextRunner.withPropertyValues("arconia.multitenancy.resolution.fixed.enabled=true").run(context -> {
var bean = context.getBean(FixedTenantResolver.class);
assertThat(bean).isInstanceOf(FixedTenantResolver.class);
assertThat(context).hasSingleBean(FixedTenantResolver.class);
});
}

@Test
void tenantEventPublisher() {
contextRunner.run(context -> {
var bean = context.getBean(TenantEventPublisher.class);
assertThat(bean).isInstanceOf(DefaultTenantEventPublisher.class);
assertThat(context).hasSingleBean(TenantEventPublisher.class);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import io.arconia.web.multitenancy.context.resolvers.HttpRequestTenantResolver;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

/**
* Unit tests for {@link MultitenancyWebAutoConfiguration}.
Expand All @@ -33,38 +32,33 @@ void whenNoServletContextThenBackOff() {
AutoConfigurations.of(MultitenancyCoreAutoConfiguration.class, MultitenancyWebAutoConfiguration.class));

nonServletContextRunner
.run(context -> assertThatThrownBy(() -> context.getBean(HttpTenantResolutionConfiguration.class))
.isInstanceOf(NoSuchBeanDefinitionException.class));
.run(context -> assertThat(context).doesNotHaveBean(HttpTenantResolutionConfiguration.class));
}

@Test
void httpTenantResolutionDefault() {
contextRunner.run(context -> {
var bean = context.getBean(HttpTenantResolutionConfiguration.class);
assertThat(bean).isInstanceOf(HttpTenantResolutionConfiguration.class);
assertThat(context).hasSingleBean(HttpTenantResolutionConfiguration.class);
});
}

@Test
void httpTenantResolutionDisabled() {
contextRunner.withPropertyValues("arconia.multitenancy.resolution.http.enabled=false")
.run(context -> assertThatThrownBy(() -> context.getBean(HttpTenantResolutionConfiguration.class))
.isInstanceOf(NoSuchBeanDefinitionException.class));
.run(context -> assertThat(context).doesNotHaveBean(HttpTenantResolutionConfiguration.class));
}

@Test
void httpRequestTenantResolverDefault() {
contextRunner.run(context -> {
var bean = context.getBean(HttpRequestTenantResolver.class);
assertThat(bean).isInstanceOf(HeaderTenantResolver.class);
assertThat(context).hasSingleBean(HeaderTenantResolver.class);
});
}

@Test
void httpRequestTenantResolverCookie() {
contextRunner.withPropertyValues("arconia.multitenancy.resolution.http.resolution-mode=cookie").run(context -> {
var bean = context.getBean(HttpRequestTenantResolver.class);
assertThat(bean).isInstanceOf(CookieTenantResolver.class);
assertThat(context).hasSingleBean(CookieTenantResolver.class);
});
}

Expand All @@ -74,17 +68,17 @@ void httpRequestTenantResolverFixed() {
.withPropertyValues("arconia.multitenancy.resolution.fixed.enabled=true",
"arconia.multitenancy.resolution.fixed.tenant-id=myTenant")
.run(context -> {
var bean = context.getBean(HttpRequestTenantResolver.class);
assertThat(bean).isInstanceOf(HttpRequestTenantResolver.class);
assertThat(bean.resolveTenantId(new MockHttpServletRequest())).isEqualTo("myTenant");
assertThat(context).hasSingleBean(HttpRequestTenantResolver.class);
var httpRequestTenantResolver = context.getBean(HttpRequestTenantResolver.class);
assertThat(httpRequestTenantResolver.resolveTenantId(new MockHttpServletRequest()))
.isEqualTo("myTenant");
});
}

@Test
void tenantContextFilterDefault() {
contextRunner.run(context -> {
var bean = context.getBean(TenantContextFilter.class);
assertThat(bean).isInstanceOf(TenantContextFilter.class);
assertThat(context).hasSingleBean(TenantContextFilter.class);
});
}

Expand All @@ -93,26 +87,24 @@ void tenantContextIgnorePathMatcher() {
contextRunner
.withPropertyValues("arconia.multitenancy.resolution.http.filter.ignore-paths=/actuator/**,/status")
.run(context -> {
var bean = context.getBean(TenantContextIgnorePathMatcher.class);
assertThat(bean).isInstanceOf(TenantContextIgnorePathMatcher.class);
assertThat(context).hasSingleBean(TenantContextIgnorePathMatcher.class);
var tenatContextIgnorePathMatcher = context.getBean(TenantContextIgnorePathMatcher.class);
var mockRequest = new MockHttpServletRequest();
mockRequest.setRequestURI("/actuator/prometheus");
assertThat(bean.matches(mockRequest)).isTrue();
assertThat(tenatContextIgnorePathMatcher.matches(mockRequest)).isTrue();
});
}

@Test
void tenantContextFilterDisabled() {
contextRunner.withPropertyValues("arconia.multitenancy.resolution.http.filter.enabled=false")
.run(context -> assertThatThrownBy(() -> context.getBean(TenantContextFilter.class))
.isInstanceOf(NoSuchBeanDefinitionException.class));
.run(context -> assertThat(context).doesNotHaveBean(NoSuchBeanDefinitionException.class));
}

@Test
void tenantContextIgnorePathMatcherDisabled() {
contextRunner.withPropertyValues("arconia.multitenancy.resolution.http.filter.enabled=false")
.run(context -> assertThatThrownBy(() -> context.getBean(TenantContextIgnorePathMatcher.class))
.isInstanceOf(NoSuchBeanDefinitionException.class));
.run(context -> assertThat(context).doesNotHaveBean(TenantContextIgnorePathMatcher.class));
}

}

0 comments on commit 35a24de

Please sign in to comment.