/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.util.database; import static org.junit.Assert.assertEquals; import java.net.URI; import java.net.URISyntaxException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; /** * * @author sturton */ public class DBURITest { /** * URI with minimum information, relying on defaults in * testdefaults.properties */ static final String C_TEST_DEFAULTS = "jdbc:oracle:testdefault://192.168.100.21:1521/ORCL"; /* * Expected values from testdefaults.properties */ static final String C_DEFAULT_USER = "scott"; static final String C_DEFAULT_PASSWORD = "tiger"; static final String C_DEFAULT_LANGUAGES = "java,plsql"; static final String C_DEFAULT_SCHEMAS = "scott,system"; static final String C_DEFAULT_SOURCE_CODE_TYPES = "table,view"; static final String C_DEFAULT_SOURCE_CODE_NAMES = "emp,dept"; static final String C_DEFAULT_CHARACTERSET = "utf8"; /** * Fully specified URI, overriding defaults in testdefaults.properties */ static final String C_TEST_EXPLICIT = "jdbc:oracle:testdefault:system/oracle@//192.168.100.21:1521/ORCL?characterset=us7ascii&schemas=scott,hr,sh,system&sourcecodetypes=procedures,functions,triggers,package,types&languages=plsql,java&sourcecodenames=PKG_%25%25,PRC_%25%25"; /* * Expected values from testdefaults.properties, with values overridden by * URI query parameters */ static final String C_EXPLICIT_USER = "system"; static final String C_EXPLICIT_PASSWORD = "oracle"; static final String C_EXPLICIT_LANGUAGES = "plsql,java"; static final String C_EXPLICIT_SCHEMAS = "scott,hr,sh,system"; static final String C_EXPLICIT_SOURCE_CODE_TYPES = "procedures,functions,triggers,package,types"; static final String C_EXPLICIT_SOURCE_CODE_NAMES = "PKG_%%,PRC_%%"; static final String C_EXPLICIT_CHARACTERSET = "us7ascii"; static final String C_TEST_URI = "test?param1=x%261¶m2=¶m3="; static final String C_ORACLE_OCI_1 = "jdbc:oracle:oci:system/oracle@//192.168.100.21:1521/ORCL"; static final String C_ORACLE_OCI_2 = "jdbc:oracle:oci:system/oracle@//192.168.100.21:1521/ORCL?characterset=utf8&schemas=scott,hr,sh,system&sourcecodetypes=procedures,functions,triggers,package,types&languages=plsql,java"; static final String C_ORACLE_OCI_3 = "jdbc:oracle:oci:system/oracle@//myserver.com:1521/customer_db?characterset=utf8&schemas=scott,hr,sh,system&sourcecodetypes=procedures,functions,triggers,package,types&languages=plsql,java&sourcecodenames=PKG_%25%25,PRC_%25%25"; static final String C_ORACLE_THIN_1 = "jdbc:oracle:thin:system/oracle@//192.168.100.21:1521/ORCL"; static final String C_ORACLE_THIN_2 = "jdbc:oracle:thin:system/oracle@//192.168.100.21:1521/ORCL?characterset=utf8&schemas=scott,hr,sh,system&sourcecodetypes=procedures,functions,triggers,package,types&languages=plsql,java"; static final String C_ORACLE_THIN_3 = "jdbc:oracle:thin:system/oracle@//myserver.com:1521/customer_db?characterset=utf8&schemas=scott,hr,sh,system&sourcecodetypes=procedures,functions,triggers,package,types&languages=plsql,java&sourcecodenames=PKG_%25%25,PRC_%25%25"; static final String C_POSTGRES_1 = "jdbc:postgresql://host/database"; static final String C_HTTP = "http://localhost:80?characterset=utf8&schemas=scott,hr,sh,system&sourcecodetypes=procedures,functions,triggers,package,types&languages=plsql,java"; static void dump(String description, URI dburi) { System.err.printf( "Test %s\n: isOpaque=%s, isAbsolute=%s Scheme=%s,\n SchemeSpecificPart=%s,\n Host=%s,\n Port=%s,\n Path=%s,\n Fragment=%s,\n Query=%s\n", description, dburi.isOpaque(), dburi.isAbsolute(), dburi.getScheme(), dburi.getSchemeSpecificPart(), dburi.getHost(), dburi.getPort(), dburi.getPath(), dburi.getFragment(), dburi.getQuery()); String query = dburi.getQuery(); if (null != query && !"".equals(query)) { String[] params = query.split("&"); Map<String, String> map = new HashMap<>(); for (String param : params) { String[] splits = param.split("="); String name = splits[0]; String value = null; if (splits.length > 1) { value = splits[1]; } map.put(name, value); System.err.printf("name=%s,value=%s\n", name, value); } } // return map; } /** * Test of dump method, of class DBURI. */ @Test public void testDump() throws URISyntaxException, Exception { System.out.println("dump"); String description = ""; DBURI dburi = new DBURI(C_TEST_URI); DBURI.dump(description, dburi.getUri()); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getUri method, of class DBURI. */ @Test public void testGetUri() throws URISyntaxException, Exception { System.out.println("getUri"); DBURI instance = new DBURI(C_ORACLE_OCI_1); URI expResult = new URI(C_ORACLE_OCI_1); URI result = instance.getUri(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setUri method, of class DBURI. */ @Test public void testSetUri() throws URISyntaxException, Exception { System.out.println("setUri"); URI uri = new URI(C_ORACLE_OCI_1); DBURI instance = new DBURI(C_TEST_URI); instance.setUri(uri); assertEquals(uri, instance.getUri()); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getDbType method, of class DBURI. */ @Test public void testGetDbType() throws URISyntaxException, Exception { System.out.println("getDbType"); DBURI instance = new DBURI(C_POSTGRES_1); DBType expResult = new DBType("postgresql"); DBType result = instance.getDbType(); // assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getDbType method, of class DBURI. */ @Test public void testGetDbType2() throws URISyntaxException, Exception { System.out.println("getDbType"); DBURI instance = new DBURI(C_ORACLE_OCI_1); DBType expResult = new DBType("oci"); DBType result = instance.getDbType(); // assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setDbType method, of class DBURI. */ @Test public void testSetDbType() throws URISyntaxException, Exception { System.out.println("setDbType"); DBURI instance = new DBURI(C_ORACLE_OCI_2); DBType dbType = new DBType("postgresql"); instance.setDbType(dbType); assertEquals(dbType, instance.getDbType()); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getSchemasList method, of class DBURI. */ @Test public void testGetSchemasList() throws URISyntaxException, Exception { System.out.println("getSchemasList"); DBURI instance = new DBURI(C_ORACLE_OCI_2); List<String> expResult; expResult = Arrays.asList("scott,hr,sh,system".split(",")); List<String> result = instance.getSchemasList(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setSchemasList method, of class DBURI. */ @Test public void testSetSchemasList() throws URISyntaxException, Exception { System.out.println("setSchemasList"); List<String> schemasList = Arrays.asList("scott,hr,sh,system".split(",")); DBURI instance = new DBURI(C_ORACLE_OCI_1); instance.setSchemasList(schemasList); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getSourceCodeTypesList method, of class DBURI. */ @Test public void testGetSourceCodeTypesList() throws URISyntaxException, Exception { System.out.println("getSourceCodeTypesList"); DBURI instance = new DBURI(C_ORACLE_OCI_2); List<String> expResult = Arrays.asList("procedures,functions,triggers,package,types".split(",")); List<String> result = instance.getSourceCodeTypesList(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setSourceCodeTypesList method, of class DBURI. */ @Test public void testSetSourceCodeTypesList() throws URISyntaxException, Exception { System.out.println("setSourceCodeTypesList"); List<String> sourcecodetypesList = Arrays.asList("procedures,functions,triggers,package,types".split(",")); DBURI instance = new DBURI(C_ORACLE_OCI_1); instance.setSourceCodeTypesList(sourcecodetypesList); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getSourceCodeNamesList method, of class DBURI. */ @Test public void testGetSourceCodeNamesList() throws URISyntaxException, Exception { System.out.println("getSourceCodeNamesList"); DBURI instance = new DBURI(C_ORACLE_OCI_3); List<String> expResult = Arrays.asList("PKG_%%,PRC_%%".split(",")); List<String> result = instance.getSourceCodeNamesList(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setSourceCodeNamesList method, of class DBURI. */ @Test public void testSetSourceCodeNamesList() throws URISyntaxException, Exception { System.out.println("setSourceCodeNamesList"); List<String> sourceCodeNamesList = Arrays.asList("PKG_%%,TRG_%%".split(",")); DBURI instance = new DBURI(C_ORACLE_OCI_2); instance.setSourceCodeNamesList(sourceCodeNamesList); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getLanguagesList method, of class DBURI. */ @Test public void testGetLanguagesList() throws URISyntaxException, Exception { System.out.println("getLanguagesList"); DBURI instance = new DBURI(C_ORACLE_OCI_2); List<String> expResult = Arrays.asList("plsql,java".split(",")); List<String> result = instance.getLanguagesList(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setLanguagesList method, of class DBURI. */ @Test public void testSetLanguagesList() throws URISyntaxException, Exception { System.out.println("setLanguagesList"); List<String> languagesList = Arrays.asList("plsql,java".split(",")); DBURI instance = new DBURI(C_ORACLE_OCI_2); instance.setLanguagesList(languagesList); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getDriverClass method, of class DBURI. */ @Test public void testGetDriverClass() throws URISyntaxException, Exception { System.out.println("getDriverClass"); DBURI instance = new DBURI(C_ORACLE_OCI_1); String expResult = "oracle.jdbc.OracleDriver"; String result = instance.getDriverClass(); System.out.println("testGetDriverClass: driverClass=" + result); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getDriverClass method, of class DBURI. */ @Test public void testGetThinDriverClass() throws URISyntaxException, Exception { System.out.println("getThinDriverClass"); DBURI instance = new DBURI(C_ORACLE_THIN_1); String expResult = "oracle.jdbc.OracleDriver"; String result = instance.getDriverClass(); System.out.println("testGetThinDriverClass: driverClass=" + result); System.out.println("testGetThinDriverClass: getDbType().getProperties() follows"); System.out .println("testGetThinDriverClass: getDbType().getProperties()=" + instance.getDbType().getProperties()); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setDriverClass method, of class DBURI. */ @Test public void testSetDriverClass() throws URISyntaxException, Exception { System.out.println("setDriverClass"); String driverClass = "oracle.jdbc.driver.OracleDriver"; DBURI instance = new DBURI(C_ORACLE_OCI_1); instance.setDriverClass(driverClass); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getCharacterSet method, of class DBURI. */ @Test public void testGetCharacterSet() throws URISyntaxException, Exception { System.out.println("getCharacterSet"); DBURI instance = new DBURI(C_ORACLE_OCI_2); String expResult = "utf8"; String result = instance.getCharacterSet(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setCharacterSet method, of class DBURI. */ @Test public void testSetCharacterSet() throws URISyntaxException, Exception { System.out.println("setCharacterSet"); String characterSet = "utf8"; DBURI instance = new DBURI(C_POSTGRES_1); instance.setCharacterSet(characterSet); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getSourceCodeType method, of class DBURI. */ @Test public void testGetSourceCodeType() throws URISyntaxException, Exception { System.out.println("getSourceCodeType"); DBURI instance = new DBURI(C_ORACLE_OCI_1); int expResult = 2005; // CLOB int result = instance.getSourceCodeType(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setSourceCodeType method, of class DBURI. */ @Test public void testSetSourceCodeType() throws URISyntaxException, Exception { System.out.println("setSourceCodeType"); int sourceCodeType = 5; DBURI instance = new DBURI(C_ORACLE_OCI_1); instance.setSourceCodeType(sourceCodeType); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getSubprotocol method, of class DBURI. */ @Test public void testGetSubprotocol() throws URISyntaxException, Exception { System.out.println("getSubprotocol"); DBURI instance = new DBURI(C_ORACLE_OCI_2); String expResult = "oracle"; String result = instance.getSubprotocol(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setSubprotocol method, of class DBURI. */ public void testSetSubprotocol() throws URISyntaxException, Exception { System.out.println("setSubprotocol"); DBURI instance = new DBURI(C_ORACLE_OCI_2); String subprotocol = "oracle"; instance.setSubprotocol(subprotocol); String result = instance.getSubprotocol(); assertEquals(subprotocol, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getSubnamePrefix method, of class DBURI. */ @Test public void testGetSubnamePrefix() throws URISyntaxException, Exception { System.out.println("getSubnamePrefix"); DBURI instance = new DBURI(C_ORACLE_OCI_2); String expResult = "oci"; String result = instance.getSubnamePrefix(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setSubnamePrefix method, of class DBURI. */ @Test public void testSetSubnamePrefix() throws URISyntaxException, Exception { System.out.println("setSubnamePrefix"); String subnamePrefix = "oci8"; DBURI instance = new DBURI(C_ORACLE_OCI_2); instance.setSubnamePrefix(subnamePrefix); String result = instance.getSubnamePrefix(); assertEquals(subnamePrefix, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of getParameters method, of class DBURI. */ @Test public void testGetParameters() throws URISyntaxException, Exception { System.out.println("getParameters"); DBURI instance = new DBURI(C_TEST_URI); Map<String, String> expResult = new HashMap<>(); expResult.put("param1", "x&1"); expResult.put("param2", null); expResult.put("param3", null); Map<String, String> result = instance.getParameters(); assertEquals(expResult, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Test of setParameters method, of class DBURI. */ @Test public void testSetParameters() throws URISyntaxException, Exception { System.out.println("setParameters"); Map<String, String> parameters = new HashMap<>(); parameters.put("param1", "x%FFF"); parameters.put("param2", "IAmParameter2"); parameters.put("param3", "IAmParameter3"); DBURI instance = new DBURI(C_TEST_URI); instance.setParameters(parameters); // TODO review the generated test code and remove the default call to // fail. assertEquals(parameters, instance.getParameters()); } /** * Verify that default languages are returned if non are provided in the * DBURI. */ @Test public void testDefaultLanguagesList() throws URISyntaxException, Exception { System.out.println("testDefaultLanguagesList"); List<String> defaultLanguagesList = Arrays.asList(C_DEFAULT_LANGUAGES.split(",")); DBURI instance = new DBURI(C_TEST_DEFAULTS); List<String> result = instance.getLanguagesList(); assertEquals(defaultLanguagesList, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Verify that default CharacterSet are returned if non are provided in the * DBURI. */ @Test public void testDefaultCharacterSet() throws URISyntaxException, Exception { System.out.println("testDefaultCharacterSet"); DBURI instance = new DBURI(C_TEST_DEFAULTS); String result = instance.getCharacterSet(); assertEquals(C_DEFAULT_CHARACTERSET, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Verify that default languages are returned if non are provided in the * DBURI. */ @Test public void testDefaultSchemasList() throws URISyntaxException, Exception { System.out.println("testDefaultSchemasList"); List<String> defaultSchemasList = Arrays.asList(C_DEFAULT_SCHEMAS.split(",")); DBURI instance = new DBURI(C_TEST_DEFAULTS); List<String> result = instance.getSchemasList(); assertEquals(defaultSchemasList, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Verify that default Source Code Types are returned if non are provided in * the DBURI. */ @Test public void testDefaultSourceCodeTypesList() throws URISyntaxException, Exception { System.out.println("testDefaultSourceCodeTypesList"); List<String> defaultSourceCodeTypesList = Arrays.asList(C_DEFAULT_SOURCE_CODE_TYPES.split(",")); DBURI instance = new DBURI(C_TEST_DEFAULTS); List<String> result = instance.getSourceCodeTypesList(); assertEquals(defaultSourceCodeTypesList, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Verify that default languages are returned if non are provided in the * DBURI. */ @Test public void testDefaultSourceCodeNamesList() throws URISyntaxException, Exception { System.out.println("testDefaultSourceCodeNamesList"); List<String> defaultSourceCodeNamesList = Arrays.asList(C_DEFAULT_SOURCE_CODE_NAMES.split(",")); DBURI instance = new DBURI(C_TEST_DEFAULTS); List<String> result = instance.getSourceCodeNamesList(); assertEquals(defaultSourceCodeNamesList, result); // TODO review the generated test code and remove the default call to // fail. // fail("The test case is a prototype."); } /** * Verify that languages are returned if provided in the DBURI. */ @Test public void testExplicitLanguagesList() throws URISyntaxException, Exception { System.out.println("testExplicitLanguagesList"); List<String> defaultLanguagesList = Arrays.asList(C_EXPLICIT_LANGUAGES.split(",")); DBURI instance = new DBURI(C_TEST_EXPLICIT); List<String> result = instance.getLanguagesList(); assertEquals(defaultLanguagesList, result); // TODO review the generated test code and remove the call to fail. // fail("The test case is a prototype."); } /** * Verify that CharacterSet are returned if provided in the DBURI. */ @Test public void testExplicitCharacterSet() throws URISyntaxException, Exception { System.out.println("testExplicitCharacterSet"); DBURI instance = new DBURI(C_TEST_EXPLICIT); String result = instance.getCharacterSet(); assertEquals(C_EXPLICIT_CHARACTERSET, result); // TODO review the generated test code and remove the call to fail. // fail("The test case is a prototype."); } /** * Verify that languages are returned if provided in the DBURI. */ @Test public void testExplicitSchemasList() throws URISyntaxException, Exception { System.out.println("testExplicitSchemasList"); List<String> defaultSchemasList = Arrays.asList(C_EXPLICIT_SCHEMAS.split(",")); DBURI instance = new DBURI(C_TEST_EXPLICIT); List<String> result = instance.getSchemasList(); assertEquals(defaultSchemasList, result); // TODO review the generated test code and remove the call to fail. // fail("The test case is a prototype."); } /** * Verify that Source Code Types are returned if provided in the DBURI. */ @Test public void testExplicitSourceCodeTypesList() throws URISyntaxException, Exception { System.out.println("testExplicitSourceCodeTypesList"); List<String> defaultSourceCodeTypesList = Arrays.asList(C_EXPLICIT_SOURCE_CODE_TYPES.split(",")); DBURI instance = new DBURI(C_TEST_EXPLICIT); List<String> result = instance.getSourceCodeTypesList(); assertEquals(defaultSourceCodeTypesList, result); // TODO review the generated test code and remove the call to fail. // fail("The test case is a prototype."); } /** * Verify that languages are returned if provided in the DBURI. */ @Test public void testExplicitSourceCodeNamesList() throws URISyntaxException, Exception { System.out.println("testExplicitSourceCodeNamesList"); List<String> defaultSourceCodeNamesList = Arrays.asList(C_EXPLICIT_SOURCE_CODE_NAMES.split(",")); DBURI instance = new DBURI(C_TEST_EXPLICIT); List<String> result = instance.getSourceCodeNamesList(); assertEquals(defaultSourceCodeNamesList, result); // TODO review the generated test code and remove the call to fail. // fail("The test case is a prototype."); } }