/*
* *****************************************************************************
* Cloud Foundry
* Copyright (c) [2009-2015] Pivotal Software, Inc. All Rights Reserved.
* This product is licensed to you under the Apache License, Version 2.0 (the "License").
* You may not use this product except in compliance with the License.
*
* This product includes a number of subcomponents with
* separate copyright notices and license terms. Your use of these
* subcomponents is subject to the terms and conditions of the
* subcomponent's license, as noted in the LICENSE file.
* *****************************************************************************
*/
package org.cloudfoundry.identity.uaa.db;
import org.cloudfoundry.identity.uaa.test.JdbcTestBase;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import static org.junit.Assert.assertTrue;
public class TestSchemaValidation extends JdbcTestBase {
@Test
public void test_v2_3_6__That_Users_Perf_Id_Index_Exists() throws Exception {
String[] tableNames = {"users", "USERS"};
validate_index_existence(tableNames, "user_perf_id");
}
@Test
public void test_v3_9_0__That_Users_Perf_Id_Index_Exists() throws Exception {
String tableName = "group_membership";
validate_index_existence(new String[] {tableName,tableName.toUpperCase()}, "group_membership_perf_idx");
}
public void validate_index_existence(String[] tableNames, String lookupIndexName) throws Exception {
Connection connection = dataSource.getConnection();
try {
DatabaseMetaData meta = connection.getMetaData();
boolean foundIndex = false;
for (String tableName : tableNames) {
ResultSet rs = meta.getIndexInfo(connection.getCatalog(), null, tableName, false, false);
while ((!foundIndex) && rs.next()) {
String indexName = rs.getString("INDEX_NAME");
if (lookupIndexName.equalsIgnoreCase(indexName)) {
foundIndex = true;
}
}
rs.close();
if (foundIndex) {
break;
}
}
assertTrue("I was expecting to find index "+ lookupIndexName, foundIndex);
} finally {
connection.close();
}
}
}