diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java b/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java index 6d131ca2e9..75c850fe6f 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java @@ -195,5 +195,6 @@ protected Object[][] getContents() { {"R_socketClosed", "Socket closed"}, {"R_aeStreamReadError", "The multi-part identifier"}, {"R_dataClassificationNotSupported", "Data Classification is not supported on this server."}, {"R_maxResultBufferExceeded", "MaxResultBuffer exceeded {0}."}, - {"R_noAuthorizationCode", "No Authorization code was returned from the server"}}; + {"R_noAuthorizationCode", "No Authorization code was returned from the server"}, + {"R_databaseNotFound", "Database {0} not found."}}; } diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/TestUtils.java b/src/test/java/com/microsoft/sqlserver/jdbc/TestUtils.java index b293b5a873..054c08e77c 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/TestUtils.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/TestUtils.java @@ -840,6 +840,25 @@ public static String removeProperty(String connectionString, String property) { return connectionString.replace(propertyStr, ""); } + /** + * Get the given connection property in the connection string + * + * @param connectionString + * connection string + * @param property + * name of the property + * @return The the value of the connection property or null if not found + */ + public static String getProperty(String connectionString, String property) { + int start = connectionString.indexOf(property); + if (-1 == start) { + return null; + } + start = connectionString.indexOf("=", start) + 1; + int end = connectionString.indexOf(";", start); + return connectionString.substring(start, -1 != end ? end : connectionString.length()); + } + /** * Creates a truststore and returns the path of it. * diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java index a16fc8152b..644087b87e 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java @@ -317,19 +317,41 @@ public void testDBTables() throws SQLException { try (Connection con = getConnection()) { DatabaseMetaData databaseMetaData = con.getMetaData(); try (ResultSet rsCatalog = databaseMetaData.getCatalogs()) { - - MessageFormat form1 = new MessageFormat(TestResource.getResource("R_atLeastOneFound")); Object[] msgArgs1 = {"catalog"}; - assertTrue(rsCatalog.next(), form1.format(msgArgs1)); + assertTrue(rsCatalog.next(), + (new MessageFormat(TestResource.getResource("R_atLeastOneFound"))).format(msgArgs1)); + String dbNameFromCatalog = rsCatalog.getString("TABLE_CAT"); String[] types = {"TABLE"}; - try (ResultSet rs = databaseMetaData.getTables(rsCatalog.getString("TABLE_CAT"), null, "%", types)) { - - MessageFormat form2 = new MessageFormat(TestResource.getResource("R_nameEmpty")); - Object[] msgArgs2 = {"Table"}; - while (rs.next()) { - assertTrue(!StringUtils.isEmpty(rs.getString("TABLE_NAME")), form2.format(msgArgs2)); + Object[] msgArgs2 = {"Table"}; + String dbNameFromConnectionString = TestUtils.getProperty(connectionString, "databaseName"); + if (null == dbNameFromConnectionString || (null != dbNameFromConnectionString + && dbNameFromConnectionString.equals(dbNameFromCatalog))) { + try (ResultSet rs = databaseMetaData.getTables(dbNameFromCatalog, null, "%", types)) { + while (rs.next()) { + assertTrue(!StringUtils.isEmpty(rs.getString("TABLE_NAME")), + (new MessageFormat(TestResource.getResource("R_nameEmpty"))).format(msgArgs2)); + } } + } else { + // try to find the databaseName specified + while (rsCatalog.next()) { + dbNameFromCatalog = rsCatalog.getString("TABLE_CAT"); + if (null != dbNameFromCatalog && !dbNameFromCatalog.isEmpty() + && dbNameFromConnectionString.equals(dbNameFromCatalog)) { + try (ResultSet rs = databaseMetaData.getTables(dbNameFromCatalog, null, "%", types)) { + while (rs.next()) { + assertTrue(!StringUtils.isEmpty(rs.getString("TABLE_NAME")), + (new MessageFormat(TestResource.getResource("R_nameEmpty"))) + .format(msgArgs2)); + } + return; + } + } + } + + Object[] msgArgs3 = {dbNameFromConnectionString}; + fail((new MessageFormat(TestResource.getResource("R_databaseNotFound"))).format(msgArgs3)); } } }