/**
* Copyright (C) 2000-2016 Atomikos <info@atomikos.com>
*
* LICENSE CONDITIONS
*
* See http://www.atomikos.com/Main/WhichLicenseApplies for details.
*/
package com.atomikos.icatch.jta.hibernate3;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.XADataSource;
import junit.framework.TestCase;
import org.hibernate.HibernateException;
import org.mockito.Answers;
import org.mockito.Mockito;
import com.atomikos.beans.PropertyException;
public class ConnectionProviderTestJUnit extends TestCase {
public void testConnectionProviderXaDataSource() throws Exception {
XADataSource xaDataSource= Mockito.mock(XADataSource.class,Answers.RETURNS_MOCKS.get());
Properties props = new Properties();
props.setProperty("hibernate.connection.atomikos.uniqueResourceName", "aaa");
//assert that XADataSource-specific properties can be set!
//cf case 30961
props.setProperty("hibernate.connection.atomikos.xaProperties.lastUser" , "scott" );
//normally, hibernate.properties file would contain hibernate.connection.atomikos.xaDataSourceClassName
props.put("hibernate.connection.atomikos.xaDataSource", xaDataSource);
AtomikosConnectionProvider provider = new AtomikosConnectionProvider();
provider.configure(props);
Connection conn = provider.getConnection();
assertNotNull(conn);
conn.close();
}
public void testConnectionProviderNonXaDataSource() throws Exception {
XADataSource xaDataSource= Mockito.mock(XADataSource.class,Answers.RETURNS_MOCKS.get());
Properties props = new Properties();
props.setProperty("hibernate.connection.atomikos.nonxa", "true");
props.setProperty("hibernate.connection.atomikos.uniqueResourceName", "aaa");
//normally, hibernate.properties file would contain hibernate.connection.atomikos.xaDataSourceClassName
props.put("hibernate.connection.atomikos.xaDataSource", xaDataSource);
AtomikosConnectionProvider provider = new AtomikosConnectionProvider();
try {
provider.configure(props);
fail("non-xa datasource creation should have failed");
} catch (HibernateException ex) {
PropertyException pex = (PropertyException) ex.getCause();
assertEquals("no writeable property 'xaDataSource' in class 'com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean'", pex.getMessage());
}
}
}