diff --git a/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtil.java b/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtil.java index 2868691f..a3409a6b 100644 --- a/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtil.java +++ b/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtil.java @@ -5,6 +5,9 @@ public final class DynamicParameterUtil { public static final String PATTERN_FOR_DYNAMIC_PARAMETERS = "'{'ds/{0}/{1}'}'"; public static final String REGEX_PATTERN_FOR_DYNAMIC_PARAMETERS = "^\\{ds[A-Za-z0-9_\\-\\.\\/]+\\}$"; + private static final String SERVICE_KEY_REFERENCE_PREFIX = "service-keys."; + private static final String CREDENTIALS_SEPARATOR = ".credentials."; + private DynamicParameterUtil() { } @@ -16,4 +19,16 @@ public static String getParameterName(String dynamicParameter) { return dynamicParameter.substring(dynamicParameter.lastIndexOf("/") + 1, dynamicParameter.lastIndexOf("}")); } + public static boolean isServiceKeyCredentialReference(String parameterName) { + return parameterName.startsWith(SERVICE_KEY_REFERENCE_PREFIX) && parameterName.contains(CREDENTIALS_SEPARATOR); + } + + public static String getServiceKeyName(String parameterName) { + return parameterName.substring(SERVICE_KEY_REFERENCE_PREFIX.length(), parameterName.indexOf(CREDENTIALS_SEPARATOR)); + } + + public static String getCredentialFieldPath(String parameterName) { + return parameterName.substring(parameterName.indexOf(CREDENTIALS_SEPARATOR) + CREDENTIALS_SEPARATOR.length()); + } + } diff --git a/multiapps-mta/src/test/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtilTest.java b/multiapps-mta/src/test/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtilTest.java index 71c80b8a..50fb3d78 100644 --- a/multiapps-mta/src/test/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtilTest.java +++ b/multiapps-mta/src/test/java/org/cloudfoundry/multiapps/mta/util/DynamicParameterUtilTest.java @@ -1,6 +1,7 @@ package org.cloudfoundry.multiapps.mta.util; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.stream.Stream; @@ -34,4 +35,41 @@ void testMatchDynamicParameter(String dynamicParameter, String relationshipName, assertTrue(dynamicParameter.matches(DynamicParameterUtil.REGEX_PATTERN_FOR_DYNAMIC_PARAMETERS)); } + static Stream getServiceKeyCredentialParameters() { + // dynamicParameter, relationshipName, serviceKeyName, credentialFieldPath + return Stream.of( + Arguments.of("{ds/ztis-config/service-keys.my-key.credentials.issuer}", "ztis-config", "my-key", "issuer"), + Arguments.of("{ds/ztis-config/service-keys.my-key.credentials.endpoints.url}", "ztis-config", "my-key", "endpoints.url")); + } + + @ParameterizedTest + @MethodSource(value = "getServiceKeyCredentialParameters") + void testIsServiceKeyCredentialReference(String dynamicParameter, String relationshipName, String serviceKeyName, + String credentialFieldPath) { + String parameterName = DynamicParameterUtil.getParameterName(dynamicParameter); + assertTrue(DynamicParameterUtil.isServiceKeyCredentialReference(parameterName)); + } + + @ParameterizedTest + @MethodSource(value = "getParameters") + void testServiceGuidIsNotServiceKeyCredentialReference(String dynamicParameter, String relationshipName, String parameterName) { + assertFalse(DynamicParameterUtil.isServiceKeyCredentialReference(parameterName)); + } + + @ParameterizedTest + @MethodSource(value = "getServiceKeyCredentialParameters") + void testParseOfServiceKeyName(String dynamicParameter, String relationshipName, String serviceKeyName, + String credentialFieldPath) { + String parameterName = DynamicParameterUtil.getParameterName(dynamicParameter); + assertEquals(serviceKeyName, DynamicParameterUtil.getServiceKeyName(parameterName)); + } + + @ParameterizedTest + @MethodSource(value = "getServiceKeyCredentialParameters") + void testParseOfCredentialFieldPath(String dynamicParameter, String relationshipName, String serviceKeyName, + String credentialFieldPath) { + String parameterName = DynamicParameterUtil.getParameterName(dynamicParameter); + assertEquals(credentialFieldPath, DynamicParameterUtil.getCredentialFieldPath(parameterName)); + } + }