You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/08/24 08:39:58 UTC

[camel] branch master updated (f3a5c31 -> ad66cb2)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from f3a5c31  Upgrade RxJava to version 2.2.1
     new d03f64f  Improved the Slack Verifier Extension after the Slack Consumer has been implemented
     new ad66cb2  Fixed CS

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../slack/SlackComponentVerifierExtension.java     | 112 +++++++++++++++------
 .../slack/SlackComponentVerifierExtensionTest.java |  58 ++++++++++-
 .../camel/component/slack/SlackConsumerTest.java   |   2 +-
 3 files changed, 139 insertions(+), 33 deletions(-)


[camel] 02/02: Fixed CS

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ad66cb2fd6d5bc12b890c222dfc75d326a33bc3a
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Aug 24 10:39:08 2018 +0200

    Fixed CS
---
 .../camel/component/slack/SlackComponentVerifierExtension.java      | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
index 0541f08..9cdb350 100644
--- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
+++ b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
@@ -60,10 +60,12 @@ public class SlackComponentVerifierExtension extends DefaultComponentVerifierExt
         ResultBuilder builder = ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.PARAMETERS);
 
         if (ObjectHelper.isEmpty(parameters.get("token")) && ObjectHelper.isEmpty(parameters.get("webhookUrl"))) {
-            builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, "You must specify a webhookUrl (for producer) or a token (for consumer)").parameterKey("webhookUrl").parameterKey("token").build());
+            builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, 
+                    "You must specify a webhookUrl (for producer) or a token (for consumer)").parameterKey("webhookUrl").parameterKey("token").build());
         }
         if (ObjectHelper.isNotEmpty(parameters.get("token")) && ObjectHelper.isNotEmpty(parameters.get("webhookUrl"))) {
-            builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, "You must specify a webhookUrl (for producer) or a token (for consumer). You can't specify both.").parameterKey("webhookUrl").parameterKey("token").build());
+            builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, 
+                    "You must specify a webhookUrl (for producer) or a token (for consumer). You can't specify both.").parameterKey("webhookUrl").parameterKey("token").build());
         }
         return builder.build();
     }


[camel] 01/02: Improved the Slack Verifier Extension after the Slack Consumer has been implemented

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d03f64f88631bedca07d16809dd9e6ac4d0ae115
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Aug 24 10:36:23 2018 +0200

    Improved the Slack Verifier Extension after the Slack Consumer has been implemented
---
 .../slack/SlackComponentVerifierExtension.java     | 110 +++++++++++++++------
 .../slack/SlackComponentVerifierExtensionTest.java |  58 ++++++++++-
 .../camel/component/slack/SlackConsumerTest.java   |   2 +-
 3 files changed, 137 insertions(+), 33 deletions(-)

diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
index a4f3e88..0541f08 100644
--- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
+++ b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java
@@ -16,7 +16,14 @@
  */
 package org.apache.camel.component.slack;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
@@ -24,12 +31,16 @@ import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorHelper;
 import org.apache.camel.component.slack.helper.SlackMessage;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.message.BasicNameValuePair;
 import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
 
 public class SlackComponentVerifierExtension extends DefaultComponentVerifierExtension {
 
@@ -46,9 +57,14 @@ public class SlackComponentVerifierExtension extends DefaultComponentVerifierExt
     // *********************************
     @Override
     protected Result verifyParameters(Map<String, Object> parameters) {
-        ResultBuilder builder = ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.PARAMETERS)
-                .error(ResultErrorHelper.requiresOption("webhookUrl", parameters));
+        ResultBuilder builder = ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.PARAMETERS);
 
+        if (ObjectHelper.isEmpty(parameters.get("token")) && ObjectHelper.isEmpty(parameters.get("webhookUrl"))) {
+            builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, "You must specify a webhookUrl (for producer) or a token (for consumer)").parameterKey("webhookUrl").parameterKey("token").build());
+        }
+        if (ObjectHelper.isNotEmpty(parameters.get("token")) && ObjectHelper.isNotEmpty(parameters.get("webhookUrl"))) {
+            builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, "You must specify a webhookUrl (for producer) or a token (for consumer). You can't specify both.").parameterKey("webhookUrl").parameterKey("token").build());
+        }
         return builder.build();
     }
 
@@ -57,45 +73,79 @@ public class SlackComponentVerifierExtension extends DefaultComponentVerifierExt
     // *********************************
     @Override
     protected Result verifyConnectivity(Map<String, Object> parameters) {
-        return ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.CONNECTIVITY)
-                .error(parameters, this::verifyCredentials).build();
+        return ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.CONNECTIVITY).error(parameters, this::verifyCredentials).build();
     }
 
     private void verifyCredentials(ResultBuilder builder, Map<String, Object> parameters) {
 
-        String webhookUrl = (String) parameters.get("webhookUrl");
+        String webhookUrl = (String)parameters.get("webhookUrl");
 
-        try {
-            HttpClient client = HttpClientBuilder.create().useSystemProperties().build();
-            HttpPost httpPost = new HttpPost(webhookUrl);
+        if (ObjectHelper.isNotEmpty(webhookUrl)) {
 
-            // Build Helper object
-            SlackMessage slackMessage;
-            slackMessage = new SlackMessage();
-            slackMessage.setText("Test connection");
+            try {
+                HttpClient client = HttpClientBuilder.create().useSystemProperties().build();
+                HttpPost httpPost = new HttpPost(webhookUrl);
 
-            // Set the post body
-            String json = asJson(slackMessage);
-            StringEntity body = new StringEntity(json);
+                // Build Helper object
+                SlackMessage slackMessage;
+                slackMessage = new SlackMessage();
+                slackMessage.setText("Test connection");
 
-            // Do the post
-            httpPost.setEntity(body);
+                // Set the post body
+                String json = asJson(slackMessage);
+                StringEntity body = new StringEntity(json);
 
-            HttpResponse response = client.execute(httpPost);
+                // Do the post
+                httpPost.setEntity(body);
+                
+                HttpResponse response = client.execute(httpPost);
 
-            // 2xx is OK, anything else we regard as failure
-            if (response.getStatusLine().getStatusCode() < 200 || response.getStatusLine().getStatusCode() > 299) {
-                builder.error(ResultErrorBuilder
-                        .withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION,
-                                "Invalid webhookUrl")
-                        .parameterKey("webhookUrl").build());
+                // 2xx is OK, anything else we regard as failure
+                if (response.getStatusLine().getStatusCode() < 200 || response.getStatusLine().getStatusCode() > 299) {
+                    builder
+                        .error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid webhookUrl").parameterKey("webhookUrl").build());
+                }
+            } catch (Exception e) {
+                builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid webhookUrl").parameterKey("webhookUrl").build());
             }
-        } catch (Exception e) {
-            builder.error(ResultErrorBuilder
-                    .withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION,
-                            "Invalid webhookUrl")
-                    .parameterKey("webhookUrl").build());
+        } else if (ObjectHelper.isNotEmpty((String)parameters.get("token"))) {
+            String token = (String)parameters.get("token");
+
+            try {
+                HttpClient client = HttpClientBuilder.create().useSystemProperties().build();
+                HttpPost httpPost = new HttpPost("https://slack.com/api/channels.list");
+
+                List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
+                params.add(new BasicNameValuePair("token", token));
+                httpPost.setEntity(new UrlEncodedFormEntity(params));
+
+                HttpResponse response = client.execute(httpPost);
+
+                String jsonString = readResponse(response.getEntity().getContent());
+                if (response.getStatusLine().getStatusCode() < 200 || response.getStatusLine().getStatusCode() > 299) {
+                    builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid token").parameterKey("token").build());
+                }
+                JSONParser parser = new JSONParser();
+                JSONObject obj = (JSONObject)parser.parse(jsonString);
+                if (obj.get("ok") != null && obj.get("ok").equals(false)) {
+                    builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid token").parameterKey("token").build());
+                }
+            } catch (Exception e) {
+                builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid token").parameterKey("token").build());
+            }
+
+        }
+    }
+
+    private String readResponse(InputStream s) throws IOException, UnsupportedEncodingException {
+        ByteArrayOutputStream result = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int length;
+        while ((length = s.read(buffer)) != -1) {
+            result.write(buffer, 0, length);
         }
+        String jsonString = result.toString(StandardCharsets.UTF_8.name());
+        return jsonString;
     }
 
     protected String asJson(SlackMessage message) {
@@ -111,4 +161,4 @@ public class SlackComponentVerifierExtension extends DefaultComponentVerifierExt
         return JSONObject.toJSONString(jsonObject);
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackComponentVerifierExtensionTest.java b/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackComponentVerifierExtensionTest.java
index 74418c5..2b546b3 100644
--- a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackComponentVerifierExtensionTest.java
+++ b/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackComponentVerifierExtensionTest.java
@@ -36,7 +36,7 @@ public class SlackComponentVerifierExtensionTest extends CamelTestSupport {
     }
 
     @Test
-    public void testParameters() throws Exception {
+    public void testParametersWebhook() throws Exception {
         Component component = context().getComponent("slack");
 
         ComponentVerifierExtension verifier = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
@@ -48,9 +48,51 @@ public class SlackComponentVerifierExtensionTest extends CamelTestSupport {
 
         Assert.assertEquals(ComponentVerifierExtension.Result.Status.OK, result.getStatus());
     }
+    
+    @Test
+    public void testParametersToken() throws Exception {
+        Component component = context().getComponent("slack");
+
+        ComponentVerifierExtension verifier = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
+
+        Map<String, Object> parameters = new HashMap<>();
+        parameters.put("token", "l");
+
+        ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters);
+
+        Assert.assertEquals(ComponentVerifierExtension.Result.Status.OK, result.getStatus());
+    }
+    
+    @Test
+    public void testParametersEmpty() throws Exception {
+        Component component = context().getComponent("slack");
+
+        ComponentVerifierExtension verifier = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
+
+        Map<String, Object> parameters = new HashMap<>();
+
+        ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters);
+
+        Assert.assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
+    }
+    
+    @Test
+    public void testParametersWebhookUrlTokenBoth() throws Exception {
+        Component component = context().getComponent("slack");
+
+        ComponentVerifierExtension verifier = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
+
+        Map<String, Object> parameters = new HashMap<>();
+        parameters.put("token", "l");
+        parameters.put("webhookUrl", "l");
+
+        ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters);
+
+        Assert.assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
+    }
 
     @Test
-    public void testConnectivity() throws Exception {
+    public void testConnectivityWebhook() throws Exception {
         Component component = context().getComponent("slack");
         ComponentVerifierExtension verifier = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
 
@@ -62,4 +104,16 @@ public class SlackComponentVerifierExtensionTest extends CamelTestSupport {
         Assert.assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
     }
 
+    @Test
+    public void testConnectivityToken() throws Exception {
+        Component component = context().getComponent("slack");
+        ComponentVerifierExtension verifier = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
+
+        Map<String, Object> parameters = new HashMap<>();
+        parameters.put("token", "l");
+
+        ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
+
+        Assert.assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
+    }
 }
diff --git a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackConsumerTest.java b/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackConsumerTest.java
index 21f393d..2a439cd 100644
--- a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackConsumerTest.java
+++ b/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackConsumerTest.java
@@ -28,7 +28,7 @@ public class SlackConsumerTest extends CamelTestSupport {
     @Test
     public void testConsumePrefixedMessages() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
+        mock.expectedMessageCount(9);
         
         assertMockEndpointsSatisfied();
     }