Skip to content

Commit 4081ad7

Browse files
authored
Add unit test for SupportedParameters (#1635)
1 parent f7943c2 commit 4081ad7

File tree

2 files changed

+97
-3
lines changed

2 files changed

+97
-3
lines changed

multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/model/SupportedParameters.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ public class SupportedParameters {
127127

128128
// Required dependency parameters:
129129
public static final String SERVICE_BINDING_CONFIG = "config";
130-
public static final String SERVICE_BINDING_CONFIG_PATH = "config-path";
131130
public static final String MANAGED = "managed";
132131
public static final String ENV_VAR_NAME = "env-var-name";
133132
public static final String BINDING_NAME = "binding-name";
@@ -198,14 +197,17 @@ public class SupportedParameters {
198197
REGISTER_SERVICE_URL, REGISTER_SERVICE_URL_SERVICE_NAME,
199198
REGISTER_SERVICE_URL_SERVICE_URL, MODULE_CONFIG, MANAGED, PATH,
200199
APPS_UPLOAD_TIMEOUT, APPS_TASK_EXECUTION_TIMEOUT,
201-
APPS_START_TIMEOUT, APPS_STAGE_TIMEOUT);
200+
APPS_START_TIMEOUT, APPS_STAGE_TIMEOUT,
201+
READINESS_HEALTH_CHECK_HTTP_ENDPOINT,
202+
READINESS_HEALTH_CHECK_INVOCATION_TIMEOUT, READINESS_HEALTH_CHECK_TYPE,
203+
READINESS_HEALTH_CHECK_INTERVAL, DELETE_SERVICE_KEY_AFTER_DEPLOYMENT);
202204

203205
public static final Set<String> RESOURCE_PARAMETERS = Set.of(APPLY_NAMESPACE, SERVICE_CONFIG, SYSLOG_DRAIN_URL, DEFAULT_CONTAINER_NAME,
204206
DEFAULT_SERVICE_NAME, DEFAULT_XS_APP_NAME, SERVICE, SERVICE_KEYS,
205207
SERVICE_KEY_NAME, SERVICE_NAME, SERVICE_PLAN, SERVICE_TAGS, SERVICE_BROKER,
206208
SKIP_SERVICE_UPDATES, TYPE, PROVIDER_ID, PROVIDER_NID, TARGET,
207209
SERVICE_CONFIG_PATH, FILTER, MANAGED, VERSION, PATH, MEMORY,
208-
FAIL_ON_SERVICE_UPDATE);
210+
FAIL_ON_SERVICE_UPDATE, SERVICE_PROVIDER, SERVICE_VERSION);
209211
public static final Set<String> GLOBAL_PARAMETERS = Set.of(KEEP_EXISTING_ROUTES, APPS_UPLOAD_TIMEOUT, APPS_TASK_EXECUTION_TIMEOUT,
210212
APPS_START_TIMEOUT, APPS_STAGE_TIMEOUT, APPLY_NAMESPACE,
211213
ENABLE_PARALLEL_DEPLOYMENTS, DEPLOY_MODE);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package org.cloudfoundry.multiapps.controller.core.model;
2+
3+
import java.lang.reflect.Field;
4+
import java.util.ArrayList;
5+
import java.util.Arrays;
6+
import java.util.Collection;
7+
import java.util.HashSet;
8+
import java.util.Set;
9+
import java.util.stream.Collectors;
10+
11+
import org.junit.jupiter.api.Test;
12+
13+
import static org.junit.jupiter.api.Assertions.assertTrue;
14+
15+
public class SupportedParameterTest {
16+
17+
private static final String DEFINED_MISSING_PARAMETERS_MESSAGE = "The following parameters are defined, but are not added to any structure: ";
18+
private static final String FIX_MISSING_PARAMETERS_INSTRUCTIONS = ".\nTo resolve this, add the missing parameters to the appropriate collection in the SupportedParameters class.";
19+
20+
private static final Set<String> GENERAL_PARAMETERS = Set.of(SupportedParameters.XS_TARGET_API_URL,
21+
SupportedParameters.APPLY_NAMESPACE_SERVICES,
22+
SupportedParameters.XS_AUTHORIZATION_ENDPOINT,
23+
SupportedParameters.APPLY_NAMESPACE_AS_SUFFIX,
24+
SupportedParameters.DEPLOY_TARGET,
25+
SupportedParameters.APPLY_NAMESPACE_APPS,
26+
SupportedParameters.APPLY_NAMESPACE_ROUTES,
27+
SupportedParameters.DEPLOY_SERVICE_URL, SupportedParameters.NAMESPACE,
28+
SupportedParameters.MTA_VERSION);
29+
30+
private static final Set<String> CONFIGURATION_REFERENCE_PARAMETERS = Set.of(SupportedParameters.PROVIDER_NAMESPACE,
31+
SupportedParameters.DEPRECATED_CONFIG_MTA_PROVIDES_DEPENDENCY,
32+
SupportedParameters.MTA_ID,
33+
SupportedParameters.DEPRECATED_CONFIG_MTA_MODULE);
34+
35+
private static final Set<String> NESTED_PARAMETERS = Set.of(SupportedParameters.IDLE_ROUTE, SupportedParameters.VCAP_APPLICATION_ENV,
36+
SupportedParameters.VCAP_SERVICES_ENV,
37+
SupportedParameters.USER_PROVIDED_ENV, SupportedParameters.NO_HOSTNAME);
38+
39+
@Test
40+
public void allFieldsShouldBeWhitelisted() throws IllegalAccessException {
41+
Set<String> supportedParameters = getSupportedParameters();
42+
Collection<String> strings = discoverAllParameterConstants();
43+
44+
Set<String> missing = strings.stream()
45+
.filter(f -> !supportedParameters.contains(f))
46+
.collect(Collectors.toSet());
47+
48+
assertTrue(missing.isEmpty(),
49+
() -> DEFINED_MISSING_PARAMETERS_MESSAGE + missing +
50+
FIX_MISSING_PARAMETERS_INSTRUCTIONS);
51+
}
52+
53+
private Set<String> getSupportedParameters() {
54+
Set<String> supportedParameters = new HashSet<>();
55+
fillWithSupportedParameters(supportedParameters);
56+
fillWithNonEntitySpecificSupportedParameters(supportedParameters);
57+
return supportedParameters;
58+
}
59+
60+
private void fillWithSupportedParameters(Set<String> supportedParameters) {
61+
supportedParameters.addAll(SupportedParameters.MODULE_PARAMETERS);
62+
supportedParameters.addAll(SupportedParameters.RESOURCE_PARAMETERS);
63+
supportedParameters.addAll(SupportedParameters.GLOBAL_PARAMETERS);
64+
supportedParameters.addAll(SupportedParameters.DEPENDENCY_PARAMETERS);
65+
supportedParameters.addAll(SupportedParameters.MODULE_HOOK_PARAMETERS);
66+
supportedParameters.addAll(SupportedParameters.READ_ONLY_MODULE_PARAMETERS);
67+
supportedParameters.addAll(SupportedParameters.READ_ONLY_SYSTEM_PARAMETERS);
68+
supportedParameters.addAll(SupportedParameters.READ_ONLY_RESOURCE_PARAMETERS);
69+
supportedParameters.addAll(SupportedParameters.DYNAMIC_RESOLVABLE_PARAMETERS);
70+
}
71+
72+
private void fillWithNonEntitySpecificSupportedParameters(Set<String> supportedParameters) {
73+
supportedParameters.addAll(GENERAL_PARAMETERS);
74+
supportedParameters.addAll(CONFIGURATION_REFERENCE_PARAMETERS);
75+
supportedParameters.addAll(NESTED_PARAMETERS);
76+
}
77+
78+
private Collection<String> discoverAllParameterConstants() throws IllegalAccessException {
79+
Collection<String> strings = new ArrayList<>();
80+
Class<?> clazz = SupportedParameters.class;
81+
for (Field field : clazz.getDeclaredFields()) {
82+
field.setAccessible(true);
83+
Object value = field.get(null);
84+
85+
if (value instanceof String) {
86+
strings.addAll(Arrays.asList((String) value));
87+
}
88+
89+
}
90+
return strings;
91+
}
92+
}

0 commit comments

Comments
 (0)