package com.alibaba.druid.bvt.filter.config; import java.sql.SQLException; import org.junit.Assert; import org.junit.Test; import com.alibaba.druid.filter.config.ConfigFileGenerator; import com.alibaba.druid.filter.config.ConfigFilter; import com.alibaba.druid.mock.MockDriver; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.util.JdbcUtils; /** * @author Jonas Yang */ public class ConfigFilterTest extends ConfigFileGenerator { String encryptedString = "OJfUm6WCHi7EuXqE6aEc+Po2xFrAGBeSNy8O2jWhV2FTG8/5kbRRr2rjNKhptlevm/03Y0048P7h88gdUOXAYg=="; @Test public void testInitRemoteConfigFile() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setFilters("config"); dataSource.setConnectionProperties("config.file=file://" + this.filePath); try { dataSource.init(); Assert.assertEquals("The username is " + dataSource.getUsername(), "test1", dataSource.getUsername()); } finally { JdbcUtils.close(dataSource); } } @Test public void testInitRemoteConfigFileBySystemProperty() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setFilters("config"); System.setProperty(ConfigFilter.SYS_PROP_CONFIG_FILE, "file://" + this.filePath); try { dataSource.init(); Assert.assertEquals("The username is " + dataSource.getUsername(), "test1", dataSource.getUsername()); } finally { System.clearProperty(ConfigFilter.SYS_PROP_CONFIG_FILE); JdbcUtils.close(dataSource); } } @Test public void testInitInvalidRemoteConfigFile() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setFilters("config"); dataSource.setConnectionProperties("config.file=abcdef"); Exception error = null; try { dataSource.init(); } catch (IllegalArgumentException e) { error = e; } finally { JdbcUtils.close(dataSource); } Assert.assertNotNull(error); } @Test public void testInitDecrypt() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriver(MockDriver.instance); dataSource.setUrl(""); dataSource.setUsername("test"); dataSource.setPassword(encryptedString); dataSource.setFilters("config"); dataSource.setConnectionProperties("config.decrypt=true"); try { dataSource.init(); Assert.assertEquals("The password is " + dataSource.getPassword() + ", is not xiaoyu", "xiaoyu", dataSource.getPassword()); } finally { JdbcUtils.close(dataSource); } } @Test public void testInitRemoteConfigAndDecrypt() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setFilters("config"); dataSource.setConnectionProperties("config.decrypt=true;config.file=" + "file://" + this.filePath); try { dataSource.init(); Assert.assertEquals("The password is " + dataSource.getPassword(), "xiaoyu", dataSource.getPassword()); } finally { JdbcUtils.close(dataSource); } } @Test public void testNormalInit() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl("jdbc:oracle:thin:@"); try { dataSource.init(); } finally { JdbcUtils.close(dataSource); } } @Test public void testInvalidInit() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriver(MockDriver.instance); dataSource.setFilters("config"); dataSource.setConnectionProperties("config.file=abcdefeg"); Exception error = null; try { dataSource.init(); } catch (IllegalArgumentException e) { error = e; } finally { JdbcUtils.close(dataSource); } Assert.assertNotNull(error); } }