@Test(groups = "slow")
public void testExportAndLookup() throws NamingException, IOException, SQLException {
final JNDIManager jndiManager = new JNDIManager();
final JdbcDataSource dataSource = new JdbcDataSource();
dataSource.setURL(embeddedDB.getJdbcConnectionString());
dataSource.setUser(embeddedDB.getUsername());
dataSource.setPassword(embeddedDB.getPassword());
final JdbcDataSource retrievedJdbcDataSource = testForDataSource(jndiManager, dataSource, JdbcDataSource.class);
Assert.assertEquals(retrievedJdbcDataSource.getURL(), embeddedDB.getJdbcConnectionString());
Assert.assertEquals(retrievedJdbcDataSource.getUser(), embeddedDB.getUsername());
Assert.assertEquals(retrievedJdbcDataSource.getPassword(), embeddedDB.getPassword());
Assert.assertNotNull(retrievedJdbcDataSource.getConnection());
final ReferenceableDataSourceSpy retrievedReferenceableDataSourceSpy = testForDataSource(jndiManager, new ReferenceableDataSourceSpy(dataSource, "something"), ReferenceableDataSourceSpy.class);
final DataSource retrievedJdbcDataSource2Delegate = retrievedReferenceableDataSourceSpy.getDataSource();
Assert.assertTrue(retrievedJdbcDataSource2Delegate instanceof JdbcDataSource);
final JdbcDataSource retrievedJdbcDataSource2 = (JdbcDataSource) retrievedJdbcDataSource2Delegate;
Assert.assertEquals(retrievedJdbcDataSource2.getURL(), embeddedDB.getJdbcConnectionString());
Assert.assertEquals(retrievedJdbcDataSource2.getUser(), embeddedDB.getUsername());
Assert.assertEquals(retrievedJdbcDataSource2.getPassword(), embeddedDB.getPassword());
Assert.assertNotNull(retrievedJdbcDataSource2.getConnection());
}