diff --git a/spring-boot-autoconfigure/.gitignore b/spring-boot-autoconfigure/.gitignore new file mode 100644 index 00000000000..1269488f7fb --- /dev/null +++ b/spring-boot-autoconfigure/.gitignore @@ -0,0 +1 @@ +data diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaRepositoriesAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaRepositoriesAutoConfigurationTests.java index e5222c32fdf..ead72fe74b4 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaRepositoriesAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaRepositoriesAutoConfigurationTests.java @@ -18,11 +18,12 @@ package org.springframework.boot.autoconfigure.data; import javax.persistence.EntityManagerFactory; +import org.junit.After; import org.junit.Test; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; -import org.springframework.boot.autoconfigure.data.alt.CityMongoDbRepository; -import org.springframework.boot.autoconfigure.data.alt.CitySolrRepository; +import org.springframework.boot.autoconfigure.data.alt.mongo.CityMongoDbRepository; +import org.springframework.boot.autoconfigure.data.alt.solr.CitySolrRepository; import org.springframework.boot.autoconfigure.data.jpa.City; import org.springframework.boot.autoconfigure.data.jpa.CityRepository; import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; @@ -46,6 +47,11 @@ public class JpaRepositoriesAutoConfigurationTests { private AnnotationConfigApplicationContext context; + @After + public void close() { + this.context.close(); + } + @Test public void testDefaultRepositoryConfiguration() throws Exception { this.context = new AnnotationConfigApplicationContext(); @@ -70,7 +76,7 @@ public class JpaRepositoriesAutoConfigurationTests { PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); assertNotNull(this.context - .getBean(org.springframework.boot.autoconfigure.data.alt.CityJpaRepository.class)); + .getBean(org.springframework.boot.autoconfigure.data.alt.jpa.CityJpaRepository.class)); assertNotNull(this.context.getBean(PlatformTransactionManager.class)); assertNotNull(this.context.getBean(EntityManagerFactory.class)); } @@ -82,7 +88,7 @@ public class JpaRepositoriesAutoConfigurationTests { } @Configuration - @EnableJpaRepositories(basePackageClasses = org.springframework.boot.autoconfigure.data.alt.CityJpaRepository.class, excludeFilters = { + @EnableJpaRepositories(basePackageClasses = org.springframework.boot.autoconfigure.data.alt.jpa.CityJpaRepository.class, excludeFilters = { @Filter(type = FilterType.ASSIGNABLE_TYPE, value = CityMongoDbRepository.class), @Filter(type = FilterType.ASSIGNABLE_TYPE, value = CitySolrRepository.class) }) @TestAutoConfigurationPackage(City.class) diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaWebAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaWebAutoConfigurationTests.java index 75a6843fc96..6f7bae66cf7 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaWebAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/JpaWebAutoConfigurationTests.java @@ -16,9 +16,11 @@ package org.springframework.boot.autoconfigure.data; +import org.junit.After; import org.junit.Test; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; +import org.springframework.boot.autoconfigure.data.JpaRepositoriesAutoConfiguration.JpaWebConfiguration; import org.springframework.boot.autoconfigure.data.jpa.City; import org.springframework.boot.autoconfigure.data.jpa.CityRepository; import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; @@ -34,12 +36,19 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; /** + * Tests for {@link JpaWebConfiguration}. + * * @author Dave Syer */ public class JpaWebAutoConfigurationTests { private AnnotationConfigWebApplicationContext context; + @After + public void close() { + this.context.close(); + } + @Test public void testDefaultRepositoryConfiguration() throws Exception { this.context = new AnnotationConfigWebApplicationContext(); diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/MongoRepositoriesAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/MongoRepositoriesAutoConfigurationTests.java index 4914052ef75..c51c2f86d04 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/MongoRepositoriesAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/MongoRepositoriesAutoConfigurationTests.java @@ -16,10 +16,12 @@ package org.springframework.boot.autoconfigure.data; +import org.junit.After; import org.junit.Test; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; -import org.springframework.boot.autoconfigure.data.alt.CityMongoDbRepository; +import org.springframework.boot.autoconfigure.data.alt.mongo.CityMongoDbRepository; +import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage; import org.springframework.boot.autoconfigure.data.mongo.City; import org.springframework.boot.autoconfigure.data.mongo.CityRepository; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; @@ -46,6 +48,11 @@ public class MongoRepositoriesAutoConfigurationTests { private AnnotationConfigApplicationContext context; + @After + public void close() { + this.context.close(); + } + @Test public void testDefaultRepositoryConfiguration() throws Exception { this.context = new AnnotationConfigApplicationContext(); @@ -91,7 +98,7 @@ public class MongoRepositoriesAutoConfigurationTests { } @Configuration - @TestAutoConfigurationPackage(MongoRepositoriesAutoConfigurationTests.class) + @TestAutoConfigurationPackage(EmptyDataPackage.class) protected static class EmptyConfiguration { } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/SolrRepositoriesAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/SolrRepositoriesAutoConfigurationTests.java index f3c6ed154e7..ed31665d1ff 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/SolrRepositoriesAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/SolrRepositoriesAutoConfigurationTests.java @@ -18,10 +18,12 @@ package org.springframework.boot.autoconfigure.data; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.impl.HttpSolrServer; +import org.junit.After; import org.junit.Test; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; -import org.springframework.boot.autoconfigure.data.alt.CitySolrRepository; +import org.springframework.boot.autoconfigure.data.alt.solr.CitySolrRepository; +import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage; import org.springframework.boot.autoconfigure.data.solr.City; import org.springframework.boot.autoconfigure.data.solr.CityRepository; import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration; @@ -42,6 +44,11 @@ public class SolrRepositoriesAutoConfigurationTests { private AnnotationConfigApplicationContext context; + @After + public void close() { + this.context.close(); + } + @Test public void testDefaultRepositoryConfiguration() { initContext(TestConfiguration.class); @@ -80,7 +87,7 @@ public class SolrRepositoriesAutoConfigurationTests { } @Configuration - @TestAutoConfigurationPackage(SolrRepositoriesAutoConfigurationTests.class) + @TestAutoConfigurationPackage(EmptyDataPackage.class) static class EmptyConfiguration { } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CityJpaRepository.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CityJpaRepository.java deleted file mode 100644 index 1918fa6a4cf..00000000000 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CityJpaRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2012-2014 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.data.alt; - -import org.springframework.boot.autoconfigure.data.jpa.City; -import org.springframework.data.repository.Repository; - -public interface CityJpaRepository extends Repository { - -} diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CityMongoDbRepository.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CityMongoDbRepository.java deleted file mode 100644 index e4547f12320..00000000000 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CityMongoDbRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2012-2014 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.data.alt; - -import org.springframework.boot.autoconfigure.data.mongo.City; -import org.springframework.data.repository.Repository; - -public interface CityMongoDbRepository extends Repository { - -} diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CitySolrRepository.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CitySolrRepository.java deleted file mode 100644 index 6a95279d43b..00000000000 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/CitySolrRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2012-2014 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.data.alt; - -import org.springframework.boot.autoconfigure.data.solr.City; -import org.springframework.data.repository.Repository; - -public interface CitySolrRepository extends Repository { - -} diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchAutoConfigurationTests.java new file mode 100644 index 00000000000..caaa0e20e53 --- /dev/null +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchAutoConfigurationTests.java @@ -0,0 +1,76 @@ +/* + * Copyright 2012-2014 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.autoconfigure.elasticsearch; + +import org.elasticsearch.client.Client; +import org.elasticsearch.client.node.NodeClient; +import org.junit.After; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.springframework.beans.factory.BeanCreationException; +import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; +import org.springframework.boot.test.EnvironmentTestUtils; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +import static org.hamcrest.Matchers.instanceOf; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +/** + * Tests for {@link ElasticsearchAutoConfiguration}. + * + * @author Phillip Webb + */ +public class ElasticsearchAutoConfigurationTests { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private AnnotationConfigApplicationContext context; + + @After + public void close() { + if (this.context != null) { + this.context.close(); + } + } + + @Test + public void createNodeClient() { + this.context = new AnnotationConfigApplicationContext( + PropertyPlaceholderAutoConfiguration.class, + ElasticsearchAutoConfiguration.class); + assertEquals(1, this.context.getBeanNamesForType(Client.class).length); + assertThat(this.context.getBean(Client.class), instanceOf(NodeClient.class)); + } + + @Test + public void createTransportClient() throws Exception { + // We don't have a local elasticsearch server so use an address that's missing + // a port and check the exception + this.context = new AnnotationConfigApplicationContext(); + EnvironmentTestUtils.addEnvironment(this.context, + "spring.data.elasticsearch.cluster-nodes:localhost"); + this.context.register(PropertyPlaceholderAutoConfiguration.class, + ElasticsearchAutoConfiguration.class); + this.thrown.expect(BeanCreationException.class); + this.thrown.expectMessage("port"); + this.context.refresh(); + } + +} diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchDataAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchDataAutoConfigurationTests.java new file mode 100644 index 00000000000..d7f807db93c --- /dev/null +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchDataAutoConfigurationTests.java @@ -0,0 +1,52 @@ +/* + * Copyright 2012-2014 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.autoconfigure.elasticsearch; + +import org.junit.After; +import org.junit.Test; +import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; + +import static org.junit.Assert.assertEquals; + +/** + * Tests for {@link ElasticsearchDataAutoConfiguration}. + * + * @author Phillip Webb + */ +public class ElasticsearchDataAutoConfigurationTests { + + private AnnotationConfigApplicationContext context; + + @After + public void close() { + if (this.context != null) { + this.context.close(); + } + } + + @Test + public void templateExists() { + this.context = new AnnotationConfigApplicationContext( + PropertyPlaceholderAutoConfiguration.class, + ElasticsearchAutoConfiguration.class, + ElasticsearchDataAutoConfiguration.class); + assertEquals(1, + this.context.getBeanNamesForType(ElasticsearchTemplate.class).length); + } +}