/******************************************************************************* | |
* 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.eis.aq; | |
import org.eclipse.persistence.sessions.*; | |
import org.eclipse.persistence.sessions.server.*; | |
import org.eclipse.persistence.eis.*; | |
import org.eclipse.persistence.eis.adapters.aq.*; | |
import org.eclipse.persistence.testing.framework.TestCase; | |
import org.eclipse.persistence.testing.framework.TestErrorException; | |
/** | |
* Basic authentication tests. This tests username/password verification when connecting | |
* TopLink EIS to the native AQ JCA connector. Valid/invalid usernames and passwords | |
* will be tested using both server and database sessions. | |
*/ | |
public class AuthenticationTest extends TestCase { | |
public AuthenticationTest() { | |
setName("AuthenticationTest"); | |
setDescription("This tests username/password verification when connecting TopLink EIS to the native AQ JCA connector."); | |
} | |
public void test() throws Exception { | |
testValidUsernameAndPassword(); | |
testValidUsernameAndPasswordDBSession(); | |
testInvalidUsername(); | |
testInvalidPassword(); | |
testInvalidUsernameDBSession(); | |
testInvalidPasswordDBSession(); | |
} | |
public void testValidUsernameAndPassword() throws Exception { | |
EISLogin login = new EISLogin(new AQPlatform()); | |
AQEISConnectionSpec spec = new AQEISConnectionSpec(); | |
login.setConnectionSpec(spec); | |
String url = (String)getSession().getDatasourceLogin().getProperty(AQEISConnectionSpec.URL); | |
login.setUserName("aquser"); | |
login.setPassword("aquser"); | |
login.setProperty(AQEISConnectionSpec.URL, url); | |
boolean failure = false; | |
Server session = new Project(login).createServerSession(); | |
session.setSessionLog(getSession().getSessionLog()); | |
try { | |
session.login(); | |
session.logout(); | |
} catch (Exception ex) { | |
if (ex.getMessage().indexOf("invalid username/password") == -1) { | |
throw ex; | |
} | |
failure = true; | |
} | |
if (failure) { | |
throw new TestErrorException("Authentication failed unexpectedly."); | |
} | |
} | |
public void testValidUsernameAndPasswordDBSession() throws Exception { | |
EISLogin login = new EISLogin(new AQPlatform()); | |
AQEISConnectionSpec spec = new AQEISConnectionSpec(); | |
login.setConnectionSpec(spec); | |
String url = (String)getSession().getDatasourceLogin().getProperty(AQEISConnectionSpec.URL); | |
login.setUserName("aquser"); | |
login.setPassword("aquser"); | |
login.setProperty(AQEISConnectionSpec.URL, url); | |
boolean failure = false; | |
DatabaseSession session = new Project(login).createDatabaseSession(); | |
session.setSessionLog(getSession().getSessionLog()); | |
try { | |
session.login(); | |
session.logout(); | |
} catch (Exception ex) { | |
if (ex.getMessage().indexOf("invalid username/password") == -1) { | |
throw ex; | |
} | |
failure = true; | |
} | |
if (failure) { | |
throw new TestErrorException("Authentication failed unexpectedly."); | |
} | |
} | |
public void testInvalidUsername() throws Exception { | |
EISLogin login = new EISLogin(new AQPlatform()); | |
AQEISConnectionSpec spec = new AQEISConnectionSpec(); | |
login.setConnectionSpec(spec); | |
String url = (String)getSession().getDatasourceLogin().getProperty(AQEISConnectionSpec.URL); | |
login.setUserName("invaliduser"); | |
login.setPassword("aquser"); | |
login.setProperty(AQEISConnectionSpec.URL, url); | |
boolean failure = false; | |
Server session = new Project(login).createServerSession(); | |
session.setSessionLog(getSession().getSessionLog()); | |
try { | |
session.login(); | |
session.logout(); | |
} catch (Exception ex) { | |
if (ex.getMessage().indexOf("invalid username/password") == -1) { | |
throw ex; | |
} | |
failure = true; | |
} | |
if (!failure) { | |
throw new TestErrorException("Authentication did not fail as expected."); | |
} | |
} | |
public void testInvalidPassword() throws Exception { | |
EISLogin login = new EISLogin(new AQPlatform()); | |
AQEISConnectionSpec spec = new AQEISConnectionSpec(); | |
login.setConnectionSpec(spec); | |
String url = (String)getSession().getDatasourceLogin().getProperty(AQEISConnectionSpec.URL); | |
login.setUserName("aquser"); | |
login.setPassword("invalidpassword"); | |
login.setProperty(AQEISConnectionSpec.URL, url); | |
boolean failure = false; | |
Server session = new Project(login).createServerSession(); | |
session.setSessionLog(getSession().getSessionLog()); | |
try { | |
session.login(); | |
session.logout(); | |
} catch (Exception ex) { | |
if (ex.getMessage().indexOf("invalid username/password") == -1) { | |
throw ex; | |
} | |
failure = true; | |
} | |
if (!failure) { | |
throw new TestErrorException("Authentication did not fail as expected."); | |
} | |
} | |
public void testInvalidUsernameDBSession() throws Exception { | |
EISLogin login = new EISLogin(new AQPlatform()); | |
AQEISConnectionSpec spec = new AQEISConnectionSpec(); | |
login.setConnectionSpec(spec); | |
String url = (String)getSession().getDatasourceLogin().getProperty(AQEISConnectionSpec.URL); | |
login.setUserName("invaliduser"); | |
login.setPassword("aquser"); | |
login.setProperty(AQEISConnectionSpec.URL, url); | |
boolean failure = false; | |
DatabaseSession session = new Project(login).createDatabaseSession(); | |
session.setSessionLog(getSession().getSessionLog()); | |
try { | |
session.login(); | |
session.logout(); | |
} catch (Exception ex) { | |
if (ex.getMessage().indexOf("invalid username/password") == -1) { | |
throw ex; | |
} | |
failure = true; | |
} | |
if (!failure) { | |
throw new TestErrorException("Authentication did not fail as expected."); | |
} | |
} | |
public void testInvalidPasswordDBSession() throws Exception { | |
EISLogin login = new EISLogin(new AQPlatform()); | |
AQEISConnectionSpec spec = new AQEISConnectionSpec(); | |
login.setConnectionSpec(spec); | |
String url = (String)getSession().getDatasourceLogin().getProperty(AQEISConnectionSpec.URL); | |
login.setUserName("aquser"); | |
login.setPassword("invalidpassword"); | |
login.setProperty(AQEISConnectionSpec.URL, url); | |
boolean failure = false; | |
DatabaseSession session = new Project(login).createDatabaseSession(); | |
session.setSessionLog(getSession().getSessionLog()); | |
try { | |
session.login(); | |
session.logout(); | |
} catch (Exception ex) { | |
if (ex.getMessage().indexOf("invalid username/password") == -1) { | |
throw ex; | |
} | |
failure = true; | |
} | |
if (!failure) { | |
throw new TestErrorException("Authentication did not fail as expected."); | |
} | |
} | |
} |