Skip to content

Commit 0f45369

Browse files
committed
Send image tests
1 parent e796c2f commit 0f45369

File tree

2 files changed

+69
-20
lines changed

2 files changed

+69
-20
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,4 @@ jobs:
3636
java-version: ${{ matrix.java }}
3737
cache: maven
3838
- name: Compile with Maven
39-
run: mvn --batch-mode clean verify
40-
- name: Run Codecov
41-
uses: codecov/codecov-action@v4
39+
run: mvn --batch-mode clean verify
Lines changed: 68 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.vonage.client.kt
22

3+
import com.fasterxml.jackson.databind.ObjectMapper
34
import com.marcinziolo.kotlin.wiremock.*
45
import com.vonage.client.messages.MessageRequest
56
import org.junit.jupiter.api.Test
@@ -8,21 +9,26 @@ import kotlin.test.assertEquals
89

910
class MessagesTest : AbstractTest() {
1011
val messagesClient = vonageClient.messages
12+
val messageUuid = UUID.fromString("aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab")
13+
val mmsChannel = "mms"
14+
val whatsappChannel = "whatsapp"
15+
val viberChannel = "viber_service"
16+
val messengerChannel = "messenger"
1117
val fromNumber = "447700900001"
1218
val toNumber = "447712345689"
1319
val text = "Hello, World!"
14-
val messageUuid = UUID.fromString("aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab")
20+
val caption = "Additional text to accompany the media"
21+
val imageUrl = "https://example.com/image.jpg"
22+
val captionMap = mutableMapOf("caption" to caption)
1523

16-
private fun mockResponse(expectedBodyParams: Map<String, String>) {
24+
private fun mockResponse(expectedBodyParams: Map<String, Any>) {
1725
wiremock.post {
1826
url equalTo "/v1/messages"
1927
headers contains "User-Agent" like "vonage-java-sdk.*"
2028
headers contains "Authorization" like "Bearer eyJ.+"
2129
headers contains "Content-Type" equalTo "application/json"
2230
headers contains "Accept" equalTo "application/json"
23-
for (entry in expectedBodyParams.entries) {
24-
body contains entry.key equalTo entry.value
25-
}
31+
body equalTo ObjectMapper().writeValueAsString(expectedBodyParams)
2632
} returns {
2733
header = "Content-Type" to "application/json"
2834
statusCode = 202
@@ -34,44 +40,89 @@ class MessagesTest : AbstractTest() {
3440
}
3541
}
3642

37-
private fun testSend(expectedBodyParams: Map<String, String>, req: MessageRequest) {
43+
private fun testSend(expectedBodyParams: Map<String, Any>, req: MessageRequest) {
3844
mockResponse(expectedBodyParams)
3945
assertEquals(messageUuid, messagesClient.send(req))
4046
}
4147

42-
private fun expectedTextBody(channel: String): Map<String, String> = mapOf(
43-
"message_type" to "text",
44-
"text" to text,
45-
"to" to toNumber,
46-
"from" to fromNumber,
47-
"channel" to channel
48-
)
48+
private fun baseBody(messageType: String, channel: String): Map<String, Any> =
49+
mapOf(
50+
"message_type" to messageType,
51+
"to" to toNumber,
52+
"from" to fromNumber,
53+
"channel" to channel
54+
)
55+
56+
private fun textBody(channel: String): Map<String, Any> =
57+
baseBody("text", channel) + mapOf("text" to text)
58+
59+
private fun mediaBody(channel: String, messageType: String, url: String, additionalParams: Map<String, Any>? = null): Map<String, Any> =
60+
baseBody(messageType, channel) + mapOf(messageType to mapOf("url" to url) + (additionalParams ?: mapOf()))
61+
62+
private fun imageBody(channel: String, additionalParams : Map<String, Any>? = null): Map<String, Any> =
63+
mediaBody(channel, "image", imageUrl, additionalParams)
4964

5065
@Test
5166
fun `send SMS`() {
52-
testSend(expectedTextBody("sms"), smsText {
67+
testSend(textBody("sms"), smsText {
5368
from(fromNumber); to(toNumber); text(text)
5469
})
5570
}
5671

5772
@Test
5873
fun `send WhatsApp text`() {
59-
testSend(expectedTextBody("whatsapp"), whatsappText {
74+
testSend(textBody(whatsappChannel), whatsappText {
6075
from(fromNumber); to(toNumber); text(text)
6176
})
6277
}
6378

6479
@Test
6580
fun `send Viber text`() {
66-
testSend(expectedTextBody("viber_service"), viberText {
81+
testSend(textBody(viberChannel), viberText {
6782
from(fromNumber); to(toNumber); text(text)
6883
})
6984
}
7085

7186
@Test
7287
fun `send Messenger text`() {
73-
testSend(expectedTextBody("messenger"), messengerText {
88+
testSend(textBody(messengerChannel), messengerText {
7489
from(fromNumber); to(toNumber); text(text)
7590
})
7691
}
92+
93+
@Test
94+
fun `send MMS vCard`() {
95+
val vcardUrl = "https://example.com/conatact.vcf"
96+
testSend(mediaBody(mmsChannel, "vcard", vcardUrl, captionMap), mmsVcard {
97+
from(fromNumber); to(toNumber); url(vcardUrl); caption(caption)
98+
})
99+
}
100+
101+
@Test
102+
fun `send MMS image`() {
103+
testSend(imageBody(mmsChannel, captionMap), mmsImage {
104+
from(fromNumber); to(toNumber); url(imageUrl); caption(caption)
105+
})
106+
}
107+
108+
@Test
109+
fun `send WhatsApp image`() {
110+
testSend(imageBody(whatsappChannel, captionMap), whatsappImage {
111+
from(fromNumber); to(toNumber); url(imageUrl); caption(caption)
112+
})
113+
}
114+
115+
@Test
116+
fun `send Viber image`() {
117+
testSend(imageBody(viberChannel), viberImage {
118+
from(fromNumber); to(toNumber); url(imageUrl)
119+
})
120+
}
121+
122+
@Test
123+
fun `send Messenger image`() {
124+
testSend(imageBody(messengerChannel), messengerImage {
125+
from(fromNumber); to(toNumber); url(imageUrl)
126+
})
127+
}
77128
}

0 commit comments

Comments
 (0)