diff --git a/data/rbac-schema/src/main/java/net/corda/rbac/schema/RbacKeys.java b/data/rbac-schema/src/main/java/net/corda/rbac/schema/RbacKeys.java index 35bae58a3..918575d53 100644 --- a/data/rbac-schema/src/main/java/net/corda/rbac/schema/RbacKeys.java +++ b/data/rbac-schema/src/main/java/net/corda/rbac/schema/RbacKeys.java @@ -55,6 +55,11 @@ private RbacKeys() { private static final String ALLOWED_USER_URL_CHARS = "[-._a-zA-Z0-9]"; public static final String USER_URL_REGEX = ALLOWED_USER_URL_CHARS + "{3,200}[%40]{0,3}" + ALLOWED_USER_URL_CHARS + "{0,50}"; + /** + * User property key and value regex. + */ + public static final String PROPERTY_KEY_VALUE_REGEX = "[-._a-zA-Z0-9]{1,255}"; + /** * CPI file checksum. */ diff --git a/data/rbac-schema/src/test/kotlin/net/corda/rbac/schema/TestPatternsMatch.kt b/data/rbac-schema/src/test/kotlin/net/corda/rbac/schema/TestPatternsMatch.kt index 5279dfc7e..91b39f067 100644 --- a/data/rbac-schema/src/test/kotlin/net/corda/rbac/schema/TestPatternsMatch.kt +++ b/data/rbac-schema/src/test/kotlin/net/corda/rbac/schema/TestPatternsMatch.kt @@ -10,6 +10,7 @@ import net.corda.rbac.schema.RbacKeys.HSM_CATEGORY_REGEX import net.corda.rbac.schema.RbacKeys.KEY_ID_REGEX import net.corda.rbac.schema.RbacKeys.KEY_SCHEME_REGEX import net.corda.rbac.schema.RbacKeys.OPTIONAL_QUERY_PARAMETER +import net.corda.rbac.schema.RbacKeys.PROPERTY_KEY_VALUE_REGEX import net.corda.rbac.schema.RbacKeys.TENANT_ID_REGEX import net.corda.rbac.schema.RbacKeys.USER_REGEX import net.corda.rbac.schema.RbacKeys.USER_URL_REGEX @@ -81,6 +82,14 @@ class TestPatternsMatch { assertFalse(wildcardMatch("0", USER_URL_REGEX)) } + @Test + fun testPropertyKeyValue() { + val validPropertyKey = "My_Property-key.1" + + assertTrue(wildcardMatch(validPropertyKey, PROPERTY_KEY_VALUE_REGEX)) + assertFalse(wildcardMatch("Invalid@", PROPERTY_KEY_VALUE_REGEX)) + } + @Test fun testCPIFileChecksum() { val validChecksum = "ABCDEF123456"