FINERACT-2450: Fix IndexOutOfBoundsException in GlobalConfigurationHelper
This commit is contained in:
+28
-11
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.fineract.client.models.GetGlobalConfigurationsResponse;
|
import org.apache.fineract.client.models.GetGlobalConfigurationsResponse;
|
||||||
@@ -62,11 +63,23 @@ public class GlobalConfigurationHelper {
|
|||||||
|
|
||||||
GetGlobalConfigurationsResponse actualGlobalConfigurations = getAllGlobalConfigurations();
|
GetGlobalConfigurationsResponse actualGlobalConfigurations = getAllGlobalConfigurations();
|
||||||
final ArrayList<HashMap> defaults = getAllDefaultGlobalConfigurations();
|
final ArrayList<HashMap> defaults = getAllDefaultGlobalConfigurations();
|
||||||
int changedNo = 0;
|
|
||||||
for (int i = 0; i < actualGlobalConfigurations.getGlobalConfiguration().size(); i++) {
|
|
||||||
|
|
||||||
HashMap defaultGlobalConfiguration = defaults.get(i);
|
Map<String, HashMap> defaultMap = new HashMap<>();
|
||||||
GlobalConfigurationPropertyData actualGlobalConfiguration = actualGlobalConfigurations.getGlobalConfiguration().get(i);
|
for (HashMap config : defaults) {
|
||||||
|
defaultMap.put((String) config.get("name"), config);
|
||||||
|
}
|
||||||
|
|
||||||
|
int changedNo = 0;
|
||||||
|
for (GlobalConfigurationPropertyData actualGlobalConfiguration : actualGlobalConfigurations.getGlobalConfiguration()) {
|
||||||
|
|
||||||
|
HashMap defaultGlobalConfiguration = defaultMap.get(actualGlobalConfiguration.getName());
|
||||||
|
if (defaultGlobalConfiguration == null) {
|
||||||
|
String message = "Global configuration '" + actualGlobalConfiguration.getName()
|
||||||
|
+ "' found in database but not in integration test defaults. "
|
||||||
|
+ "You must add it to GlobalConfigurationHelper.getAllDefaultGlobalConfigurations() to ensure test isolation.";
|
||||||
|
log.error(message);
|
||||||
|
throw new RuntimeException(message);
|
||||||
|
}
|
||||||
|
|
||||||
if (!isMatching(defaultGlobalConfiguration, actualGlobalConfiguration)) {
|
if (!isMatching(defaultGlobalConfiguration, actualGlobalConfiguration)) {
|
||||||
|
|
||||||
@@ -101,19 +114,23 @@ public class GlobalConfigurationHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void verifyAllDefaultGlobalConfigurations() {
|
public void verifyAllDefaultGlobalConfigurations() {
|
||||||
|
|
||||||
ArrayList<HashMap> expectedGlobalConfigurations = getAllDefaultGlobalConfigurations();
|
ArrayList<HashMap> expectedGlobalConfigurations = getAllDefaultGlobalConfigurations();
|
||||||
GetGlobalConfigurationsResponse actualGlobalConfigurations = getAllGlobalConfigurations();
|
GetGlobalConfigurationsResponse actualGlobalConfigurations = getAllGlobalConfigurations();
|
||||||
|
|
||||||
Assertions.assertEquals(59, expectedGlobalConfigurations.size());
|
Assertions.assertEquals(expectedGlobalConfigurations.size(), actualGlobalConfigurations.getGlobalConfiguration().size());
|
||||||
Assertions.assertEquals(59, actualGlobalConfigurations.getGlobalConfiguration().size());
|
|
||||||
|
|
||||||
for (int i = 0; i < expectedGlobalConfigurations.size(); i++) {
|
Map<String, HashMap> expectedConfigMap = new HashMap<>();
|
||||||
|
for (HashMap config : expectedGlobalConfigurations) {
|
||||||
|
expectedConfigMap.put((String) config.get("name"), config);
|
||||||
|
}
|
||||||
|
|
||||||
HashMap expectedGlobalConfiguration = expectedGlobalConfigurations.get(i);
|
for (GlobalConfigurationPropertyData actualGlobalConfiguration : actualGlobalConfigurations.getGlobalConfiguration()) {
|
||||||
GlobalConfigurationPropertyData actualGlobalConfiguration = actualGlobalConfigurations.getGlobalConfiguration().get(i);
|
String configName = actualGlobalConfiguration.getName();
|
||||||
|
HashMap expectedGlobalConfiguration = expectedConfigMap.get(configName);
|
||||||
|
|
||||||
final String assertionFailedMessage = "Assertion failed for configName:<" + expectedGlobalConfiguration.get("name") + ">";
|
assertNotNull(expectedGlobalConfiguration, "Configuration found in API but not in expected defaults: " + configName);
|
||||||
|
|
||||||
|
final String assertionFailedMessage = "Assertion failed for configName:<" + configName + ">";
|
||||||
Assertions.assertEquals(expectedGlobalConfiguration.get("name"), actualGlobalConfiguration.getName(), assertionFailedMessage);
|
Assertions.assertEquals(expectedGlobalConfiguration.get("name"), actualGlobalConfiguration.getName(), assertionFailedMessage);
|
||||||
Assertions.assertEquals(expectedGlobalConfiguration.get("value"), actualGlobalConfiguration.getValue(), assertionFailedMessage);
|
Assertions.assertEquals(expectedGlobalConfiguration.get("value"), actualGlobalConfiguration.getValue(), assertionFailedMessage);
|
||||||
Assertions.assertEquals(expectedGlobalConfiguration.get("enabled"), actualGlobalConfiguration.getEnabled(),
|
Assertions.assertEquals(expectedGlobalConfiguration.get("enabled"), actualGlobalConfiguration.getEnabled(),
|
||||||
|
|||||||
Reference in New Issue
Block a user