Skip to content

Commit 4141892

Browse files
author
Chris Wiechmann
committed
Fix issue #119 - Now all configuration fields are handled
Added new unit-test and improved existing integration test
1 parent 10d250e commit 4141892

3 files changed

Lines changed: 41 additions & 5 deletions

File tree

modules/apim-adapter/src/main/java/com/axway/apim/adapter/apis/APIManagerConfigAdapter.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ public APIManagerConfigAdapter() {}
4848
Map<Boolean, Config> managerConfig = new HashMap<Boolean, Config>();
4949

5050

51-
private static enum ConfigFields {
51+
/**
52+
* Config fields that are introduced with a certain API-Manager version.
53+
* This list is mainly used to filter out fields, when using an older API-Manager version.
54+
*/
55+
protected static enum ConfigFields {
5256
version77 ("7.7.0", new String[] {"userNameRegex", "apiImportTimeout", "apiImportMimeValidation", "apiImportEditable", "lockUserAccount" }),
5357
version762 ("7.6.2", new String[] {
5458
"changePasswordOnFirstLogin", "passwordExpiryEnabled", "passwordLifetimeDays", "applicationScopeRestrictions", "strictCertificateChecking",
@@ -70,11 +74,11 @@ public String getManagerVersion() {
7074
public static String[] getIgnoredFields() {
7175
String[] restrictedFields = new String[] {};
7276
for(ConfigFields fields : values()) {
73-
restrictedFields = ArrayUtils.addAll(restrictedFields, fields.ignoreFields);
7477
// Add all ignore fields until we reached the used API-Manager version
7578
if(APIManagerAdapter.hasAPIManagerVersion(fields.getManagerVersion())) {
7679
break;
7780
}
81+
restrictedFields = ArrayUtils.addAll(restrictedFields, fields.ignoreFields);
7882
}
7983
return restrictedFields;
8084
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.axway.apim.adapter.apis;
2+
3+
import org.testng.Assert;
4+
import org.testng.annotations.Test;
5+
6+
import com.axway.apim.adapter.APIManagerAdapter;
7+
8+
public class APIManagerConfigAdapterTest {
9+
10+
@Test
11+
public void testCorrectFieldsAreIgnored() {
12+
APIManagerAdapter.apiManagerVersion = "7.7.20200930";
13+
String[] ignoreFields = APIManagerConfigAdapter.ConfigFields.getIgnoredFields();
14+
// No field should be ignored for the Sept-Release
15+
Assert.assertNotNull(ignoreFields);
16+
Assert.assertEquals(ignoreFields.length, 0);
17+
18+
APIManagerAdapter.apiManagerVersion = "7.6.2";
19+
ignoreFields = APIManagerConfigAdapter.ConfigFields.getIgnoredFields();
20+
Assert.assertNotNull(ignoreFields);
21+
// Five config fields, based on all known fields are not supported by an API-Manager 7.6.2
22+
Assert.assertEquals(ignoreFields.length, 5);
23+
}
24+
}

modules/settings/src/test/java/com/axway/apim/setup/it/tests/ImportAndExportConfigTestIT.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.testng.annotations.Parameters;
66
import org.testng.annotations.Test;
77

8+
import com.axway.apim.adapter.APIManagerAdapter;
89
import com.axway.apim.lib.errorHandling.AppException;
910
import com.axway.apim.setup.it.ExportManagerConfigTestAction;
1011
import com.axway.apim.setup.it.ImportManagerConfigTestAction;
@@ -55,9 +56,16 @@ public void runUpdateConfiguration(@Optional @CitrusResource TestContext context
5556

5657
echo("####### Validate configuration has been applied #######");
5758
http(builder -> builder.client("apiManager").send().get("/config").header("Content-Type", "application/json"));
58-
59-
http(builder -> builder.client("apiManager").receive().response(HttpStatus.OK).messageType(MessageType.JSON)
60-
.validate("$.portalName", "${portalName}"));
59+
if(APIManagerAdapter.hasAPIManagerVersion("7.7.20200130")) {
60+
http(builder -> builder.client("apiManager").receive().response(HttpStatus.OK).messageType(MessageType.JSON)
61+
.validate("$.portalName", "${portalName}")
62+
.validate("$.apiImportEditable", "true")
63+
);
64+
} else {
65+
http(builder -> builder.client("apiManager").receive().response(HttpStatus.OK).messageType(MessageType.JSON)
66+
.validate("$.portalName", "${portalName}"));
67+
}
68+
6169

6270
echo("####### Import configuration #######");
6371
createVariable(PARAM_CONFIGFILE, PACKAGE + "apimanager-config.json");

0 commit comments

Comments
 (0)