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 <reji...@yahoo.com>
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
+                            + "&region=" + 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
+                            + "&region=" + 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);
+    }
+
+}

Reply via email to