/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.tests.feature; | |
import java.io.PrintWriter; | |
import java.sql.Connection; | |
import java.util.Properties; | |
import org.eclipse.persistence.sessions.*; | |
import org.eclipse.persistence.testing.framework.*; | |
import org.eclipse.persistence.exceptions.ValidationException; | |
import org.eclipse.persistence.internal.databaseaccess.*; | |
import org.eclipse.persistence.platform.database.OraclePlatform; | |
public class DatabaseLoginCodeCoverageTest extends AutoVerifyTestCase { | |
private DatabaseLogin login; | |
private String testFailures; | |
public void setup() { | |
login = new DatabaseLogin(); | |
testFailures = ""; | |
} | |
public void test() { | |
runTests(); | |
} | |
public void verify() { | |
if (testFailures.length() > 0) { | |
throw new TestErrorException("Tests failures from DatabaseLogin: " + testFailures); | |
} | |
} | |
private void addToTestFailures(String fail) { | |
testFailures += ("\n - " + fail); | |
} | |
public void runTests() { | |
//////////////////////////////////////////////////// | |
login.bindAllParameters(); | |
if (!login.getShouldBindAllParameters()) { | |
addToTestFailures("bindAllParameters"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontBindAllParameters(); | |
if (login.getShouldBindAllParameters()) { | |
addToTestFailures("dontBindAllParameters"); | |
} | |
//////////////////////////////////////////////////// | |
login.cacheAllStatements(); | |
if (!login.getShouldCacheAllStatements()) { | |
addToTestFailures("cacheAllStatements"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontCacheAllStatements(); | |
if (login.getShouldCacheAllStatements()) { | |
addToTestFailures("dontCacheAllStatements"); | |
} | |
//////////////////////////////////////////////////// | |
login.optimizeDataConversion(); | |
if (!login.getShouldOptimizeDataConversion()) { | |
addToTestFailures("optimizeDataConversion"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontOptimizeDataConversion(); | |
if (login.getShouldOptimizeDataConversion()) { | |
addToTestFailures("dontOptimizeDataConversion"); | |
} | |
//////////////////////////////////////////////////// | |
login.useBatchWriting(); | |
if (!login.shouldUseBatchWriting()) { | |
addToTestFailures("useBatchWriting"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseBatchWriting(); | |
if (login.shouldUseBatchWriting()) { | |
addToTestFailures("dontUseBatchWriting"); | |
} | |
//////////////////////////////////////////////////// | |
login.useByteArrayBinding(); | |
if (!login.shouldUseByteArrayBinding()) { | |
addToTestFailures("useByteArrayBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseByteArrayBinding(); | |
if (login.shouldUseByteArrayBinding()) { | |
addToTestFailures("dontUseByteArrayBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.useExternalConnectionPooling(); | |
if (!login.shouldUseExternalConnectionPooling()) { | |
addToTestFailures("useExternalConnectionPooling"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseExternalConnectionPooling(); | |
if (login.shouldUseExternalConnectionPooling()) { | |
addToTestFailures("dontUseExternalConnectionPooling"); | |
} | |
//////////////////////////////////////////////////// | |
login.useJDBCBatchWriting(); | |
if (!login.shouldUseJDBCBatchWriting()) { | |
addToTestFailures("useJDBCBatchWriting"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseJDBCBatchWriting(); | |
if (login.shouldUseJDBCBatchWriting()) { | |
addToTestFailures("dontUseJDBCBatchWriting"); | |
} | |
//////////////////////////////////////////////////// | |
login.useNativeSequencing(); | |
if (!login.shouldUseNativeSequencing()) { | |
addToTestFailures("useNativeSequencing"); | |
} | |
//////////////////////////////////////////////////// | |
login.useNativeSQL(); | |
if (!login.shouldUseNativeSQL()) { | |
addToTestFailures("useNativeSQL"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseNativeSQL(); | |
if (login.shouldUseNativeSQL()) { | |
addToTestFailures("dontUseNativeSQL"); | |
} | |
//////////////////////////////////////////////////// | |
login.useStreamsForBinding(); | |
if (!login.shouldUseStreamsForBinding()) { | |
addToTestFailures("useStreamsForBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseStreamsForBinding(); | |
if (login.shouldUseStreamsForBinding()) { | |
addToTestFailures("dontUseStreamsForBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.useStringBinding(); | |
if (!login.shouldUseStringBinding()) { | |
addToTestFailures("useStringBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseStringBinding(); | |
if (login.shouldUseStringBinding()) { | |
addToTestFailures("dontUseStringBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.setMaxBatchWritingSize(1492); | |
if (login.getMaxBatchWritingSize() != 1492) { | |
addToTestFailures("maxBatchWritingSize"); | |
} | |
//////////////////////////////////////////////////// | |
login.setProperty("aProperty", "junk"); | |
if (login.getProperty("aProperty") != "junk") { | |
addToTestFailures("property"); | |
} | |
//////////////////////////////////////////////////// | |
login.setStatementCacheSize(1492); | |
if (login.getStatementCacheSize() != 1492) { | |
addToTestFailures("statementCacheSize"); | |
} | |
//////////////////////////////////////////////////// | |
login.setStringBindingSize(1492); | |
if (login.getStringBindingSize() != 1492) { | |
addToTestFailures("stringBindingSize"); | |
} | |
//////////////////////////////////////////////////// | |
login.setTransactionIsolation(2); | |
if (login.getTransactionIsolation() != 2) { | |
addToTestFailures("transactionIsolation"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseByteArrayBinding(); | |
if (login.shouldUseByteArrayBinding()) { | |
addToTestFailures("dontUseBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.dontUseExternalConnectionPooling(); | |
if (login.shouldUseExternalConnectionPooling()) { | |
addToTestFailures("dontUseExternalConnectionPooling"); | |
} | |
//////////////////////////////////////////////////// | |
login.setDriverClassName("oracle.jdbc.OracleDriver"); | |
if (!(login.getDriverClassName().equals("oracle.jdbc.OracleDriver"))) { | |
addToTestFailures("driverClassName"); | |
} | |
//////////////////////////////////////////////////// | |
login.useCloudscapeDriver(); | |
if (!login.isCloudscapeJDBCDriver()) { | |
addToTestFailures("cloudscapeJDBCDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useDB2JDBCDriver(); | |
if (!login.isDB2JDBCDriver()) { | |
addToTestFailures("DB2JDBCDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useIntersolvSequeLinkDriver(); | |
if (!login.isIntersolvSequeLinkDriver()) { | |
addToTestFailures("intersolvSequeLinkDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useJConnectDriver(); | |
if (!login.isJConnectDriver()) { | |
addToTestFailures("JConnectDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useJDBCConnectDriver(); | |
if (!login.isJDBCConnectDriver()) { | |
addToTestFailures("JDBCConnectDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useJDBCConnectRemoteDriver(); | |
if (!login.isJDBCConnectRemoteDriver()) { | |
addToTestFailures("JDBCConnectRemoteDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useOracle7JDBCDriver(); | |
if (!login.isOracle7JDBCDriver()) { | |
addToTestFailures("oracle7JDBCDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useOracleJDBCDriver(); | |
if (!login.isOracleJDBCDriver()) { | |
addToTestFailures("oracleJDBCDriver()"); | |
} | |
//////////////////////////////////////////////////// | |
login.useOracleServerJDBCDriver(); | |
if (!login.isOracleServerJDBCDriver()) { | |
addToTestFailures("oracleServerJDBCDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useOracleThinJDBCDriver(); | |
if (!login.isOracleThinJDBCDriver()) { | |
addToTestFailures("oracleThinJDBCDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicOracleOCIDriver(); | |
if (!login.isWebLogicOracleOCIDriver()) { | |
addToTestFailures("webLogicOracleOCIDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicSQLServerDBLibDriver(); | |
if (!login.isWebLogicSQLServerDBLibDriver()) { | |
addToTestFailures("webLogicSQLServerDBLibDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicSQLServerDriver(); | |
if (!login.isWebLogicSQLServerDriver()) { | |
addToTestFailures("weblogicSQLServerDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicSybaseDBLibDriver(); | |
if (!login.isWebLogicSybaseDBLibDriver()) { | |
addToTestFailures("webLogicSybaseDBLibDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicThinClientDriver(); | |
if (!login.isWebLogicThinClientDriver()) { | |
addToTestFailures("weblogicThinClientDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicThinDriver(); | |
if (!login.isWebLogicThinDriver()) { | |
addToTestFailures("webLogicThinDriver"); | |
} | |
//////////////////////////////////////////////////// | |
login.useAccess(); | |
if (!login.getPlatform().isAccess()) { | |
addToTestFailures("useAccess"); | |
} | |
//////////////////////////////////////////////////// | |
login.useDBase(); | |
if (!login.getPlatform().isDBase()) { | |
addToTestFailures("useDBase"); | |
} | |
//////////////////////////////////////////////////// | |
login.useInformix(); | |
if (!login.getPlatform().isInformix()) { | |
addToTestFailures("useInformix"); | |
} | |
//////////////////////////////////////////////////// | |
login.useJDBCODBCBridge(); | |
if (!login.isJDBCODBCBridge()) { | |
addToTestFailures("JDBCODBCBridge"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicJDBCConnectionPool("martinsPool"); | |
if (login.getConnectionString().indexOf("martinsPool") == -1) { | |
addToTestFailures("useWebLogicJDBCConnectionPool"); | |
} | |
//////////////////////////////////////////////////// | |
login.useWebLogicDriverCursoredOutputCode(); | |
if (login.getCursorCode() != 1111) { | |
addToTestFailures("useWeblogicDriverCursoredOutputCode"); | |
} | |
//////////////////////////////////////////////////// | |
login.useDirectDriverConnect(); | |
if ((login.getConnector() == null) || !(login.getConnector() instanceof DirectConnector)) { | |
addToTestFailures("useDirectDriverConnect()"); | |
} | |
//////////////////////////////////////////////////// | |
login.useSymfoware(); | |
if (!login.getPlatform().isSymfoware()) { | |
addToTestFailures("useSymfoware"); | |
} | |
//////////////////////////////////////////////////// | |
login.useDirectDriverConnect("myDriverClassName", "myDriverURLHeader", "myDatabaseURL"); | |
DefaultConnector connector = (DefaultConnector)login.getConnector(); | |
if (connector == null) { | |
addToTestFailures("useDirectDriverConnect() == null"); | |
} else { | |
if (!connector.getDriverClassName().equals("myDriverClassName")) { | |
addToTestFailures("useDirectDriverConnect() - driverClassName wrong "); | |
} | |
if (!connector.getDriverURLHeader().equals("myDriverURLHeader")) { | |
addToTestFailures("useDirectDriverConnect() - driverURLHeader wrong"); | |
} | |
if (!connector.getDatabaseURL().equals("myDatabaseURL")) { | |
addToTestFailures("useDirectDriverConnect() - databaseURL wrong"); | |
} | |
} | |
//////////////////////////////////////////////////// | |
login.setUsesNativeSQL(false); | |
if (login.getUsesNativeSQL()) { | |
addToTestFailures("usesNativeSQL"); | |
} | |
//////////////////////////////////////////////////// | |
login.setUsesStringBinding(false); | |
if (login.getUsesStringBinding()) { | |
addToTestFailures("usesStringBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.setUsesStreamsForBinding(false); | |
if (login.getUsesStreamsForBinding()) { | |
addToTestFailures("usesStreamsForBinding"); | |
} | |
//////////////////////////////////////////////////// | |
login.setProperty("completelyUseless", "evenMoreUseless"); | |
if (!(login.getProperty("completelyUseless").equals("evenMoreUseless"))) { | |
addToTestFailures("setProperty"); | |
} | |
//////////////////////////////////////////////////// | |
login.removeProperty("completelyUseless"); | |
if (login.getProperty("completelyUseless") != null) { | |
addToTestFailures("removeProperty"); | |
} | |
//////////////////////////////////////////////////// | |
DatabaseLoginWrapper dbWrapper = new DatabaseLoginWrapper(); | |
if (dbWrapper.driverIs("complete.non.existent.moronic.driver.class")) { | |
addToTestFailures("driverIs (true when should be false)"); | |
} | |
dbWrapper.useDB2NetJDBCDriver(); | |
if (!dbWrapper.driverIs("COM.ibm.db2.jdbc.net.DB2Driver")) { | |
addToTestFailures("DB2NetJDBCDriver"); | |
} | |
dbWrapper.useHSQLDriver(); | |
if (!dbWrapper.driverIs("org.hsqldb.jdbcDriver")) { | |
addToTestFailures("HSQLDriver"); | |
} | |
dbWrapper.useINetSQLServerDriver(); | |
if (!dbWrapper.driverIs("com.inet.tds.TdsDriver")) { | |
addToTestFailures("INetSQLServerDriver"); | |
} | |
dbWrapper.useJConnect50Driver(); | |
if (!dbWrapper.driverIs("com.sybase.jdbc2.jdbc.SybDriver")) { | |
addToTestFailures("JConnect50Driver"); | |
} | |
dbWrapper.usePointBaseDriver(); | |
if (!dbWrapper.driverIs("com.pointbase.jdbc.jdbcUniversalDriver")) { | |
addToTestFailures("PointBaseDriver"); | |
} | |
dbWrapper.useOracleJDBCDriver(); | |
if (!dbWrapper.oracleDriverIs("oci8")) { | |
addToTestFailures("oracleDriverIs"); | |
} | |
//////////////////////////////////////////////////// | |
login.setCacheTransactionIsolation(9); | |
if (login.getCacheTransactionIsolation() != 9) { | |
addToTestFailures("cacheTransactionIsolation"); | |
} | |
//////////////////////////////////////////////////// | |
login.setCursorCode(9); | |
if (login.getCursorCode() != 9) { | |
addToTestFailures("cursorCode"); | |
} | |
//////////////////////////////////////////////////// | |
login.setODBCDataSourceName("fakeDataSourceName"); | |
if (!login.getDataSourceName().equals("fakeDataSourceName")) { | |
addToTestFailures("dataSourceName"); | |
} | |
//////////////////////////////////////////////////// | |
login.setShouldTrimStrings(false); | |
if (login.getShouldTrimStrings()) { | |
addToTestFailures("getShouldTrimStrings"); | |
} | |
//////////////////////////////////////////////////// | |
login.setDatabaseName("oneCompleteLie"); | |
if (!login.getDatabaseName().equals("oneCompleteLie")) { | |
addToTestFailures("databaseName"); | |
} | |
if (login.toString().indexOf("oneCompleteLie") == -1) { | |
addToTestFailures("databaseName - toString failed"); | |
} | |
//////////////////////////////////////////////////// | |
login.setServerName("homer"); | |
if (!login.getServerName().equals("homer")) { | |
addToTestFailures("serverName"); | |
} | |
if (login.toString().indexOf("homer") == -1) { | |
addToTestFailures("serverName - toString failed"); | |
} | |
//////////////////////////////////////////////////// | |
DatabaseLogin.setShouldIgnoreCaseOnFieldComparisons(false); | |
if (DatabaseLogin.shouldIgnoreCaseOnFieldComparisons()) { | |
addToTestFailures("shouldIgnoreCaseOnFieldComparisons"); | |
} | |
//////////////////////////////////////////////////// | |
login.setTableQualifier("tableQualifier"); | |
if (!login.getTableQualifier().equals("tableQualifier")) { | |
addToTestFailures("tableQualifier"); | |
} | |
//////////////////////////////////////////////////// | |
// must do this one before the any setPassword calls | |
// that is, we don't want the encryption object initialized | |
// before we run this test. | |
login.setEncryptionClassName("class.does.not.exist"); | |
boolean didNotCatchException = true; | |
try { | |
login.setPassword("password"); | |
} catch (ValidationException e) { | |
didNotCatchException = false; | |
} | |
if (didNotCatchException) { | |
addToTestFailures("encryptionClassName should have thrown an exception"); | |
} | |
login.setEncryptionClassName(null);// reset it for the next test | |
//////////////////////////////////////////////////// | |
login.setPassword(null); | |
if (login.getPassword() != null) { | |
addToTestFailures("setPassword to null, did not remove it from the properties"); | |
} | |
//////////////////////////////////////////////////// | |
DatabasePlatform originalPlatform = login.getPlatform(); | |
DatabasePlatform platform = new DatabasePlatform(); | |
String defaultSeqTableName = platform.getSequenceTableName(); | |
String newSeqTableName = defaultSeqTableName.concat("_NEW"); | |
platform.setSequenceTableName(newSeqTableName); | |
login.setPlatform(platform); | |
login.usePlatform(new OraclePlatform()); | |
String name = login.getPlatform().getSequenceTableName(); | |
if (!name.equals(newSeqTableName)) { | |
addToTestFailures("usePlatform() method hasn't copied SequenceTableName from the existing DatabasePlatform"); | |
} | |
login.setPlatform(originalPlatform); | |
//////////////////////////////////////////////////// | |
originalPlatform = login.getPlatform(); | |
login.setPlatform(null); | |
didNotCatchException = true; | |
try { | |
login.usePlatform(new DatabasePlatform()); | |
} catch (NullPointerException e) { | |
didNotCatchException = false; | |
} | |
if (!didNotCatchException) { | |
addToTestFailures("usePlatform() method throws a NullPointerException when there is no platform in the login"); | |
} | |
login.setPlatform(originalPlatform); | |
//////////////////////////////////////////////////// | |
originalPlatform = login.getPlatform(); | |
platform = new DatabasePlatform(); | |
defaultSeqTableName = platform.getSequenceTableName(); | |
newSeqTableName = defaultSeqTableName.concat("_NEW"); | |
platform.setSequenceTableName(newSeqTableName); | |
login.setPlatform(platform); | |
login.setPlatformClassName("org.eclipse.persistence.platform.database.OraclePlatform"); | |
name = login.getPlatform().getSequenceTableName(); | |
if (!name.equals(newSeqTableName)) { | |
addToTestFailures("setPlatformClassName() method hasn't copied settings from the existing platform"); | |
} | |
login.setPlatform(originalPlatform); | |
//////////////////////////////////////////////////// | |
didNotCatchException = true; | |
try { | |
login.setPlatformClassName("one.big.dumb.platform"); | |
} catch (ValidationException e) { | |
didNotCatchException = false; | |
} | |
if (didNotCatchException) { | |
addToTestFailures("setting false platform name didn't throw an exception"); | |
} | |
//////////////////////////////////////////////////// | |
didNotCatchException = true; | |
try { | |
DatabaseLoginWrapper wrap = new DatabaseLoginWrapper(); | |
wrap.getStupidConnector(); | |
} catch (ValidationException e) { | |
didNotCatchException = false; | |
} | |
if (didNotCatchException) { | |
addToTestFailures("did not catch validation exception on invalid database connector"); | |
} | |
} | |
} | |
/* | |
* class used to access protected methods in DatabaseLogin | |
*/ | |
class DatabaseLoginWrapper extends DatabaseLogin { | |
public DatabaseLoginWrapper() { | |
setDriverClassName("oracle.jdbc.OracleDriver"); | |
} | |
public boolean driverIs(String name) { | |
return super.driverIs(name); | |
} | |
public Connector getStupidConnector() { | |
setConnector(new StupidConnector()); | |
return super.getDefaultConnector(); | |
} | |
public boolean oracleDriverIs(String urlPrefix) { | |
return super.oracleDriverIs(urlPrefix); | |
} | |
} | |
/* | |
* class used for testing invalid Connectors | |
*/ | |
class StupidConnector implements Connector { | |
public StupidConnector() { | |
super(); | |
} | |
public Object clone() { | |
return null; | |
} | |
public Connection connect(Properties properties, Session session) { | |
return null; | |
} | |
public String getConnectionDetails() { | |
return "N/A"; | |
} | |
public void toString(PrintWriter writer) { | |
writer.println("StupidConnector"); | |
} | |
} |