telnyx 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +4 -0
  3. data/.github/ISSUE_TEMPLATE.md +5 -0
  4. data/.gitignore +9 -0
  5. data/.rubocop.yml +32 -0
  6. data/.rubocop_todo.yml +50 -0
  7. data/.travis.yml +42 -0
  8. data/CHANGELOG.md +2 -0
  9. data/CONTRIBUTORS +0 -0
  10. data/Gemfile +40 -0
  11. data/Guardfile +8 -0
  12. data/LICENSE +22 -0
  13. data/README.md +173 -0
  14. data/Rakefile +28 -0
  15. data/VERSION +1 -0
  16. data/bin/telnyx-console +16 -0
  17. data/lib/telnyx.rb +151 -0
  18. data/lib/telnyx/api_operations/create.rb +12 -0
  19. data/lib/telnyx/api_operations/delete.rb +13 -0
  20. data/lib/telnyx/api_operations/list.rb +29 -0
  21. data/lib/telnyx/api_operations/nested_resource.rb +63 -0
  22. data/lib/telnyx/api_operations/request.rb +57 -0
  23. data/lib/telnyx/api_operations/save.rb +103 -0
  24. data/lib/telnyx/api_resource.rb +69 -0
  25. data/lib/telnyx/available_phone_number.rb +9 -0
  26. data/lib/telnyx/errors.rb +166 -0
  27. data/lib/telnyx/event.rb +9 -0
  28. data/lib/telnyx/list_object.rb +155 -0
  29. data/lib/telnyx/message.rb +9 -0
  30. data/lib/telnyx/messaging_phone_number.rb +10 -0
  31. data/lib/telnyx/messaging_profile.rb +32 -0
  32. data/lib/telnyx/messaging_sender_id.rb +12 -0
  33. data/lib/telnyx/messaging_short_code.rb +10 -0
  34. data/lib/telnyx/number_order.rb +11 -0
  35. data/lib/telnyx/number_reservation.rb +11 -0
  36. data/lib/telnyx/public_key.rb +7 -0
  37. data/lib/telnyx/singleton_api_resource.rb +24 -0
  38. data/lib/telnyx/telnyx_client.rb +545 -0
  39. data/lib/telnyx/telnyx_object.rb +521 -0
  40. data/lib/telnyx/telnyx_response.rb +50 -0
  41. data/lib/telnyx/util.rb +328 -0
  42. data/lib/telnyx/version.rb +5 -0
  43. data/lib/telnyx/webhook.rb +66 -0
  44. data/telnyx.gemspec +25 -0
  45. data/test/api_stub_helpers.rb +1 -0
  46. data/test/openapi/README.md +9 -0
  47. data/test/telnyx/api_operations_test.rb +85 -0
  48. data/test/telnyx/api_resource_test.rb +293 -0
  49. data/test/telnyx/available_phone_number_test.rb +14 -0
  50. data/test/telnyx/errors_test.rb +23 -0
  51. data/test/telnyx/list_object_test.rb +244 -0
  52. data/test/telnyx/message_test.rb +19 -0
  53. data/test/telnyx/messaging_phone_number_test.rb +33 -0
  54. data/test/telnyx/messaging_profile_test.rb +70 -0
  55. data/test/telnyx/messaging_sender_id_test.rb +46 -0
  56. data/test/telnyx/messaging_short_code_test.rb +33 -0
  57. data/test/telnyx/number_order_test.rb +39 -0
  58. data/test/telnyx/number_reservation_test.rb +12 -0
  59. data/test/telnyx/public_key_test.rb +13 -0
  60. data/test/telnyx/telnyx_client_test.rb +631 -0
  61. data/test/telnyx/telnyx_object_test.rb +497 -0
  62. data/test/telnyx/telnyx_response_test.rb +49 -0
  63. data/test/telnyx/util_test.rb +380 -0
  64. data/test/telnyx/webhook_test.rb +108 -0
  65. data/test/telnyx_mock.rb +78 -0
  66. data/test/telnyx_test.rb +40 -0
  67. data/test/test_data.rb +149 -0
  68. data/test/test_helper.rb +73 -0
  69. metadata +162 -0
@@ -0,0 +1,244 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../../test_helper", __FILE__)
4
+
5
+ module Telnyx
6
+ class ListObjectTest < Test::Unit::TestCase
7
+ should "provide .empty_list" do
8
+ list = Telnyx::ListObject.empty_list
9
+ assert list.empty?
10
+ end
11
+
12
+ should "provide #count via enumerable" do
13
+ list = Telnyx::ListObject.construct_from(data: [{ record_type: "messaging_profile" }])
14
+ assert_equal 1, list.count
15
+ end
16
+
17
+ should "provide #each" do
18
+ arr = [
19
+ { id: 1 },
20
+ { id: 2 },
21
+ { id: 3 },
22
+ ]
23
+ expected = Util.convert_to_telnyx_object(arr, {})
24
+ list = Telnyx::ListObject.construct_from(data: arr)
25
+ assert_equal expected, list.each.to_a
26
+ end
27
+
28
+ should "provide #auto_paging_each" do
29
+ arr = [
30
+ { id: 1 },
31
+ { id: 2 },
32
+ { id: 3 },
33
+ ]
34
+ expected = Util.convert_to_telnyx_object(arr, {})
35
+
36
+ list = TestListObject.construct_from(data: [{ id: 1 }],
37
+ meta: { page_number: 1, total_pages: 4 },
38
+ url: "/things")
39
+ stub_request(:get, "#{Telnyx.api_base}/things")
40
+ .with(query: { page: { number: 2, size: 20 } })
41
+ .to_return(body: JSON.generate(data: [{ id: 2 }], meta: { page_number: 2, total_pages: 4 }))
42
+ stub_request(:get, "#{Telnyx.api_base}/things")
43
+ .with(query: { page: { number: 3, size: 20 } })
44
+ .to_return(body: JSON.generate(data: [{ id: 3 }], meta: { page_number: 3, total_pages: 4 }))
45
+ stub_request(:get, "#{Telnyx.api_base}/things")
46
+ .with(query: { page: { number: 4, size: 20 } })
47
+ .to_return(body: JSON.generate(data: [], meta: { page_number: 4, total_pages: 4 }))
48
+
49
+ assert_equal expected, list.auto_paging_each.to_a
50
+ end
51
+
52
+ should "provide #auto_paging_each that responds to a block" do
53
+ arr = [
54
+ { id: 1 },
55
+ { id: 2 },
56
+ { id: 3 },
57
+ ]
58
+ expected = Util.convert_to_telnyx_object(arr, {})
59
+
60
+ list = TestListObject.construct_from(data: [{ id: 1 }],
61
+ meta: { page_number: 1, total_pages: 4 },
62
+ url: "/things")
63
+ stub_request(:get, "#{Telnyx.api_base}/things")
64
+ .with(query: { page: { number: 2, size: 20 } })
65
+ .to_return(body: JSON.generate(data: [{ id: 2 }], meta: { page_number: 2, total_pages: 4 }))
66
+ stub_request(:get, "#{Telnyx.api_base}/things")
67
+ .with(query: { page: { number: 3, size: 20 } })
68
+ .to_return(body: JSON.generate(data: [{ id: 3 }], meta: { page_number: 3, total_pages: 4 }))
69
+ stub_request(:get, "#{Telnyx.api_base}/things")
70
+ .with(query: { page: { number: 4, size: 20 } })
71
+ .to_return(body: JSON.generate(data: [], meta: { page_number: 4, total_pages: 4 }))
72
+
73
+ actual = []
74
+ list.auto_paging_each do |obj|
75
+ actual << obj
76
+ end
77
+
78
+ assert_equal expected, actual
79
+ end
80
+
81
+ should "provide #auto_paging_each_by_token" do
82
+ arr = [
83
+ { id: 1 },
84
+ { id: 2 },
85
+ { id: 3 },
86
+ ]
87
+ expected = Util.convert_to_telnyx_object(arr, {})
88
+
89
+ list = TestListObject.construct_from(data: [{ id: 1 }],
90
+ meta: { next_page_token: "123" },
91
+ url: "/things")
92
+ stub_request(:get, "#{Telnyx.api_base}/things")
93
+ .with(query: { page: { token: "123" } })
94
+ .to_return(body: JSON.generate(data: [{ id: 2 }], meta: { next_page_token: "456" }))
95
+ stub_request(:get, "#{Telnyx.api_base}/things")
96
+ .with(query: { page: { token: "456" } })
97
+ .to_return(body: JSON.generate(data: [{ id: 3 }], meta: { next_page_token: "789" }))
98
+ stub_request(:get, "#{Telnyx.api_base}/things")
99
+ .with(query: { page: { token: "789" } })
100
+ .to_return(body: JSON.generate(data: [], meta: { next_page_token: nil }))
101
+
102
+ assert_equal expected, list.auto_paging_each_by_token.to_a
103
+ end
104
+
105
+ should "provide #auto_paging_each_by_token that responds to a block" do
106
+ arr = [
107
+ { id: 1 },
108
+ { id: 2 },
109
+ { id: 3 },
110
+ ]
111
+ expected = Util.convert_to_telnyx_object(arr, {})
112
+
113
+ list = TestListObject.construct_from(data: [{ id: 1 }],
114
+ meta: { next_page_token: "123" },
115
+ url: "/things")
116
+ stub_request(:get, "#{Telnyx.api_base}/things")
117
+ .with(query: { page: { token: "123" } })
118
+ .to_return(body: JSON.generate(data: [{ id: 2 }], meta: { next_page_token: "456" }))
119
+ stub_request(:get, "#{Telnyx.api_base}/things")
120
+ .with(query: { page: { token: "456" } })
121
+ .to_return(body: JSON.generate(data: [{ id: 3 }], meta: { next_page_token: "789" }))
122
+ stub_request(:get, "#{Telnyx.api_base}/things")
123
+ .with(query: { page: { token: "789" } })
124
+ .to_return(body: JSON.generate(data: [], meta: { next_page_token: nil }))
125
+
126
+ actual = []
127
+ list.auto_paging_each_by_token do |obj|
128
+ actual << obj
129
+ end
130
+
131
+ assert_equal expected, actual
132
+ end
133
+
134
+ should "provide #empty?" do
135
+ list = Telnyx::ListObject.construct_from(data: [])
136
+ assert list.empty?
137
+ list = Telnyx::ListObject.construct_from(data: [{}])
138
+ refute list.empty?
139
+ end
140
+
141
+ #
142
+ # next_page
143
+ #
144
+
145
+ should "fetch a next page through #next_page" do
146
+ list = TestListObject.construct_from(data: [{ id: 1 }],
147
+ meta: { page_number: 1, total_pages: 2 },
148
+ url: "/things")
149
+ stub_request(:get, "#{Telnyx.api_base}/things")
150
+ .with(query: { page: { number: 2, size: 20 } })
151
+ .to_return(body: JSON.generate(data: [{ id: 2 }]))
152
+ next_list = list.next_page
153
+ refute next_list.empty?
154
+ end
155
+
156
+ should "fetch a next page through #next_page and respect filters" do
157
+ list = TestListObject.construct_from(data: [{ id: 1 }],
158
+ meta: { page_number: 1, total_pages: 2 },
159
+ url: "/things")
160
+ list.filters = { enabled: true }
161
+ stub_request(:get, "#{Telnyx.api_base}/things")
162
+ .with(query: { page: { number: 2, size: 20 }, enabled: true })
163
+ .to_return(body: JSON.generate(data: [{ id: 2 }], meta: { page_number: 2, total_pages: 2 }))
164
+ next_list = list.next_page
165
+ assert_equal({ enabled: true }, next_list.filters)
166
+ end
167
+
168
+ should "fetch an empty page through #next_page" do
169
+ list = TestListObject.construct_from(data: [{ id: 1 }],
170
+ meta: { page_number: 1, total_pages: 1 },
171
+ url: "/things")
172
+ next_list = list.next_page
173
+ assert_equal Telnyx::ListObject.empty_list, next_list
174
+ end
175
+
176
+ #
177
+ # next page by token
178
+ #
179
+
180
+ should "fetch a next page through #next_page_by_token" do
181
+ list = TestListObject.construct_from(data: [{ id: 1 }],
182
+ meta: { next_page_token: "123" },
183
+ url: "/things")
184
+ stub_request(:get, "#{Telnyx.api_base}/things")
185
+ .with(query: { page: { token: "123" } })
186
+ .to_return(body: JSON.generate(data: [{ id: 2 }]))
187
+ next_list = list.next_page_by_token
188
+ refute next_list.empty?
189
+ end
190
+
191
+ should "fetch a next page through #next_page_by_token and respect filters" do
192
+ list = TestListObject.construct_from(data: [{ id: 1 }],
193
+ meta: { next_page_token: "123" },
194
+ url: "/things")
195
+ list.filters = { enabled: true }
196
+ stub_request(:get, "#{Telnyx.api_base}/things")
197
+ .with(query: { page: { token: "123" }, enabled: true })
198
+ .to_return(body: JSON.generate(data: [{ id: 2 }], meta: { next_page_token: "456" }))
199
+ next_list = list.next_page_by_token
200
+ assert_equal({ enabled: true }, next_list.filters)
201
+ end
202
+
203
+ should "fetch an empty page through #next_page_by_token" do
204
+ list = TestListObject.construct_from(data: [{ id: 1 }],
205
+ meta: {},
206
+ url: "/things")
207
+ next_list = list.next_page_by_token
208
+ assert_equal Telnyx::ListObject.empty_list, next_list
209
+ end
210
+
211
+ #
212
+ # previous_page
213
+ #
214
+
215
+ should "fetch a next page through #previous_page" do
216
+ list = TestListObject.construct_from(data: [{ id: 2 }],
217
+ meta: { page_number: 2, total_pages: 3 },
218
+ url: "/things")
219
+ stub_request(:get, "#{Telnyx.api_base}/things")
220
+ .with(query: { page: { number: 1, size: 20 } })
221
+ .to_return(body: JSON.generate(data: [{ id: 1 }], meta: { page_number: 3, total_pages: 3 }))
222
+ next_list = list.previous_page
223
+ refute next_list.empty?
224
+ end
225
+
226
+ should "fetch a next page through #previous_page and respect filters" do
227
+ list = TestListObject.construct_from(data: [{ id: 2 }],
228
+ meta: { page_number: 2, total_pages: 2 },
229
+ url: "/things")
230
+ list.filters = { enabled: true }
231
+ stub_get = stub_request(:get, "#{Telnyx.api_base}/things")
232
+ .with(query: { enabled: true, page: { number: 1, size: 20 } })
233
+ .to_return(body: JSON.generate(data: [{ id: 1 }], meta: { page_number: 1, total_pages: 2 }))
234
+
235
+ next_list = list.previous_page
236
+ assert_requested(stub_get)
237
+ assert_equal({ enabled: true }, next_list.filters)
238
+ end
239
+ end
240
+ end
241
+
242
+ # A helper class with a URL that allows us to try out pagination.
243
+ class TestListObject < Telnyx::ListObject
244
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../../test_helper", __FILE__)
4
+
5
+ module Telnyx
6
+ class MessageTest < Test::Unit::TestCase
7
+ should "be retrievable" do
8
+ message = Telnyx::Message.retrieve("123")
9
+ assert_requested :get, "#{Telnyx.api_base}/v2/messages/123"
10
+ assert message.is_a?(Telnyx::Message)
11
+ end
12
+
13
+ should "be creatable" do
14
+ message = Telnyx::Message.create(to: "+18005554000", from: "+18005559000", text: "Hello, World!")
15
+ assert_requested :post, "#{Telnyx.api_base}/v2/messages"
16
+ assert message.is_a?(Telnyx::Message)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../../test_helper", __FILE__)
4
+
5
+ module Telnyx
6
+ class MessagingPhoneNumberTest < Test::Unit::TestCase
7
+ should "be listable" do
8
+ messaging_phone_numbers = Telnyx::MessagingPhoneNumber.list
9
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_phone_numbers"
10
+ assert messaging_phone_numbers.data.is_a?(Array)
11
+ assert messaging_phone_numbers.first.is_a?(Telnyx::MessagingPhoneNumber)
12
+ end
13
+
14
+ should "be retrievable" do
15
+ messaging_phone_number = Telnyx::MessagingPhoneNumber.retrieve("123")
16
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_phone_numbers/123"
17
+ assert messaging_phone_number.is_a?(Telnyx::MessagingPhoneNumber)
18
+ end
19
+
20
+ should "be saveable" do
21
+ messaging_phone_number = Telnyx::MessagingPhoneNumber.retrieve("123")
22
+ messaging_phone_number.messaging_profile_id = "value"
23
+ messaging_phone_number.save
24
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_phone_numbers/#{messaging_phone_number.id}"
25
+ end
26
+
27
+ should "be updateable" do
28
+ messaging_phone_number = Telnyx::MessagingPhoneNumber.update("123", messaging_profile_id: "456")
29
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_phone_numbers/123"
30
+ assert messaging_phone_number.is_a?(Telnyx::MessagingPhoneNumber)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../../test_helper", __FILE__)
4
+
5
+ module Telnyx
6
+ class MessagingProfileTest < Test::Unit::TestCase
7
+ should "be listable" do
8
+ messaging_profiles = Telnyx::MessagingProfile.list
9
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_profiles"
10
+ assert messaging_profiles.data.is_a?(Array)
11
+ assert messaging_profiles.first.is_a?(Telnyx::MessagingProfile)
12
+ end
13
+
14
+ should "be retrievable" do
15
+ messaging_profile = Telnyx::MessagingProfile.retrieve("123")
16
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_profiles/123"
17
+ assert messaging_profile.is_a?(Telnyx::MessagingProfile)
18
+ end
19
+
20
+ should "be creatable" do
21
+ messaging_profile = Telnyx::MessagingProfile.create(name: "Foo")
22
+ assert_requested :post, "#{Telnyx.api_base}/v2/messaging_profiles"
23
+ assert messaging_profile.is_a?(Telnyx::MessagingProfile)
24
+ end
25
+
26
+ should "be saveable" do
27
+ messaging_profile = Telnyx::MessagingProfile.retrieve("123")
28
+ messaging_profile.name = "value"
29
+ messaging_profile.save
30
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_profiles/#{messaging_profile.id}"
31
+ end
32
+
33
+ should "be updateable" do
34
+ messaging_profile = Telnyx::MessagingProfile.update("123", name: "foo")
35
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_profiles/123"
36
+ assert messaging_profile.is_a?(Telnyx::MessagingProfile)
37
+ end
38
+
39
+ should "be deletable" do
40
+ messaging_profile = Telnyx::MessagingProfile.retrieve("123")
41
+ messaging_profile = messaging_profile.delete
42
+ assert_requested :delete, "#{Telnyx.api_base}/v2/messaging_profiles/#{messaging_profile.id}"
43
+ assert messaging_profile.is_a?(Telnyx::MessagingProfile)
44
+ end
45
+
46
+ should "be able to list PhoneNumbers" do
47
+ messaging_profile = Telnyx::MessagingProfile.retrieve("123")
48
+ phone_numbers = messaging_profile.phone_numbers
49
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_profiles/123/phone_numbers"
50
+ assert phone_numbers.data.is_a?(Array)
51
+ assert phone_numbers.data[0].is_a?(Telnyx::MessagingPhoneNumber)
52
+ end
53
+
54
+ should "be able to list SenderIds" do
55
+ messaging_profile = Telnyx::MessagingProfile.retrieve("123")
56
+ sender_ids = messaging_profile.sender_ids
57
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_profiles/123/sender_ids"
58
+ assert sender_ids.data.is_a?(Array)
59
+ assert sender_ids.data[0].is_a?(Telnyx::MessagingSenderId)
60
+ end
61
+
62
+ should "be able to list ShortCodes" do
63
+ messaging_profile = Telnyx::MessagingProfile.retrieve("123")
64
+ short_codes = messaging_profile.short_codes
65
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_profiles/123/short_codes"
66
+ assert short_codes.data.is_a?(Array)
67
+ assert short_codes.data[0].is_a?(Telnyx::MessagingShortCode)
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../../test_helper", __FILE__)
4
+
5
+ module Telnyx
6
+ class MessagingSenderIdTest < Test::Unit::TestCase
7
+ should "be listable" do
8
+ messaging_sender_ids = Telnyx::MessagingSenderId.list
9
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_sender_ids"
10
+ assert messaging_sender_ids.data.is_a?(Array)
11
+ assert messaging_sender_ids.first.is_a?(Telnyx::MessagingSenderId)
12
+ end
13
+
14
+ should "be retrievable" do
15
+ messaging_sender_id = Telnyx::MessagingSenderId.retrieve("123")
16
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_sender_ids/123"
17
+ assert messaging_sender_id.is_a?(Telnyx::MessagingSenderId)
18
+ end
19
+
20
+ should "be creatable" do
21
+ messaging_sender_id = Telnyx::MessagingSenderId.create(sender_id: "TelnyxID")
22
+ assert_requested :post, "#{Telnyx.api_base}/v2/messaging_sender_ids"
23
+ assert messaging_sender_id.is_a?(Telnyx::MessagingSenderId)
24
+ end
25
+
26
+ should "be saveable" do
27
+ messaging_sender_id = Telnyx::MessagingSenderId.retrieve("123")
28
+ messaging_sender_id.messaging_profile_id = "value"
29
+ messaging_sender_id.save
30
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_sender_ids/#{messaging_sender_id.id}"
31
+ end
32
+
33
+ should "be updateable" do
34
+ messaging_sender_id = Telnyx::MessagingSenderId.update("123", messaging_profile_id: "foo")
35
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_sender_ids/123"
36
+ assert messaging_sender_id.is_a?(Telnyx::MessagingSenderId)
37
+ end
38
+
39
+ should "be deletable" do
40
+ messaging_sender_id = Telnyx::MessagingSenderId.retrieve("123")
41
+ messaging_sender_id = messaging_sender_id.delete
42
+ assert_requested :delete, "#{Telnyx.api_base}/v2/messaging_sender_ids/#{messaging_sender_id.id}"
43
+ assert messaging_sender_id.is_a?(Telnyx::MessagingSenderId)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../../test_helper", __FILE__)
4
+
5
+ module Telnyx
6
+ class MessagingShortCodeTest < Test::Unit::TestCase
7
+ should "be listable" do
8
+ messaging_short_codes = Telnyx::MessagingShortCode.list
9
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_short_codes"
10
+ assert messaging_short_codes.data.is_a?(Array)
11
+ assert messaging_short_codes.first.is_a?(Telnyx::MessagingShortCode)
12
+ end
13
+
14
+ should "be retrievable" do
15
+ messaging_short_code = Telnyx::MessagingShortCode.retrieve("123")
16
+ assert_requested :get, "#{Telnyx.api_base}/v2/messaging_short_codes/123"
17
+ assert messaging_short_code.is_a?(Telnyx::MessagingShortCode)
18
+ end
19
+
20
+ should "be saveable" do
21
+ messaging_short_code = Telnyx::MessagingShortCode.retrieve("123")
22
+ messaging_short_code.messaging_profile_id = "value"
23
+ messaging_short_code.save
24
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_short_codes/#{messaging_short_code.id}"
25
+ end
26
+
27
+ should "be updateable" do
28
+ messaging_short_code = Telnyx::MessagingShortCode.update("123", messaging_profile_id: "foo")
29
+ assert_requested :patch, "#{Telnyx.api_base}/v2/messaging_short_codes/123"
30
+ assert messaging_short_code.is_a?(Telnyx::MessagingShortCode)
31
+ end
32
+ end
33
+ end