You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2017/01/27 12:56:38 UTC

[6/8] camel git commit: added unit tests for outgoing and incoming documents

added unit tests for outgoing and incoming documents


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fc745de0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fc745de0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fc745de0

Branch: refs/heads/master
Commit: fc745de0c5a1b9423423fe6eb078ace9b76ee53c
Parents: 17a5a4c
Author: Neffez <ma...@steffen-eitelmann.com>
Authored: Fri Jan 20 13:53:06 2017 +0100
Committer: Nicola Ferraro <ni...@gmail.com>
Committed: Fri Jan 27 13:56:19 2017 +0100

----------------------------------------------------------------------
 .../TelegramConsumerMediaDocumentTest.java      | 87 ++++++++++++++++++++
 .../telegram/TelegramProducerMediaTest.java     | 23 ++++++
 .../telegram/util/TelegramTestUtil.java         |  4 +
 .../messages/updates-media-document.json        | 35 ++++++++
 4 files changed, 149 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fc745de0/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java
new file mode 100644
index 0000000..268e3ec
--- /dev/null
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramConsumerMediaDocumentTest.java
@@ -0,0 +1,87 @@
+/**
+ * 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.telegram;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.telegram.model.IncomingDocument;
+import org.apache.camel.component.telegram.model.IncomingMessage;
+import org.apache.camel.component.telegram.model.UpdateResult;
+import org.apache.camel.component.telegram.util.TelegramTestSupport;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests the reception of messages without text having media content.
+ */
+public class TelegramConsumerMediaDocumentTest extends TelegramTestSupport {
+
+    @EndpointInject(uri = "mock:telegram")
+    private MockEndpoint endpoint;
+
+    @Before
+    public void mockAPIs() {
+        TelegramService api = mockTelegramService();
+
+        UpdateResult res = getJSONResource("messages/updates-media-document.json", UpdateResult.class);
+
+        UpdateResult defaultRes = getJSONResource("messages/updates-empty.json", UpdateResult.class);
+
+        when(api.getUpdates(any(), any(), any(), any()))
+                .thenReturn(res)
+                .thenAnswer((i) -> defaultRes);
+    }
+
+    @Test
+    public void testReceptionOfMessageWithADocument() throws Exception {
+        endpoint.expectedMinimumMessageCount(1);
+        endpoint.assertIsSatisfied();
+
+        Exchange mediaExchange = endpoint.getExchanges().get(0);
+        IncomingMessage msg = mediaExchange.getIn().getBody(IncomingMessage.class);
+
+        IncomingDocument document = msg.getDocument();
+
+        assertNotNull(document);
+        assertEquals("AgADBAADq6cxG0bQcwnUb4Cga-eXxnodQxkABLXiiSI1vzZK8XXXXXXX", document.getFileId());
+        assertEquals(Long.valueOf(12530), document.getFileSize());
+        assertEquals("file.png", document.getFileName());
+        assertEquals("image/png", document.getMimeType());
+        assertNotNull(document.getThumb());
+        assertEquals(Integer.valueOf(90), document.getThumb().getWidth());
+        assertEquals(Integer.valueOf(80), document.getThumb().getHeight());
+        assertEquals(Long.valueOf(1253), document.getThumb().getFileSize());
+        assertEquals("AgADBAADq6cxG0bQcwnUb4Cga-eXxnodQxkABLXiiSI1vzZK9XXXXXXX", document.getThumb().getFileId());
+    }
+
+    @Override
+    protected RoutesBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("telegram:bots/mock-token")
+                        .to("mock:telegram");
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/fc745de0/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java
index 8831ea4..f4a6c02 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.telegram.model.OutgoingAudioMessage;
+import org.apache.camel.component.telegram.model.OutgoingDocumentMessage;
 import org.apache.camel.component.telegram.model.OutgoingPhotoMessage;
 import org.apache.camel.component.telegram.model.OutgoingVideoMessage;
 import org.apache.camel.component.telegram.util.TelegramTestSupport;
@@ -128,6 +129,28 @@ public class TelegramProducerMediaTest extends TelegramTestSupport {
         assertEquals("Video", captor.getValue().getCaption());
     }
 
+    @Test
+    public void testRouteWithDocument() throws Exception {
+
+        TelegramService service = mockTelegramService();
+
+        Exchange ex = endpoint.createExchange();
+        ex.getIn().setHeader(TelegramConstants.TELEGRAM_MEDIA_TITLE_CAPTION, "Document");
+        ex.getIn().setHeader(TelegramConstants.TELEGRAM_MEDIA_TYPE, TelegramMediaType.DOCUMENT.name());
+        byte[] document = TelegramTestUtil.createSampleDocument();
+        ex.getIn().setBody(document);
+
+        context().createProducerTemplate().send(endpoint, ex);
+
+        ArgumentCaptor<OutgoingDocumentMessage> captor = ArgumentCaptor.forClass(OutgoingDocumentMessage.class);
+
+        Mockito.verify(service).sendMessage(eq("mock-token"), captor.capture());
+        assertEquals("my-id", captor.getValue().getChatId());
+        assertEquals(document, captor.getValue().getDocument());
+        assertEquals("file", captor.getValue().getFilenameWithExtension());
+        assertEquals("Document", captor.getValue().getCaption());
+    }
+
     @Override
     protected RoutesBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {

http://git-wip-us.apache.org/repos/asf/camel/blob/fc745de0/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java
index 1457314..1479c9c 100644
--- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java
+++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java
@@ -58,4 +58,8 @@ public final class TelegramTestUtil {
         return video;
     }
 
+    public static byte[] createSampleDocument() throws IOException {
+        byte[] document = IOUtils.readBytesFromStream(TelegramTestUtil.class.getResourceAsStream("/attachments/sample.png"));
+        return document;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/fc745de0/components/camel-telegram/src/test/resources/messages/updates-media-document.json
----------------------------------------------------------------------
diff --git a/components/camel-telegram/src/test/resources/messages/updates-media-document.json b/components/camel-telegram/src/test/resources/messages/updates-media-document.json
new file mode 100644
index 0000000..31891b6
--- /dev/null
+++ b/components/camel-telegram/src/test/resources/messages/updates-media-document.json
@@ -0,0 +1,35 @@
+{
+  "ok": true,
+  "result": [
+    {
+      "update_id": 525704899,
+      "message": {
+        "message_id": 180,
+        "from": {
+          "id": 1585844777,
+          "first_name": "John",
+          "last_name": "Doe"
+        },
+        "chat": {
+          "id": 158584478,
+          "first_name": "John",
+          "last_name": "Doe",
+          "type": "private"
+        },
+        "date": 1463479642,
+        "document": {
+          "file_id": "AgADBAADq6cxG0bQcwnUb4Cga-eXxnodQxkABLXiiSI1vzZK8XXXXXXX",
+          "file_size": 12530,
+          "file_name": "file.png",
+          "mime_type": "image/png",
+          "thumb": {
+            "file_id": "AgADBAADq6cxG0bQcwnUb4Cga-eXxnodQxkABLXiiSI1vzZK9XXXXXXX",
+            "width": 90,
+            "height": 80,
+            "file_size": 1253
+          }
+        }
+      }
+    }
+  ]
+}
\ No newline at end of file