/******************************************************************************* | |
* 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.sessionsxml; | |
import org.eclipse.persistence.testing.framework.AutoVerifyTestCase; | |
import org.eclipse.persistence.testing.framework.TestErrorException; | |
import org.eclipse.persistence.internal.sessions.factories.model.SessionConfigs; | |
import org.eclipse.persistence.internal.sessions.factories.model.session.DatabaseSessionConfig; | |
import org.eclipse.persistence.sessions.factories.SessionManager; | |
/** | |
* Test that a getPassword() call from the Mapping Workbench to the config | |
* model detects unencrypted passwords and then re-stores encrypted on the model. | |
* | |
* @author Guy Pelletier | |
* @version 1.0 | |
* @date Septmeber 28, 2004 | |
*/ | |
public class MWConfigModelEncryptionTest extends AutoVerifyTestCase { | |
DatabaseSessionConfig m_sessionConfig1; | |
DatabaseSessionConfig m_sessionConfig2; | |
public MWConfigModelEncryptionTest() { | |
setDescription("Tests the detection and encryption of a unencrypted password on the config model"); | |
} | |
public void test() throws Exception { | |
// Read a session with an unencrypted password | |
SessionConfigs m_sessions = SessionManager.getManager().getInternalMWConfigObjects("org/eclipse/persistence/testing/models/sessionsxml/XMLSchemaSession.xml", getClass().getClassLoader()); | |
// There are 2 sessions in this session.xml file with unencrypted | |
// passwords | |
// The first one will preserve the password and test the forced | |
// encryption on the getPassword() call | |
m_sessionConfig1 = (DatabaseSessionConfig)m_sessions.getSessionConfigs().firstElement(); | |
// The second one will blank out the password and test that the | |
// getPassword() call doesn't throw a null pointer exception | |
m_sessionConfig2 = (DatabaseSessionConfig)m_sessions.getSessionConfigs().lastElement(); | |
m_sessionConfig2.getLoginConfig().setEncryptedPassword(null); | |
} | |
protected void verify() { | |
// For the first config test the encryption with an actual password stored | |
String password1 = m_sessionConfig1.getLoginConfig().getEncryptedPassword(); | |
String password2 = m_sessionConfig1.getLoginConfig().getPassword(); | |
String password3 = m_sessionConfig1.getLoginConfig().getEncryptedPassword(); | |
if (! password1.equals(password3)) { | |
throw new TestErrorException("Get encrypted password returned different values."); | |
} | |
if (password1.equals(password2)) { | |
throw new TestErrorException("Get password returned an encrypted password."); | |
} | |
// For the second config test the getPassword() call with a null password | |
try { | |
m_sessionConfig2.getLoginConfig().getPassword(); | |
} catch (NullPointerException e) { | |
throw new TestErrorException("Call to getPassword() with a null password caused a NPE"); | |
} | |
} | |
} |