mock-twilio 0.8.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b143e540dfe26cd133a5b50c513a556b2829897bd0eb3223183eb8e1e22acd1a
4
- data.tar.gz: 5352342bd728fba1514ee6546eef76380113d713c52c254afe086e737eafab0f
3
+ metadata.gz: 1da1ec05dd743344d3013c3f39a42923a3169f1712f5888379d404d29c437f0f
4
+ data.tar.gz: 59529b53405a1ea90813af0d41174a98a197a19c05b1b38968883e98fb7c8284
5
5
  SHA512:
6
- metadata.gz: 463cbf7ad14d9d8d1fe8a6b89c7697ebd5d15556fd07f260039dc740879129315dce2aaa94b857024cdb740a36c00a3465406c64bad0b6beafa8dbb0c22a3f70
7
- data.tar.gz: 287593b9368e6d4163fa39662c752c74a2386d77b2261adc4ad31fa8e7fbd08aa1296eaefd1f345aee646e304971bd1a0c863cfbdfc0d71aadcbae88c1461e9d
6
+ metadata.gz: 5663f1c128513d140c75d2505c85e1e77c71c226889d1aa3a230df2764f7d4010964f2781c895508c5a2eb3df2d60225aa7f74e64df1c3d0e6583e5fff4e8659
7
+ data.tar.gz: 07ef35f9b4ee075fb4af82ffb03e02b5e6bb4af1dc9d324c9a0c4de7590a4c29314c58933798ab53bc0bd3859bdec6410c6d506eb03171207381b343467b90ac
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## [1.0.0] - 2024-08-06
2
+ - Support Webhooks::InboundMessages
3
+
1
4
  ## [0.8.0] - 2024-07-24
2
5
  - Support BrandsRegistratiosA2p
3
6
  - Support A2pTrustProduct
data/README.md CHANGED
@@ -26,6 +26,38 @@ OR
26
26
  - `proxy_port = 4010`
27
27
  - `proxy_protocol = http`
28
28
 
29
+ ## Features Support
30
+
31
+ | Mock::Twilio::Client | Support |
32
+ | ------------- | ------------- |
33
+ | `client.messages.create(to: "+593978613041", body: "Testing SMS", from: "+13212855389")` | :white_check_mark: |
34
+ | `client.messaging.v1.services("MG"+"F"*32).phone_numbers.create(phone_number_sid: @phone_number_sid)` | :white_check_mark: |
35
+ | `client.available_phone_numbers('US').local.list(limit: 20)` | :white_check_mark: |
36
+ | `client.incoming_phone_numbers.create(phone_number: "+1987654321", voice_url: "#{BASE_URL}/api/v1/twilio_calls/incoming", sms_url: "#{BASE_URL}/api/v1/twilio_requests/inbound")` | :white_check_mark: |
37
+ | `client.lookups.v2.phone_numbers("+14159929960").fetch(fields: :line_type_intelligence)` | :white_check_mark: |
38
+ | `client.calls.create(url: '<http://demo.twilio.com/docs/voice.xml>', to: '+14155551212', from: '+15017122661', status_callback: '<https://myapp.com/events>', status_callback_event: ['ringing'], status_callback_method: 'POST')` | :white_check_mark: |
39
+ | `client.conferences("CF"+("F")*32).participants.create(label: 'customer', early_media: true, beep: 'onEnter', status_callback: '<https://myapp.com/events>', status_callback_event: ['ringing'], record: true, from: '+15017122661', to: '+15558675310')` | :white_check_mark: |
40
+ | `client.trusthub.v1.customer_profiles.create(**twilio_attributes)` | :white_check_mark: |
41
+ | `client.trusthub.v1.customer_profiles(customer_profile_sid).customer_profiles_entity_assignments.create(object_sid:)` | :white_check_mark: |
42
+ | `client.trusthub.v1.end_users.create(**twilio_parameters)` | :white_check_mark: |
43
+ | `client.trusthub.v1.supporting_documents.create(**twilio_parameters)` | :white_check_mark: |
44
+ | `client.addresses.create(**twilio_parameters)` | :white_check_mark: |
45
+ | `client.trusthub.v1.customer_profiles.create(**twilio_attributes)` | :white_check_mark: |
46
+ | `client.trusthub.v1.customer_profiles(customer_profile.sid).customer_profiles_evaluations.create(policy_sid:)` | :white_check_mark: |
47
+
48
+
49
+ ## Trigger resources updates
50
+
51
+ | Mock::Twilio::Webhooks | Support |
52
+ | ------------- | ------------- |
53
+ | `Webhooks::Messages` | :white_check_mark: |
54
+ | `Webhooks::InboundMessages` | :white_check_mark: |
55
+ | `Webhooks::Calls` | :white_check_mark: |
56
+ | `Webhooks::CallStatusUpdates` | :white_check_mark: |
57
+ | `Webhooks::Conferences` | :white_check_mark: |
58
+ | `Webhooks::CustomerProfiles` | :white_check_mark: |
59
+ | `Webhooks::Brands` | :white_check_mark: |
60
+
29
61
  ## How to use
30
62
  Initializer sample
31
63
  ```ruby
@@ -35,7 +67,6 @@ Mock::Twilio.configure do |config|
35
67
  config.port = "3000"
36
68
  config.proto = "http"
37
69
  end
38
-
39
70
  ```
40
71
 
41
72
  Example
@@ -14,8 +14,12 @@ module Mock
14
14
  body["end_time"] = Time.current.rfc2822 if body["end_time"]
15
15
 
16
16
  message_sid(body, request) if body["sid"]
17
+ body["messaging_service_sid"] = request.data["MessagingServiceSid"] if request.data["MessagingServiceSid"]
17
18
  pagination(body) if body["available_phone_numbers"]
18
19
 
20
+ body["to"] = request.data["To"] if request.data["To"]
21
+ body["from"] = request.data["From"] if request.data["From"]
22
+
19
23
  body
20
24
  end
21
25
 
@@ -33,7 +37,12 @@ module Mock
33
37
  scheduler = Rufus::Scheduler.new
34
38
  scheduler.in '2s' do
35
39
  begin
36
- Mock::Twilio::Webhooks::Messages.trigger(sid)
40
+ response = Mock::Twilio::Webhooks::Messages.trigger(sid)
41
+
42
+ if response.success? && request.data["Body"].downcase.include?("inbound")
43
+ inbound_sid = prefix + SecureRandom.hex(16)
44
+ Mock::Twilio::Webhooks::InboundMessages.trigger(inbound_sid, request.data)
45
+ end
37
46
  rescue => e
38
47
  puts e
39
48
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Mock
4
4
  module Twilio
5
- VERSION = "0.8.0"
5
+ VERSION = "1.0.0"
6
6
  end
7
7
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mock
4
+ module Twilio
5
+ module Webhooks
6
+ class InboundMessages < Base
7
+ URL = "/api/v1/twilio_requests/inbound"
8
+
9
+ def self.trigger(sid, params)
10
+ raise Webhooks::RestError, "Invalid Inbound message data" if params['To'].empty? || params['From'].empty?
11
+ # Wait simulation from twilio
12
+ sleep DELAY.sample
13
+
14
+ request_url = Mock::Twilio.proto + "://" + Mock::Twilio.forwarded_host + URL
15
+
16
+ data = inbound_data(sid, params)
17
+
18
+ signature = build_signature_for_request(request_url, data)
19
+
20
+ response = webhook_client.request(Mock::Twilio.host,
21
+ Mock::Twilio.port,
22
+ 'POST',
23
+ URL,
24
+ nil,
25
+ data,
26
+ headers.merge!({ 'X-Twilio-Signature': signature }),
27
+ auth_twilio,
28
+ nil)
29
+ case response.status
30
+ when 200..204
31
+ response
32
+ when 400..600
33
+ raise Webhooks::RestError, Mock::Twilio::ErrorHandler.new(response).raise
34
+ end
35
+ end
36
+
37
+ def self.inbound_data(sid, params)
38
+ {
39
+ "ToCountry": "US",
40
+ "ToState": "MS",
41
+ "SmsMessageSid": sid,
42
+ "NumMedia": "0",
43
+ "ToCity": "SARDIS",
44
+ "FromZip": "98315",
45
+ "SmsSid": sid,
46
+ "FromState": "WA",
47
+ "SmsStatus": "received",
48
+ "FromCity": "SILVERDALE",
49
+ "Body": "Inbound::Message mock reply",
50
+ "FromCountry": "US",
51
+ "To": params["To"],
52
+ "MessagingServiceSid": params['MessagingServiceSid'],
53
+ "ToZip": "38666",
54
+ "AddOns": "{\"status\":\"successful\",\"message\":null,\"code\":null,\"results\":{}}",
55
+ "NumSegments": "1",
56
+ "MessageSid": sid,
57
+ "AccountSid": ::Twilio.account_sid,
58
+ "From": params["From"],
59
+ "ApiVersion": "2010-04-01"
60
+ }
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
data/lib/mock/twilio.rb CHANGED
@@ -13,6 +13,7 @@ require_relative "twilio/webhooks/call_status_updates"
13
13
  require_relative "twilio/webhooks/conferences"
14
14
  require_relative "twilio/webhooks/customer_profiles"
15
15
  require_relative "twilio/webhooks/brands"
16
+ require_relative "twilio/webhooks/inbound_messages"
16
17
  require_relative "twilio/util/configuration"
17
18
  require_relative "twilio/util/error_handler"
18
19
  require_relative "twilio/util/generator"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mock-twilio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SchoolStatus Platform Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-24 00:00:00.000000000 Z
11
+ date: 2024-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -117,6 +117,7 @@ files:
117
117
  - lib/mock/twilio/webhooks/calls.rb
118
118
  - lib/mock/twilio/webhooks/conferences.rb
119
119
  - lib/mock/twilio/webhooks/customer_profiles.rb
120
+ - lib/mock/twilio/webhooks/inbound_messages.rb
120
121
  - lib/mock/twilio/webhooks/messages.rb
121
122
  - lib/twilio/rest/messaging/v1/service/phone_number_decorator.rb
122
123
  - sig/mock/twilio.rbs