package com.alibaba.druid.bvt.filter.config; import java.io.File; import java.io.FileOutputStream; import java.util.Properties; import org.junit.Assert; import junit.framework.TestCase; import com.alibaba.druid.filter.config.ConfigFilter; import com.alibaba.druid.filter.config.ConfigTools; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import com.alibaba.druid.util.JdbcUtils; public class ConfigFilterTest3 extends TestCase { private DruidDataSource dataSource; protected void setUp() throws Exception { dataSource = new DruidDataSource(); dataSource.setFilters("config"); } protected void tearDown() throws Exception { JdbcUtils.close(dataSource); } public void test_0() throws Exception { String password = "abcdefg1234"; String[] keys = ConfigTools.genKeyPair(1024); File file = File.createTempFile("MyTest", Long.toString(System.nanoTime())); Properties properties = new Properties(); properties.put(DruidDataSourceFactory.PROP_URL, "jdbc:mock:xx0"); properties.put(DruidDataSourceFactory.PROP_USERNAME, "sa"); properties.put(DruidDataSourceFactory.PROP_PASSWORD, ConfigTools.encrypt(keys[0], password)); properties.put(ConfigFilter.CONFIG_DECRYPT, "true"); properties.store(new FileOutputStream(file), ""); dataSource.getConnectProperties().put(ConfigFilter.CONFIG_KEY, keys[1]); dataSource.getConnectProperties().put(ConfigFilter.CONFIG_FILE, "file://" + file.getAbsolutePath()); dataSource.init(); Assert.assertEquals("jdbc:mock:xx0", dataSource.getUrl()); Assert.assertEquals("sa", dataSource.getUsername()); Assert.assertEquals(password, dataSource.getPassword()); } public void test_sys_property() throws Exception { String password = "abcdefg1234"; String[] keys = ConfigTools.genKeyPair(1024); File file = File.createTempFile("MyTest", Long.toString(System.nanoTime())); Properties properties = new Properties(); properties.put(DruidDataSourceFactory.PROP_URL, "jdbc:mock:xx0"); properties.put(DruidDataSourceFactory.PROP_USERNAME, "sa"); properties.put(DruidDataSourceFactory.PROP_PASSWORD, ConfigTools.encrypt(keys[0], password)); properties.put(ConfigFilter.CONFIG_DECRYPT, "true"); properties.store(new FileOutputStream(file), ""); System.getProperties().put(ConfigFilter.SYS_PROP_CONFIG_KEY, keys[1]); System.getProperties().put(ConfigFilter.SYS_PROP_CONFIG_FILE, "file://" + file.getAbsolutePath()); try { dataSource.init(); Assert.assertEquals("jdbc:mock:xx0", dataSource.getUrl()); Assert.assertEquals("sa", dataSource.getUsername()); Assert.assertEquals(password, dataSource.getPassword()); } finally { System.clearProperty(ConfigFilter.SYS_PROP_CONFIG_KEY); System.clearProperty(ConfigFilter.SYS_PROP_CONFIG_FILE); } } }