@Test public void extractInformation() throws SQLException { Connection mockedConnection = mock(Connection.class); DatabaseMetaData mockedMetaData = mock(DatabaseMetaData.class); String url = "url"; String version = "version"; String name = "name"; when(mockedConnection.getMetaData()).thenReturn(mockedMetaData); when(mockedMetaData.getURL()).thenReturn(url); when(mockedMetaData.getDatabaseProductName()).thenReturn(name); when(mockedMetaData.getDatabaseProductVersion()).thenReturn(version); ConnectionMetaData data = extractor.parse(mockedConnection); assertThat(data.product, is(name)); assertThat(data.version, is(version)); assertThat(data.url, is(url)); }
@BeforeMethod public void init() { extractor = new ConnectionMetaDataExtractor(); JDBCUrlExtractor jdbExtractor = mock(JDBCUrlExtractor.class); when(jdbExtractor.extractURLfromJDBCURL(anyString())).thenReturn(URL); ConnectionMetaDataExtractor.urlExtractor = jdbExtractor; }
if (isClosed(connectionClass, connection)) { if (logger.isDebugEnabled()) { logger.debug("Meta Information on database cannot be read because the connection is closed."); Object metaData = getMetaData(connectionClass, connection); if (null == metaData) { logger.warn("Meta information on database cannot be read for connection " + connection.toString() + ". No database details like URL or Vendor will be displayed."); data.version = parseVersion(metaDataClass, metaData); data.url = parseTarget(metaDataClass, metaData); data.product = parseProduct(metaDataClass, metaData);
@Test public void sqlPopulated() { ConnectionMetaData data = new ConnectionMetaData(); data.product = "product"; data.version = "version"; data.url = "url"; when(extractor.parse(anyObject())).thenReturn(data); // note that we can pass this as we mocked the data extraction. Object connectionObject = ""; storage.populate(sqlStatementData, connectionObject); assertThat(storage.storage.size(), is(1L)); assertThat(storage.storage.getIfPresent(connectionObject), is(data)); verify(sqlStatementData, times(1)).setDatabaseProductName(data.product); verify(sqlStatementData, times(1)).setDatabaseProductVersion(data.version); verify(sqlStatementData, times(1)).setDatabaseUrl(data.url); // second try, storage stays same storage.populate(sqlStatementData, connectionObject); assertThat(storage.storage.size(), is(1L)); assertThat(storage.storage.getIfPresent(connectionObject), is(data)); verify(sqlStatementData, times(2)).setDatabaseProductName(data.product); verify(sqlStatementData, times(2)).setDatabaseProductVersion(data.version); verify(sqlStatementData, times(2)).setDatabaseUrl(data.url); } }
@Test public void extractorReturnsNull() { Object connectionObject = ""; when(extractor.parse(connectionObject)).thenReturn(null); storage.populate(sqlStatementData, connectionObject); // we have one now as adding empty assertThat(storage.storage.size(), is(1L)); // re-trying should not touch the storage storage.populate(sqlStatementData, connectionObject); assertThat(storage.storage.size(), is(1L)); // in any case no sql touching verifyZeroInteractions(sqlStatementData); }
@Test public void exceptionOnGet() throws SQLException { Connection mockedConnection = mock(Connection.class); when(mockedConnection.getMetaData()).thenThrow(new RuntimeException("test")); ConnectionMetaData data = extractor.parse(mockedConnection); // returns empty connection data object assertThat(data, is(not(nullValue()))); assertThat(data.product, is(nullValue())); assertThat(data.version, is(nullValue())); assertThat(data.url, is(nullValue())); } }
@Override public ConnectionMetaData call() throws Exception { ConnectionMetaData data = dataExtractor.parse(connection); return data != null ? data : EMPTY; } });
@Test public void closedConnection() throws SQLException { Connection mockedConnection = mock(Connection.class); when(mockedConnection.isClosed()).thenReturn(true); ConnectionMetaData data = extractor.parse(mockedConnection); assertThat(data, is(nullValue())); }
@Test public void nullConnection() { Logger mockedLogger = Mockito.mock(Logger.class); ConnectionMetaDataExtractor.logger = mockedLogger; ConnectionMetaData data = extractor.parse(null); assertThat(data, is(nullValue())); Mockito.verify(mockedLogger).warn(Matchers.anyString()); }