Skip to content

Commit 5bd2c68

Browse files
committed
Add more tests for coverage
1 parent 1c4826a commit 5bd2c68

File tree

10 files changed

+247
-0
lines changed

10 files changed

+247
-0
lines changed

Diff for: handlers/clickmobile/handler_test.go

+17
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,23 @@ var outgoingCases = []OutgoingTestCase{
206206
},
207207
},
208208
},
209+
{
210+
Label: "Response unexpected",
211+
MsgText: "Simple Message",
212+
MsgURN: "tel:+250788383383",
213+
MockResponses: map[string][]*httpx.MockResponse{
214+
"http://example.com/send": {
215+
httpx.NewMockResponse(200, nil, []byte(`{"code":"001","desc":"Database SQL Error"}`)),
216+
},
217+
},
218+
ExpectedRequests: []ExpectedRequest{
219+
{
220+
Headers: map[string]string{"Content-Type": "application/json"},
221+
Body: `{"app_id":"001-app","org_id":"001-org","user_id":"Username","timestamp":"20180411182430","auth_key":"3e1347ddb444d13aa23d11e097602be0","operation":"send","reference":"10","message_type":"1","src_address":"2020","dst_address":"+250788383383","message":"Simple Message"}`,
222+
},
223+
},
224+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
225+
},
209226
}
210227

211228
func TestOutgoing(t *testing.T) {

Diff for: handlers/clicksend/handler_test.go

+46
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,35 @@ const successResponse = `{
7272
]
7373
}`
7474

75+
const successResponseMissingMessageID = `{
76+
"http_code": 200,
77+
"response_code": "SUCCESS",
78+
"response_msg": "Here are your data.",
79+
"data": {
80+
"total_price": 0.28,
81+
"total_count": 2,
82+
"queued_count": 2,
83+
"messages": [
84+
{
85+
"direction": "out",
86+
"date": 1436871253,
87+
"to": "+61411111111",
88+
"body": "Jelly liquorice marshmallow candy carrot cake 4Eyffjs1vL.",
89+
"from": "sendmobile",
90+
"schedule": 1436874701,
91+
"message_id": "",
92+
"message_parts": 1,
93+
"message_price": 0.07,
94+
"custom_string": "this is a test",
95+
"user_id": 1,
96+
"subaccount_id": 1,
97+
"country": "AU",
98+
"carrier": "Telstra",
99+
"status": "SUCCESS"
100+
}
101+
]
102+
}`
103+
75104
const failureResponse = `{
76105
"http_code": 200,
77106
"response_code": "SUCCESS",
@@ -188,6 +217,23 @@ var outgoingCases = []OutgoingTestCase{
188217
},
189218
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
190219
},
220+
{
221+
Label: "Failure Response",
222+
MsgText: "Error Sending",
223+
MsgURN: "tel:+250788383383",
224+
MockResponses: map[string][]*httpx.MockResponse{
225+
"https://rest.clicksend.com/v3/sms/send": {
226+
httpx.NewMockResponse(200, nil, []byte(successResponseMissingMessageID)),
227+
},
228+
},
229+
ExpectedRequests: []ExpectedRequest{
230+
{
231+
Headers: map[string]string{"Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="},
232+
Body: `{"messages":[{"to":"+250788383383","from":"2020","body":"Error Sending","source":"courier"}]}`,
233+
},
234+
},
235+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
236+
},
191237
}
192238

193239
func TestOutgoing(t *testing.T) {

Diff for: handlers/firebase/handler_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,54 @@ var sendTestCases = []OutgoingTestCase{
387387
}},
388388
ExpectedError: courier.ErrConnectionFailed,
389389
},
390+
{
391+
Label: "Response Unexpected",
392+
MsgText: "Simple Message",
393+
MsgURN: "fcm:250788123123",
394+
MsgURNAuth: "auth1",
395+
MockResponses: map[string][]*httpx.MockResponse{
396+
"https://fcm.googleapis.com/v1/projects/foo-project-id/messages:send": {
397+
httpx.NewMockResponse(200, nil, []byte(`{"missing_name":"projects/foo-project-id/messages/123456-a"}`)),
398+
},
399+
},
400+
ExpectedRequests: []ExpectedRequest{{
401+
Headers: map[string]string{"Authorization": "Bearer FCMToken"},
402+
Body: `{"message":{"data":{"type":"rapidpro","title":"FCMTitle","message":"Simple Message","message_id":"10","session_status":""},"token":"auth1","android":{"priority":"high"}}}`,
403+
}},
404+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
405+
},
406+
{
407+
Label: "Response Unexpected",
408+
MsgText: "Simple Message",
409+
MsgURN: "fcm:250788123123",
410+
MsgURNAuth: "auth1",
411+
MockResponses: map[string][]*httpx.MockResponse{
412+
"https://fcm.googleapis.com/v1/projects/foo-project-id/messages:send": {
413+
httpx.NewMockResponse(200, nil, []byte(`{"name":"projects/not-our-project-id/messages/123456-a"}`)),
414+
},
415+
},
416+
ExpectedRequests: []ExpectedRequest{{
417+
Headers: map[string]string{"Authorization": "Bearer FCMToken"},
418+
Body: `{"message":{"data":{"type":"rapidpro","title":"FCMTitle","message":"Simple Message","message_id":"10","session_status":""},"token":"auth1","android":{"priority":"high"}}}`,
419+
}},
420+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
421+
},
422+
{
423+
Label: "Response Unexpected",
424+
MsgText: "Simple Message",
425+
MsgURN: "fcm:250788123123",
426+
MsgURNAuth: "auth1",
427+
MockResponses: map[string][]*httpx.MockResponse{
428+
"https://fcm.googleapis.com/v1/projects/foo-project-id/messages:send": {
429+
httpx.NewMockResponse(200, nil, []byte(`{"name":"projects/foo-project-id/messages/"}`)),
430+
},
431+
},
432+
ExpectedRequests: []ExpectedRequest{{
433+
Headers: map[string]string{"Authorization": "Bearer FCMToken"},
434+
Body: `{"message":{"data":{"type":"rapidpro","title":"FCMTitle","message":"Simple Message","message_id":"10","session_status":""},"token":"auth1","android":{"priority":"high"}}}`,
435+
}},
436+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
437+
},
390438
}
391439

392440
func setupBackend(mb *test.MockBackend) {

Diff for: handlers/rocketchat/handler_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,20 @@ var sendTestCases = []OutgoingTestCase{
178178
}},
179179
ExpectedError: courier.ErrConnectionFailed,
180180
},
181+
{
182+
Label: "Response Unexpected",
183+
MsgText: "Simple Message",
184+
MsgURN: "rocketchat:direct:john.doe#john.doe",
185+
MockResponses: map[string][]*httpx.MockResponse{
186+
"https://my.rocket.chat/api/apps/public/684202ed-1461-4983-9ea7-fde74b15026c/message": {
187+
httpx.NewMockResponse(201, nil, []byte(`{"missing":"0"}`)),
188+
},
189+
},
190+
ExpectedRequests: []ExpectedRequest{{
191+
Body: `{"user":"direct:john.doe","bot":"rocket.cat","text":"Simple Message"}`,
192+
}},
193+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
194+
},
181195
}
182196

183197
func TestOutgoing(t *testing.T) {

Diff for: handlers/slack/handler_test.go

+41
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,28 @@ var defaultSendTestCases = []OutgoingTestCase{
215215
ExpectedError: courier.ErrFailedWithReason("", "invalid_auth"),
216216
ExpectedLogErrors: []*clogs.LogError{clogs.NewLogError("", "", "invalid_auth")},
217217
},
218+
{
219+
Label: "Response Unexpected",
220+
MsgText: "Simple Message",
221+
MsgURN: "slack:U0123ABCDEF",
222+
MockResponses: map[string][]*httpx.MockResponse{
223+
"*/chat.postMessage": {
224+
httpx.NewMockResponse(200, nil, []byte(`{"channel":"U0123ABCDEF"}`)),
225+
},
226+
},
227+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
228+
},
229+
{
230+
Label: "Response Unexpected",
231+
MsgText: "Simple Message",
232+
MsgURN: "slack:U0123ABCDEF",
233+
MockResponses: map[string][]*httpx.MockResponse{
234+
"*/chat.postMessage": {
235+
httpx.NewMockResponse(200, nil, []byte(`{"ok":false,"channel":"U0123ABCDEF"}`)),
236+
},
237+
},
238+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
239+
},
218240
}
219241

220242
var fileSendTestCases = []OutgoingTestCase{
@@ -236,6 +258,25 @@ var fileSendTestCases = []OutgoingTestCase{
236258
{BodyContains: "image.png"},
237259
},
238260
},
261+
{
262+
Label: "Unexpected Response",
263+
MsgText: "",
264+
MsgURN: "slack:U0123ABCDEF",
265+
MsgAttachments: []string{"image/jpeg:https://foo.bar/image.png"},
266+
MockResponses: map[string][]*httpx.MockResponse{
267+
"*/image.png": {
268+
httpx.NewMockResponse(200, nil, []byte(`filetype... ...file bytes... ...end`)),
269+
},
270+
"*/files.upload": {
271+
httpx.NewMockResponse(200, nil, []byte(`{"ok":false,"file":{"id":"F1L3SL4CK1D"}}`)),
272+
},
273+
},
274+
ExpectedRequests: []ExpectedRequest{
275+
{},
276+
{BodyContains: "image.png"},
277+
},
278+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
279+
},
239280
}
240281

241282
func TestIncoming(t *testing.T) {

Diff for: handlers/start/handler_test.go

+18
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,24 @@ var defaultSendTestCases = []OutgoingTestCase{
260260
}},
261261
ExpectedError: courier.ErrResponseStatus,
262262
},
263+
{
264+
Label: "Response Unexpected",
265+
MsgText: "Simple Message ☺",
266+
MsgURN: "tel:+250788383383",
267+
MockResponses: map[string][]*httpx.MockResponse{
268+
"https://bulk.startmobile.ua/clients.php": {
269+
httpx.NewMockResponse(200, nil, []byte(`<status date='Wed, 25 May 2016 17:29:56 +0300'><id></id><state>Accepted</state></status>`)),
270+
},
271+
},
272+
ExpectedRequests: []ExpectedRequest{{
273+
Headers: map[string]string{
274+
"Content-Type": "application/xml; charset=utf8",
275+
"Authorization": "Basic VXNlcm5hbWU6UGFzc3dvcmQ=",
276+
},
277+
Body: `<message><service id="single" source="2020" validity="+12 hours"></service><to>+250788383383</to><body content-type="plain/text" encoding="plain">Simple Message ☺</body></message>`,
278+
}},
279+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
280+
},
263281
}
264282

265283
func TestOutgoing(t *testing.T) {

Diff for: handlers/telegram/handler_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,20 @@ var outgoingCases = []OutgoingTestCase{
919919
},
920920
ExpectedExtIDs: []string{"133"},
921921
},
922+
{
923+
Label: "Response Unexpected",
924+
MsgText: "Simple Message",
925+
MsgURN: "telegram:12345",
926+
MockResponses: map[string][]*httpx.MockResponse{
927+
"*/botauth_token/sendMessage": {
928+
httpx.NewMockResponse(200, nil, []byte(`{ "ok": true, "result": { "message_id": 0 } }`)),
929+
},
930+
},
931+
ExpectedRequests: []ExpectedRequest{
932+
{Form: url.Values{"text": {"Simple Message"}, "chat_id": {"12345"}, "parse_mode": []string{"Markdown"}, "reply_markup": {`{"remove_keyboard":true}`}}},
933+
},
934+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
935+
},
922936
{
923937
Label: "Unknown attachment type",
924938
MsgText: "My foo!",

Diff for: handlers/telesom/handler_test.go

+17
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/nyaruka/courier"
99
. "github.com/nyaruka/courier/handlers"
1010
"github.com/nyaruka/courier/test"
11+
"github.com/nyaruka/courier/utils/clogs"
1112
"github.com/nyaruka/gocommon/dates"
1213
"github.com/nyaruka/gocommon/httpx"
1314
"github.com/nyaruka/gocommon/urns"
@@ -158,6 +159,22 @@ var defaultSendTestCases = []OutgoingTestCase{
158159
}},
159160
ExpectedError: courier.ErrConnectionFailed,
160161
},
162+
{
163+
Label: "Response Unexpected",
164+
MsgText: "Simple Message",
165+
MsgURN: "tel:+252788383383",
166+
MockResponses: map[string][]*httpx.MockResponse{
167+
"http://telesom.com/sendsms_other*": {
168+
httpx.NewMockResponse(200, nil, []byte(`<return>Missing</return>`)),
169+
},
170+
},
171+
ExpectedRequests: []ExpectedRequest{{
172+
Form: url.Values{"msg": {"Simple Message"}, "to": {"0788383383"}, "from": {"2020"}, "key": {"D69BB824F88F20482B94ECF3822EBD84"}},
173+
Headers: map[string]string{"Content-Type": "application/x-www-form-urlencoded"},
174+
}},
175+
ExpectedLogErrors: []*clogs.LogError{clogs.NewLogError("", "", "Received invalid response content: <return>Missing</return>")},
176+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
177+
},
161178
}
162179

163180
func TestOutgoing(t *testing.T) {

Diff for: handlers/thinq/handler_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,22 @@ var sendTestCases = []OutgoingTestCase{
186186
}},
187187
ExpectedError: courier.ErrConnectionFailed,
188188
},
189+
{
190+
Label: "Reponse Unexpected",
191+
MsgText: "Simple Message ☺",
192+
MsgURN: "tel:+12067791234",
193+
MockResponses: map[string][]*httpx.MockResponse{
194+
"https://api.thinq.com/account/1234/product/origination/sms/send": {
195+
httpx.NewMockResponse(200, nil, []byte(`{ "missing": "1002" }`)),
196+
},
197+
},
198+
ExpectedRequests: []ExpectedRequest{{
199+
Headers: map[string]string{"Authorization": "Basic dXNlcjE6c2VzYW1l"},
200+
Body: `{"from_did":"2065551212","to_did":"2067791234","message":"Simple Message ☺"}`,
201+
}},
202+
ExpectedLogErrors: []*clogs.LogError{courier.ErrorResponseValueMissing("guid")},
203+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
204+
},
189205
}
190206

191207
func TestOutgoing(t *testing.T) {

Diff for: handlers/vk/handler_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,22 @@ var outgoingCases = []OutgoingTestCase{
502502
},
503503
ExpectedError: courier.ErrConnectionFailed,
504504
},
505+
{
506+
Label: "Response unexpected",
507+
MsgText: "Simple message",
508+
MsgURN: "vk:123456789",
509+
MockResponses: map[string][]*httpx.MockResponse{
510+
"https://api.vk.com/method/messages.send.json?*": {
511+
httpx.NewMockResponse(200, nil, []byte(`{"missing": 1}`)),
512+
},
513+
},
514+
ExpectedRequests: []ExpectedRequest{
515+
{
516+
Params: url.Values{"access_token": {"token123xyz"}, "attachment": {""}, "message": {"Simple message"}, "random_id": {"10"}, "user_id": {"123456789"}, "v": {"5.103"}},
517+
},
518+
},
519+
ExpectedError: courier.ErrResponseUnexpectedUnlogged,
520+
},
505521
}
506522

507523
func TestOutgoing(t *testing.T) {

0 commit comments

Comments
 (0)