/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.connection;
import java.sql.Connection;
import java.sql.Driver;
import java.util.Collections;
import java.util.Properties;
import org.hibernate.boot.registry.StandardServiceInitiator;
import org.hibernate.boot.registry.internal.BootstrapServiceRegistryImpl;
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
import org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator;
import org.hibernate.engine.jdbc.internal.JdbcServicesImpl;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.exception.JDBCConnectionException;
import org.hibernate.service.Service;
import org.hibernate.service.internal.ProvidedService;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseUnitTestCase;
import org.junit.Test;
import static org.junit.Assert.fail;
/**
* @author Steve Ebersole
*/
public class ConnectionCreatorTest extends BaseUnitTestCase {
@Test
@TestForIssue( jiraKey = "HHH-8621" )
public void testBadUrl() throws Exception {
DriverConnectionCreator connectionCreator = new DriverConnectionCreator(
(Driver) Class.forName( "org.h2.Driver" ).newInstance(),
new StandardServiceRegistryImpl(
true,
new BootstrapServiceRegistryImpl(),
Collections.<StandardServiceInitiator>emptyList(),
Collections.<ProvidedService>emptyList(),
Collections.emptyMap()
) {
@Override
@SuppressWarnings("unchecked")
public <R extends Service> R getService(Class<R> serviceRole) {
if ( JdbcServices.class.equals( serviceRole ) ) {
// return a new, not fully initialized JdbcServicesImpl
return (R) new JdbcServicesImpl();
}
return super.getService( serviceRole );
}
},
"jdbc:h2:mem:test-bad-urls;nosuchparam=saywhat",
new Properties(),
false,
null
);
try {
Connection conn = connectionCreator.createConnection();
conn.close();
fail( "Expecting the bad Connection URL to cause an exception" );
}
catch (JDBCConnectionException expected) {
}
}
}