Polish Couchbase tests

pull/12511/head
Brian Clozel 7 years ago
parent ac64441611
commit a0b9974796

@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -24,6 +24,9 @@ import com.couchbase.client.java.env.CouchbaseEnvironment;
import org.junit.Rule;
import org.junit.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -35,28 +38,38 @@ import static org.mockito.Mockito.mock;
*
* @author Stephane Nicoll
*/
public class CouchbaseAutoConfigurationIntegrationTests
extends AbstractCouchbaseAutoConfigurationTests {
public class CouchbaseAutoConfigurationIntegrationTests {
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
CouchbaseAutoConfiguration.class));
@Rule
public final CouchbaseTestServer couchbase = new CouchbaseTestServer();
@Test
public void defaultConfiguration() {
load(null, "spring.couchbase.bootstrapHosts=localhost");
assertThat(this.context.getBeansOfType(Cluster.class)).hasSize(1);
assertThat(this.context.getBeansOfType(ClusterInfo.class)).hasSize(1);
assertThat(this.context.getBeansOfType(CouchbaseEnvironment.class)).hasSize(1);
assertThat(this.context.getBeansOfType(Bucket.class)).hasSize(1);
this.contextRunner
.withPropertyValues("spring.couchbase.bootstrapHosts=localhost")
.run((context) -> {
assertThat(context).hasSingleBean(Cluster.class)
.hasSingleBean(ClusterInfo.class)
.hasSingleBean(CouchbaseEnvironment.class)
.hasSingleBean(Bucket.class);
});
}
@Test
public void customConfiguration() {
load(CustomConfiguration.class, "spring.couchbase.bootstrapHosts=localhost");
assertThat(this.context.getBeansOfType(Cluster.class)).hasSize(2);
assertThat(this.context.getBeansOfType(ClusterInfo.class)).hasSize(1);
assertThat(this.context.getBeansOfType(CouchbaseEnvironment.class)).hasSize(1);
assertThat(this.context.getBeansOfType(Bucket.class)).hasSize(2);
this.contextRunner
.withUserConfiguration(CustomConfiguration.class)
.withPropertyValues("spring.couchbase.bootstrapHosts=localhost")
.run((context) -> {
assertThat(context.getBeansOfType(Cluster.class)).hasSize(2);
assertThat(context.getBeansOfType(ClusterInfo.class)).hasSize(1);
assertThat(context.getBeansOfType(CouchbaseEnvironment.class)).hasSize(1);
assertThat(context.getBeansOfType(Bucket.class)).hasSize(2);
});
}
@Configuration

@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,6 +16,8 @@
package org.springframework.boot.autoconfigure.couchbase;
import java.util.function.Consumer;
import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.Cluster;
import com.couchbase.client.java.CouchbaseBucket;
@ -24,8 +26,12 @@ import com.couchbase.client.java.env.CouchbaseEnvironment;
import com.couchbase.client.java.env.DefaultCouchbaseEnvironment;
import org.junit.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration.CouchbaseConfiguration;
import org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration;
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@ -38,102 +44,122 @@ import static org.mockito.Mockito.mock;
* @author Eddú Meléndez
* @author Stephane Nicoll
*/
public class CouchbaseAutoConfigurationTests
extends AbstractCouchbaseAutoConfigurationTests {
public class CouchbaseAutoConfigurationTests {
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class,
CouchbaseAutoConfiguration.class));
@Test
public void bootstrapHostsIsRequired() {
load(null);
assertNoCouchbaseBeans();
this.contextRunner.run((context) -> {
assertNoCouchbaseBeans(context);
});
}
@Test
public void bootstrapHostsNotRequiredIfCouchbaseConfigurerIsSet() {
load(CouchbaseTestConfigurer.class);
assertThat(this.context.getBeansOfType(CouchbaseTestConfigurer.class)).hasSize(1);
this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
.run((context) -> {
assertThat(context).hasSingleBean(CouchbaseTestConfigurer.class);
// No beans are going to be created
assertNoCouchbaseBeans();
assertNoCouchbaseBeans(context);
});
}
@Test
public void bootstrapHostsIgnoredIfCouchbaseConfigurerIsSet() {
load(CouchbaseTestConfigurer.class, "spring.couchbase.bootstrapHosts=localhost");
assertThat(this.context.getBeansOfType(CouchbaseTestConfigurer.class)).hasSize(1);
assertNoCouchbaseBeans();
this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
.withPropertyValues("spring.couchbase.bootstrapHosts=localhost")
.run((context) -> {
assertThat(context).hasSingleBean(CouchbaseTestConfigurer.class);
assertNoCouchbaseBeans(context);
});
}
private void assertNoCouchbaseBeans() {
private void assertNoCouchbaseBeans(AssertableApplicationContext context) {
// No beans are going to be created
assertThat(this.context.getBeansOfType(CouchbaseEnvironment.class)).isEmpty();
assertThat(this.context.getBeansOfType(ClusterInfo.class)).isEmpty();
assertThat(this.context.getBeansOfType(Cluster.class)).isEmpty();
assertThat(this.context.getBeansOfType(Bucket.class)).isEmpty();
assertThat(context).doesNotHaveBean(CouchbaseEnvironment.class)
.doesNotHaveBean(ClusterInfo.class)
.doesNotHaveBean(Cluster.class)
.doesNotHaveBean(Bucket.class);
}
@Test
public void customizeEnvEndpoints() throws Exception {
DefaultCouchbaseEnvironment env = customizeEnv(
"spring.couchbase.env.endpoints.keyValue=4",
"spring.couchbase.env.endpoints.query=5",
"spring.couchbase.env.endpoints.view=6");
public void customizeEnvEndpoints() {
testCouchbaseEnv(env -> {
assertThat(env.kvEndpoints()).isEqualTo(4);
assertThat(env.queryEndpoints()).isEqualTo(5);
assertThat(env.viewEndpoints()).isEqualTo(6);
},
"spring.couchbase.env.endpoints.keyValue=4",
"spring.couchbase.env.endpoints.query=5",
"spring.couchbase.env.endpoints.view=6");
}
@Test
public void customizeEnvTimeouts() throws Exception {
DefaultCouchbaseEnvironment env = customizeEnv(
"spring.couchbase.env.timeouts.connect=100",
"spring.couchbase.env.timeouts.keyValue=200",
"spring.couchbase.env.timeouts.query=300",
"spring.couchbase.env.timeouts.socket-connect=400",
"spring.couchbase.env.timeouts.view=500");
public void customizeEnvTimeouts() {
testCouchbaseEnv(env -> {
assertThat(env.connectTimeout()).isEqualTo(100);
assertThat(env.kvTimeout()).isEqualTo(200);
assertThat(env.queryTimeout()).isEqualTo(300);
assertThat(env.socketConnectTimeout()).isEqualTo(400);
assertThat(env.viewTimeout()).isEqualTo(500);
},
"spring.couchbase.env.timeouts.connect=100",
"spring.couchbase.env.timeouts.keyValue=200",
"spring.couchbase.env.timeouts.query=300",
"spring.couchbase.env.timeouts.socket-connect=400",
"spring.couchbase.env.timeouts.view=500");
}
@Test
public void enableSslNoEnabledFlag() throws Exception {
DefaultCouchbaseEnvironment env = customizeEnv(
"spring.couchbase.env.ssl.keyStore=foo",
"spring.couchbase.env.ssl.keyStorePassword=secret");
public void enableSslNoEnabledFlag() {
testCouchbaseEnv(env -> {
assertThat(env.sslEnabled()).isTrue();
assertThat(env.sslKeystoreFile()).isEqualTo("foo");
assertThat(env.sslKeystorePassword()).isEqualTo("secret");
},
"spring.couchbase.env.ssl.keyStore=foo",
"spring.couchbase.env.ssl.keyStorePassword=secret");
}
@Test
public void disableSslEvenWithKeyStore() throws Exception {
DefaultCouchbaseEnvironment env = customizeEnv(
"spring.couchbase.env.ssl.enabled=false",
"spring.couchbase.env.ssl.keyStore=foo",
"spring.couchbase.env.ssl.keyStorePassword=secret");
public void disableSslEvenWithKeyStore() {
testCouchbaseEnv(env -> {
assertThat(env.sslEnabled()).isFalse();
assertThat(env.sslKeystoreFile()).isNull();
assertThat(env.sslKeystorePassword()).isNull();
},
"spring.couchbase.env.ssl.enabled=false",
"spring.couchbase.env.ssl.keyStore=foo",
"spring.couchbase.env.ssl.keyStorePassword=secret");
}
private void testCouchbaseEnv(Consumer<DefaultCouchbaseEnvironment> environmentConsumer,
String... environment) {
this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
.withPropertyValues(environment)
.run((context) -> {
CouchbaseProperties properties = context.getBean(CouchbaseProperties.class);
DefaultCouchbaseEnvironment env = new CouchbaseConfiguration(properties)
.couchbaseEnvironment();
environmentConsumer.accept(env);
});
}
@Test
public void customizeEnvWithCustomCouchbaseConfiguration() {
load(CustomCouchbaseConfiguration.class,
this.contextRunner.withUserConfiguration(CustomCouchbaseConfiguration.class)
.withPropertyValues(
"spring.couchbase.bootstrap-hosts=localhost",
"spring.couchbase.env.timeouts.connect=100");
assertThat(this.context.getBeansOfType(CouchbaseConfiguration.class)).hasSize(1);
DefaultCouchbaseEnvironment env = this.context
.getBean(DefaultCouchbaseEnvironment.class);
"spring.couchbase.env.timeouts.connect=100")
.run((context) -> {
assertThat(context).hasSingleBean(CouchbaseConfiguration.class);
DefaultCouchbaseEnvironment env = context.getBean(DefaultCouchbaseEnvironment.class);
assertThat(env.socketConnectTimeout()).isEqualTo(5000);
assertThat(env.connectTimeout()).isEqualTo(2000);
}
private DefaultCouchbaseEnvironment customizeEnv(String... environment)
throws Exception {
load(CouchbaseTestConfigurer.class, environment);
CouchbaseProperties properties = this.context.getBean(CouchbaseProperties.class);
return new CouchbaseConfiguration(properties).couchbaseEnvironment();
});
}
@Configuration

Loading…
Cancel
Save