Skip to content

Commit 6978a5c

Browse files
committed
smoke test
1 parent 18764e3 commit 6978a5c

File tree

1 file changed

+199
-13
lines changed

1 file changed

+199
-13
lines changed

test/smoke/test_multi_channel_api.py

Lines changed: 199 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,25 @@
2222
from bandwidth import ApiClient, Configuration
2323
from bandwidth.api.multi_channel_api import MultiChannelApi
2424
from bandwidth.models.multi_channel_message_request import MultiChannelMessageRequest
25-
from bandwidth.models.multi_channel_channel_list_object import MultiChannelChannelListObject
2625
from bandwidth.models.multi_channel_message_channel_enum import MultiChannelMessageChannelEnum
26+
from bandwidth.models.multi_channel_channel_list_request_object import MultiChannelChannelListRequestObject
27+
from bandwidth.models.multi_channel_channel_list_sms_response_object import MultiChannelChannelListSMSResponseObject
28+
from bandwidth.models.multi_channel_channel_list_sms_object import MultiChannelChannelListSMSObject
29+
from bandwidth.models.sms_message_content import SmsMessageContent
30+
from bandwidth.models.create_multi_channel_message_response import CreateMultiChannelMessageResponse
31+
from bandwidth.models.multi_channel_message_response_data import MultiChannelMessageResponseData
32+
from bandwidth.models.priority_enum import PriorityEnum
33+
from bandwidth.models.multi_channel_channel_list_response_object import MultiChannelChannelListResponseObject
34+
from bandwidth.models.multi_channel_channel_list_mms_object import MultiChannelChannelListMMSObject
35+
from bandwidth.models.mms_message_content import MmsMessageContent
36+
from bandwidth.models.mms_message_content_file import MmsMessageContentFile
37+
from bandwidth.models.multi_channel_channel_list_rbm_object import MultiChannelChannelListRBMObject
38+
from bandwidth.models.multi_channel_channel_list_rbm_object_all_of_content import MultiChannelChannelListRBMObjectAllOfContent
2739
from bandwidth.models.rbm_message_content_text import RbmMessageContentText
28-
from bandwidth.models.multi_channel_channel_list_object_content import MultiChannelChannelListObjectContent
29-
40+
from bandwidth.models.multi_channel_action import MultiChannelAction
41+
from bandwidth.models.rbm_action_dial import RbmActionDial
42+
from bandwidth.models.rbm_action_type_enum import RbmActionTypeEnum
43+
from bandwidth.models.multi_channel_channel_list_rbm_response_object import MultiChannelChannelListRBMResponseObject
3044

3145
class TestMultiChannelApi(unittest.TestCase):
3246
"""MultiChannelApi unit test stubs"""
@@ -41,36 +55,208 @@ def setUp(self) -> None:
4155

4256
self.expiration = datetime.now(ZoneInfo('America/New_York')) + timedelta(minutes=1)
4357

44-
@unittest.skip("Still in Beta, skip for now")
45-
def test_create_multi_channel_message(self) -> None:
58+
def test_create_multi_channel_sms_message(self) -> None:
59+
"""Test case for create_multi_channel_message
60+
61+
Create Multi-Channel Message
62+
"""
63+
64+
channel_list_item = MultiChannelChannelListRequestObject(
65+
MultiChannelChannelListSMSObject(
66+
var_from = BW_NUMBER,
67+
application_id = BW_MESSAGING_APPLICATION_ID,
68+
channel = MultiChannelMessageChannelEnum.SMS,
69+
content = SmsMessageContent(
70+
text = 'Hello, this is a test message.',
71+
)
72+
)
73+
)
74+
75+
multi_channel_message_request = MultiChannelMessageRequest(
76+
to = USER_NUMBER,
77+
channel_list = [channel_list_item],
78+
tag = 'tag',
79+
priority = 'high',
80+
expiration = self.expiration.isoformat(),
81+
)
82+
83+
response = self.multi_channel_api_instance.create_multi_channel_message_with_http_info(
84+
BW_ACCOUNT_ID,
85+
multi_channel_message_request
86+
)
87+
88+
assert_that(response.status_code, equal_to(202))
89+
assert_that(response.data, is_not(none()))
90+
assert_that(response.data, instance_of(CreateMultiChannelMessageResponse))
91+
assert_that(response.data.links, is_not(none()))
92+
assert_that(response.data.links, instance_of(list))
93+
assert_that(response.data.data, is_not(none()))
94+
assert_that(response.data.data, instance_of(MultiChannelMessageResponseData))
95+
assert_that(response.data.data.id, instance_of(str))
96+
assert_that(response.data.data.time, instance_of(datetime))
97+
assert_that(response.data.data.direction, instance_of(str))
98+
assert_that(response.data.data.to, instance_of(list))
99+
assert_that(response.data.data.tag, instance_of(str))
100+
assert_that(response.data.data.priority, instance_of(PriorityEnum))
101+
assert_that(response.data.data.expiration, instance_of(datetime))
102+
assert_that(response.data.data.channel_list, instance_of(list))
103+
assert_that(response.data.data.channel_list[0], instance_of(MultiChannelChannelListResponseObject))
104+
105+
# skip below for now because python doesn't respect discriminator field properly
106+
107+
# assert_that(response.data.data.channel_list[0].actual_instance, instance_of(MultiChannelChannelListSMSResponseObject))
108+
# sms_object = response.data.data.channel_list[0].actual_instance
109+
# assert_that(sms_object.var_from, equal_to(BW_NUMBER))
110+
# assert_that(sms_object.application_id, equal_to(BW_MESSAGING_APPLICATION_ID))
111+
# assert_that(sms_object.channel, equal_to(MultiChannelMessageChannelEnum.SMS))
112+
# assert_that(sms_object.content, is_not(none()))
113+
# assert_that(sms_object.content, instance_of(SmsMessageContent))
114+
# assert_that(sms_object.content.text, equal_to('Hello, this is a test message.'))
115+
# assert_that(sms_object.owner, equal_to(BW_NUMBER))
116+
117+
def test_create_multi_channel_mms_message(self) -> None:
46118
"""Test case for create_multi_channel_message
47119
48120
Create Multi-Channel Message
49121
"""
50122

51-
channel_list_item = MultiChannelChannelListObject(
52-
var_from = BW_NUMBER,
53-
application_id = BW_MESSAGING_APPLICATION_ID,
54-
channel = MultiChannelMessageChannelEnum('RBM'),
55-
content = MultiChannelChannelListObjectContent(
56-
RbmMessageContentText(
123+
channel_list_item = MultiChannelChannelListRequestObject(
124+
MultiChannelChannelListMMSObject(
125+
var_from = BW_NUMBER,
126+
application_id = BW_MESSAGING_APPLICATION_ID,
127+
channel = MultiChannelMessageChannelEnum.MMS,
128+
content = MmsMessageContent(
57129
text = 'Hello, this is a test message.',
130+
media = [MmsMessageContentFile(fileUrl="https://image.com/image.png")]
131+
)
132+
)
133+
)
134+
135+
multi_channel_message_request = MultiChannelMessageRequest(
136+
to = USER_NUMBER,
137+
channel_list = [channel_list_item],
138+
tag = 'tag',
139+
priority = 'high',
140+
expiration = self.expiration.isoformat(),
141+
)
142+
143+
response = self.multi_channel_api_instance.create_multi_channel_message_with_http_info(
144+
BW_ACCOUNT_ID,
145+
multi_channel_message_request
146+
)
147+
148+
assert_that(response.status_code, equal_to(202))
149+
assert_that(response.data, is_not(none()))
150+
assert_that(response.data, instance_of(CreateMultiChannelMessageResponse))
151+
assert_that(response.data.links, is_not(none()))
152+
assert_that(response.data.links, instance_of(list))
153+
assert_that(response.data.data, is_not(none()))
154+
assert_that(response.data.data, instance_of(MultiChannelMessageResponseData))
155+
assert_that(response.data.data.id, instance_of(str))
156+
assert_that(response.data.data.time, instance_of(datetime))
157+
assert_that(response.data.data.direction, instance_of(str))
158+
assert_that(response.data.data.to, instance_of(list))
159+
assert_that(response.data.data.tag, instance_of(str))
160+
assert_that(response.data.data.priority, instance_of(PriorityEnum))
161+
assert_that(response.data.data.expiration, instance_of(datetime))
162+
assert_that(response.data.data.channel_list, instance_of(list))
163+
assert_that(response.data.data.channel_list[0], instance_of(MultiChannelChannelListResponseObject))
164+
165+
# skip below for now because python doesn't respect discriminator field properly
166+
167+
# assert_that(response.data.data.channel_list[0].actual_instance, instance_of(MultiChannelChannelListMMSResponseObject))
168+
# mms_object = response.data.data.channel_list[0].actual_instance
169+
# assert_that(mms_object.var_from, equal_to(BW_NUMBER))
170+
# assert_that(mms_object.application_id, equal_to(BW_MESSAGING_APPLICATION_ID))
171+
# assert_that(mms_object.channel, equal_to(MultiChannelMessageChannelEnum.MMS))
172+
# assert_that(mms_object.content, is_not(none()))
173+
# assert_that(mms_object.content, instance_of(MmsMessageContent))
174+
# assert_that(mms_object.content.text, equal_to('Hello, this is a test message.'))
175+
# assert_that(len(mms_object.content.media), equal_to(1))
176+
# assert_that(mms_object.content.media[0].file_url, equal_to("https://image.com/image.png"))
177+
# assert_that(mms_object.owner, equal_to(BW_NUMBER))
178+
179+
def test_create_multi_channel_rbm_message(self) -> None:
180+
"""Test case for create_multi_channel_message
181+
182+
Create Multi-Channel Message
183+
"""
184+
185+
channel_list_item = MultiChannelChannelListRequestObject(
186+
MultiChannelChannelListRBMObject(
187+
var_from = BW_NUMBER,
188+
application_id = BW_MESSAGING_APPLICATION_ID,
189+
channel = MultiChannelMessageChannelEnum.RBM,
190+
content = MultiChannelChannelListRBMObjectAllOfContent(
191+
RbmMessageContentText(
192+
text = 'Hello, this is a test message.',
193+
suggestions=[
194+
MultiChannelAction(RbmActionDial(
195+
type=RbmActionTypeEnum.DIAL_PHONE,
196+
text="Call Us",
197+
postback_data='U0dWc2JHOGdkMjl5YkdRPQ==',
198+
phone_number=BW_NUMBER
199+
))
200+
]
201+
)
202+
58203
)
59204
)
60205
)
206+
61207
multi_channel_message_request = MultiChannelMessageRequest(
62208
to = USER_NUMBER,
63209
channel_list = [channel_list_item],
64210
tag = 'tag',
65211
priority = 'high',
66-
expiration = self.expiration
212+
expiration = self.expiration.isoformat(),
67213
)
68214

69215
response = self.multi_channel_api_instance.create_multi_channel_message_with_http_info(
70216
BW_ACCOUNT_ID,
71217
multi_channel_message_request
72-
)
218+
)
219+
73220
assert_that(response.status_code, equal_to(202))
221+
assert_that(response.data, is_not(none()))
222+
assert_that(response.data, instance_of(CreateMultiChannelMessageResponse))
223+
assert_that(response.data.links, is_not(none()))
224+
assert_that(response.data.links, instance_of(list))
225+
assert_that(response.data.data, is_not(none()))
226+
assert_that(response.data.data, instance_of(MultiChannelMessageResponseData))
227+
assert_that(response.data.data.id, instance_of(str))
228+
assert_that(response.data.data.time, instance_of(datetime))
229+
assert_that(response.data.data.direction, instance_of(str))
230+
assert_that(response.data.data.to, instance_of(list))
231+
assert_that(response.data.data.tag, instance_of(str))
232+
assert_that(response.data.data.priority, instance_of(PriorityEnum))
233+
assert_that(response.data.data.expiration, instance_of(datetime))
234+
assert_that(response.data.data.channel_list, instance_of(list))
235+
assert_that(response.data.data.channel_list[0], instance_of(MultiChannelChannelListResponseObject))
236+
assert_that(response.data.data.channel_list[0].actual_instance, instance_of(MultiChannelChannelListRBMResponseObject))
237+
rbm_object = response.data.data.channel_list[0].actual_instance
238+
assert_that(rbm_object.var_from, equal_to(BW_NUMBER))
239+
assert_that(rbm_object.application_id, equal_to(BW_MESSAGING_APPLICATION_ID))
240+
assert_that(rbm_object.channel, equal_to(MultiChannelMessageChannelEnum.RBM))
241+
assert_that(rbm_object.content, is_not(none()))
242+
assert_that(rbm_object.content, instance_of(MultiChannelChannelListRBMObjectAllOfContent))
243+
assert_that(rbm_object.content.actual_instance, instance_of(RbmMessageContentText))
244+
assert_that(rbm_object.content.actual_instance.text, equal_to('Hello, this is a test message.'))
245+
assert_that(rbm_object.content.actual_instance.suggestions, is_not(none()))
246+
assert_that(rbm_object.content.actual_instance.suggestions, instance_of(list))
247+
assert_that(len(rbm_object.content.actual_instance.suggestions), equal_to(1))
248+
assert_that(rbm_object.content.actual_instance.suggestions[0], instance_of(MultiChannelAction))
249+
250+
# skip below for now because python doesn't respect discriminator field properly
251+
252+
# action = rbm_object.content.actual_instance.suggestions[0]
253+
# assert_that(action.actual_instance, instance_of(RbmActionDial))
254+
# dial_action = action.actual_instance
255+
# assert_that(dial_action.type, equal_to(RbmActionTypeEnum.DIAL_PHONE))
256+
# assert_that(dial_action.text, equal_to("Call Us"))
257+
# assert_that(dial_action.postback_data, equal_to('U0dWc2JHOGdkMjl5YkdRPQ=='))
258+
# assert_that(dial_action.phone_number, equal_to(BW_NUMBER))
259+
# assert_that(rbm_object.owner, equal_to(BW_NUMBER))
74260

75261
if __name__ == '__main__':
76262
unittest.main()

0 commit comments

Comments
 (0)