diff --git a/connectors/connectors-common-library/src/main/java/io/camunda/connector/common/model/CommonRequest.java b/connectors/connectors-common-library/src/main/java/io/camunda/connector/common/model/CommonRequest.java index 6a42de90d9..3082170b64 100644 --- a/connectors/connectors-common-library/src/main/java/io/camunda/connector/common/model/CommonRequest.java +++ b/connectors/connectors-common-library/src/main/java/io/camunda/connector/common/model/CommonRequest.java @@ -27,7 +27,7 @@ public class CommonRequest { @NotBlank - @Pattern(regexp = "^(http://|https://|secrets).*$") + @Pattern(regexp = "^(http://|https://|secrets|\\{\\{).*$") @Secret private String url; diff --git a/connectors/graphql/src/test/java/io/camunda/connector/graphql/GraphQLFunctionInputValidationTest.java b/connectors/graphql/src/test/java/io/camunda/connector/graphql/GraphQLFunctionInputValidationTest.java index 99c35c80ea..b8659eb8fb 100644 --- a/connectors/graphql/src/test/java/io/camunda/connector/graphql/GraphQLFunctionInputValidationTest.java +++ b/connectors/graphql/src/test/java/io/camunda/connector/graphql/GraphQLFunctionInputValidationTest.java @@ -81,7 +81,7 @@ void shouldRaiseException_WhenExecuted_EndpointMalformed(final String input) { assertThat(exception.getMessage()) .contains( "Found constraints violated while validating input", - "must match \"^(http://|https://|secrets).*$\""); + "must match \"^(http://|https://|secrets|\\{\\{).*$\""); } @ParameterizedTest(name = "Validate null field # {index}") diff --git a/connectors/http-json/src/test/java/io/camunda/connector/http/BaseTest.java b/connectors/http-json/src/test/java/io/camunda/connector/http/BaseTest.java index 7fdd277d2b..5c1e72c841 100644 --- a/connectors/http-json/src/test/java/io/camunda/connector/http/BaseTest.java +++ b/connectors/http-json/src/test/java/io/camunda/connector/http/BaseTest.java @@ -70,6 +70,7 @@ interface Body { protected interface ActualValue { String URL = "https://camunda.io/http-endpoint"; + String URL_WITH_PATH = "https://camunda.io/http-endpoint/path"; String METHOD = "GET"; String CONNECT_TIMEOUT = "50"; diff --git a/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionInputValidationTest.java b/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionInputValidationTest.java index de454200e3..27cf0161c0 100644 --- a/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionInputValidationTest.java +++ b/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionInputValidationTest.java @@ -90,7 +90,7 @@ void shouldRaiseException_WhenExecuted_EndpointMalformed(final String input) { assertThat(exception.getMessage()) .contains( "Found constraints violated while validating input", - "must match \"^(http://|https://|secrets).*$\""); + "must match \"^(http://|https://|secrets|\\{\\{).*$\""); } @ParameterizedTest(name = "Validate null field # {index}") diff --git a/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionSecretsTest.java b/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionSecretsTest.java index b9291c3d67..856136f506 100644 --- a/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionSecretsTest.java +++ b/connectors/http-json/src/test/java/io/camunda/connector/http/HttpJsonFunctionSecretsTest.java @@ -52,7 +52,7 @@ void replaceSecrets_shouldReplaceRequestSecrets(String input) { // When context.replaceSecrets(httpJsonRequest); // Then should replace secrets - assertThat(httpJsonRequest.getUrl()).isEqualTo(ActualValue.URL); + assertThat(httpJsonRequest.getUrl()).isIn(ActualValue.URL, ActualValue.URL_WITH_PATH); assertThat(httpJsonRequest.getMethod()).isEqualTo(ActualValue.METHOD); assertThat(httpJsonRequest.getConnectionTimeoutInSeconds()) .isEqualTo(ActualValue.CONNECT_TIMEOUT); diff --git a/connectors/http-json/src/test/resources/requests/success-cases-replace-secrets.json b/connectors/http-json/src/test/resources/requests/success-cases-replace-secrets.json index 599b93de0f..881e5477ca 100644 --- a/connectors/http-json/src/test/resources/requests/success-cases-replace-secrets.json +++ b/connectors/http-json/src/test/resources/requests/success-cases-replace-secrets.json @@ -103,5 +103,53 @@ }, "text": "{{secrets.TEXT_PART_1_KEY}}{{secrets.TEXT_PART_2_KEY}}{{secrets.TEXT_PART_3_KEY}}" } + }, + { + "url": "{{secrets.URL_KEY}}", + "method": "secrets.METHOD_KEY", + "authentication": { + "type": "noAuth" + }, + "queryParameters": { + "q": "secrets.QUERY_PARAMETER_KEY", + "priority": "secrets.PRIORITY_KEY" + }, + "headers": { + "X-Camunda-Cluster-ID": "secrets.CLUSTER_ID_KEY", + "User-Agent": "secrets.USER_AGENT_KEY" + }, + "connectionTimeoutInSeconds":"secrets.CONNECT_TIMEOUT_KEY", + "body": { + "customer": { + "id": "startId plus {{secrets.CUSTOMER_ID_KEY}}", + "name": "{{secrets.NAME_KEY}} plus some text", + "email": "start email plus {{secrets.EMAIL_KEY}} plus end email" + }, + "text": "secrets.TEXT_KEY" + } + }, + { + "url": "{{secrets.URL_KEY}}/path", + "method": "secrets.METHOD_KEY", + "authentication": { + "type": "noAuth" + }, + "queryParameters": { + "q": "secrets.QUERY_PARAMETER_KEY", + "priority": "secrets.PRIORITY_KEY" + }, + "headers": { + "X-Camunda-Cluster-ID": "secrets.CLUSTER_ID_KEY", + "User-Agent": "secrets.USER_AGENT_KEY" + }, + "connectionTimeoutInSeconds":"secrets.CONNECT_TIMEOUT_KEY", + "body": { + "customer": { + "id": "startId plus {{secrets.CUSTOMER_ID_KEY}}", + "name": "{{secrets.NAME_KEY}} plus some text", + "email": "start email plus {{secrets.EMAIL_KEY}} plus end email" + }, + "text": "secrets.TEXT_KEY" + } } ] \ No newline at end of file