2222from bandwidth import ApiClient , Configuration
2323from bandwidth .api .multi_channel_api import MultiChannelApi
2424from bandwidth .models .multi_channel_message_request import MultiChannelMessageRequest
25- from bandwidth .models .multi_channel_channel_list_object import MultiChannelChannelListObject
2625from 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
2739from 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
3145class 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
75261if __name__ == '__main__' :
76262 unittest .main ()
0 commit comments