From 09de86fde87780e2cb417cc0811069a879c65c22 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 4 Nov 2013 16:16:06 +0000 Subject: [PATCH] Fix test broken by MySQL dependency --- .../jdbc/DataSourceAutoConfiguration.java | 3 +- .../DataSourceAutoConfigurationTests.java | 54 +++++++++++++++++-- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java index c66ae2bb947..99361fc2aa1 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java @@ -86,7 +86,8 @@ public class DataSourceAutoConfiguration implements EnvironmentAware { @PostConstruct protected void initialize() throws Exception { - if (this.dataSource == null) { + if (this.dataSource == null + || !this.environment.getProperty("initialize", Boolean.class, true)) { logger.debug("No DataSource found so not initializing"); return; } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java index a725f5b711e..b568d2f94d0 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java @@ -16,13 +16,19 @@ package org.springframework.boot.autoconfigure.jdbc; +import java.sql.Connection; +import java.sql.Driver; +import java.sql.DriverPropertyInfo; +import java.sql.SQLException; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; import org.junit.Test; +import org.mockito.Mockito; import org.springframework.boot.TestUtils; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -73,16 +79,21 @@ public class DataSourceAutoConfigurationTests { @Test public void testExplicitDriverClassClearsUserName() throws Exception { - TestUtils.addEnviroment(this.context, - "spring.datasource.driverClassName:com.mysql.jdbc.Driver", - "spring.datasource.url:jdbc:mysql://localhost"); + TestUtils + .addEnviroment( + this.context, + "spring.datasource.driverClassName:org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigurationTests$DatabaseDriver", + "spring.datasource.url:jdbc:foo://localhost", + "spring.datasource.initialize:false"); this.context.register(DataSourceAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); DataSource bean = this.context.getBean(DataSource.class); assertNotNull(bean); org.apache.tomcat.jdbc.pool.DataSource pool = (org.apache.tomcat.jdbc.pool.DataSource) bean; - assertEquals("com.mysql.jdbc.Driver", pool.getDriverClassName()); + assertEquals( + "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigurationTests$DatabaseDriver", + pool.getDriverClassName()); assertNull(pool.getUsername()); } @@ -196,4 +207,39 @@ public class DataSourceAutoConfigurationTests { } + public static class DatabaseDriver implements Driver { + + @Override + public Connection connect(String url, Properties info) throws SQLException { + return Mockito.mock(Connection.class); + } + + @Override + public boolean acceptsURL(String url) throws SQLException { + return true; + } + + @Override + public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) + throws SQLException { + return new DriverPropertyInfo[0]; + } + + @Override + public int getMajorVersion() { + return 1; + } + + @Override + public int getMinorVersion() { + return 0; + } + + @Override + public boolean jdbcCompliant() { + return false; + } + + } + }