This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 7e70ea1 CAMEL-16131 - Adding functional testing stubs (marked
Disabled by def… (#5001)
7e70ea1 is described below
commit 7e70ea1e98bc1f48a4734872025857f7ba675181
Author: Reji Mathews <[email protected]>
AuthorDate: Wed Feb 3 00:10:03 2021 -0500
CAMEL-16131 - Adding functional testing stubs (marked Disabled by def…
(#5001)
* CAMEL-16131 - Adding functional testing stubs (marked Disabled by
default) for optional verification against real huaweicloud services
Currently, the unit testing is done via mocked SdkClient. Additionally,
adding a disabled unit test case which can take in user parameters and perform
a test against real huaweicloud smn service to validate functional aspects.
* Code formatting
* CAMEL-16131 - Fixed sourcecheck test violations
---
.../smn/PublishTemplatedMessageFunctionalTest.java | 102 +++++++++++++++++++++
.../smn/PublishTextMessageFunctionalTest.java | 90 ++++++++++++++++++
2 files changed, 192 insertions(+)
diff --git
a/components/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageFunctionalTest.java
b/components/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageFunctionalTest.java
new file mode 100644
index 0000000..6096b44
--- /dev/null
+++
b/components/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageFunctionalTest.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.huaweicloud.smn;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.BindToRegistry;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
+import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class PublishTemplatedMessageFunctionalTest extends CamelTestSupport {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(PublishTemplatedMessageTest.class.getName());
+
+ private static final String AUTH_KEY = "replace_this_with_auth_key";
+ private static final String SECRET_KEY = "replace_this_with_secret_key";
+ private static final String TEMPLATE_NAME =
"replace_this_with_template_name";
+ private static final String NOTIFICATION_SUBJECT = "sample notification
subjectline";
+ private static final String TOPIC_NAME = "replace_this_with_topic_name";
+ private static final String PROJECT_ID = "replace_this_with_project_id";
+ private static final String REGION = "replace_this_with_region";
+
+ @BindToRegistry("serviceKeys")
+ ServiceKeys serviceKeys
+ = new ServiceKeys(AUTH_KEY, SECRET_KEY);
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ // populating tag values. user has to adjust the map entries according
to the structure of their respective templates
+ Map<String, String> tags = new HashMap<>();
+
+ // create a map of your placeholder variables
+ /*Example :
+ tags.put("name", "reji");
+ tags.put("phone", "1234567890");
+ */
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:publish_templated_message")
+ .setProperty(SmnProperties.NOTIFICATION_SUBJECT,
constant(NOTIFICATION_SUBJECT))
+ .setProperty(SmnProperties.NOTIFICATION_TOPIC_NAME,
constant(TOPIC_NAME))
+ .setProperty(SmnProperties.NOTIFICATION_TTL,
constant(60))
+ .setProperty(SmnProperties.TEMPLATE_TAGS,
constant(tags))
+ .setProperty(SmnProperties.TEMPLATE_NAME,
constant(TEMPLATE_NAME))
+
.to("hwcloud-smn:publishMessageService?serviceKeys=#serviceKeys&operation=publishAsTemplatedMessage"
+ + "&projectId=" + PROJECT_ID
+ + "®ion=" + REGION
+ + "&ignoreSslVerification=true")
+ .log("templated notification sent")
+ .to("mock:publish_templated_message_result");
+ }
+ };
+ }
+
+ /**
+ * following test cases should be manually enabled to perform test against
the actual huaweicloud simple
+ * notification server with real user credentials. To perform this test,
manually comment out the @Disabled
+ * annotation and enter relevant service parameters in the placeholders
above (static variables of this test class)
+ *
+ * @throws Exception
+ */
+ @Test
+ @Disabled("Manually enable this once you configure service parameters in
placeholders above")
+ public void testTemplatedNotificationSend() throws Exception {
+ MockEndpoint mock =
getMockEndpoint("mock:publish_templated_message_result");
+ mock.expectedMinimumMessageCount(1);
+ template.sendBody("direct:publish_templated_message", null);
+ Exchange responseExchange = mock.getExchanges().get(0);
+
+ mock.assertIsSatisfied();
+
+
assertNotNull(responseExchange.getProperty(SmnProperties.SERVICE_MESSAGE_ID));
+
assertNotNull(responseExchange.getProperty(SmnProperties.SERVICE_REQUEST_ID));
+
assertTrue(responseExchange.getProperty(SmnProperties.SERVICE_MESSAGE_ID).toString().length()
> 0);
+
assertTrue(responseExchange.getProperty(SmnProperties.SERVICE_REQUEST_ID).toString().length()
> 0);
+ }
+
+}
diff --git
a/components/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageFunctionalTest.java
b/components/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageFunctionalTest.java
new file mode 100644
index 0000000..b535ffc
--- /dev/null
+++
b/components/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageFunctionalTest.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.huaweicloud.smn;
+
+import org.apache.camel.BindToRegistry;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
+import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class PublishTextMessageFunctionalTest extends CamelTestSupport {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(PublishTemplatedMessageTest.class.getName());
+
+ private static final String AUTH_KEY = "replace_this_with_auth_key";
+ private static final String SECRET_KEY = "replace_this_with_secret_key";
+ private static final String NOTIFICATION_SUBJECT = "sample notification
subjectline";
+ private static final String TOPIC_NAME = "replace_this_with_topic_name";
+ private static final String PROJECT_ID = "replace_this_with_project_id";
+ private static final String REGION = "replace_this_with_region";
+
+ @BindToRegistry("serviceKeys")
+ ServiceKeys serviceKeys
+ = new ServiceKeys(AUTH_KEY, SECRET_KEY);
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:publish_text_message")
+ .setProperty(SmnProperties.NOTIFICATION_SUBJECT,
constant(NOTIFICATION_SUBJECT))
+ .setProperty(SmnProperties.NOTIFICATION_TOPIC_NAME,
constant(TOPIC_NAME))
+ .setProperty(SmnProperties.NOTIFICATION_TTL,
constant(60))
+
.to("hwcloud-smn:publishMessageService?operation=publishAsTextMessage&authKey="
+ AUTH_KEY
+ + "&secretKey=" + SECRET_KEY
+ + "&projectId=" + PROJECT_ID
+ + "®ion=" + REGION
+ + "&ignoreSslVerification=true")
+ .log("publish message successful")
+ .to("log:LOG?showAll=true")
+ .to("mock:publish_text_message_result");
+ }
+ };
+ }
+
+ /**
+ * following test cases should be manually enabled to perform test against
the actual huaweicloud simple
+ * notification server with real user credentials. To perform this test,
manually comment out the @Disabled
+ * annotation and enter relevant service parameters in the placeholders
above (static variables of this test class)
+ *
+ * @throws Exception
+ */
+ @Test
+ @Disabled("Manually enable this once you configure service parameters in
placeholders above")
+ public void testTemplatedNotificationSend() throws Exception {
+ MockEndpoint mock =
getMockEndpoint("mock:publish_text_message_result");
+ mock.expectedMinimumMessageCount(1);
+ template.sendBody("direct:publish_text_message", "sample notification
body");
+ Exchange responseExchange = mock.getExchanges().get(0);
+
+ mock.assertIsSatisfied();
+
+
assertNotNull(responseExchange.getProperty(SmnProperties.SERVICE_MESSAGE_ID));
+
assertNotNull(responseExchange.getProperty(SmnProperties.SERVICE_REQUEST_ID));
+
assertTrue(responseExchange.getProperty(SmnProperties.SERVICE_MESSAGE_ID).toString().length()
> 0);
+
assertTrue(responseExchange.getProperty(SmnProperties.SERVICE_REQUEST_ID).toString().length()
> 0);
+ }
+
+}