twilio_mock 0.3.0 → 0.4.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
  SHA1:
3
- metadata.gz: 106b61164128c689575f9d24eada429ef37c522c
4
- data.tar.gz: b2a7622e6a4f53a222b00fb48436433251386cc5
3
+ metadata.gz: 6a05cb105815e32d33c2d0009cb25386237db3fd
4
+ data.tar.gz: db93df91d08525b98908d535e98ba326843bf53f
5
5
  SHA512:
6
- metadata.gz: cb147bdb3da18c23798eaf81e4b0e64eb51e08456d266ca27c5c23b6ec996510459f9a9d9a10a68b8d96c8567724c4cde2fbe31447debee482f8715ded48d039
7
- data.tar.gz: eec240aad79a42f5787640843b0995d05133db3c44fe5db8d168c2af03c717e958eeeaa472f5907822833193802f066f527114fdd91a59aae56ca7d7e520e09f
6
+ metadata.gz: 87d6406e5bf963ae0fe39bc17961c10aa8df25e18ff8d967cde2e39a22d7de742d3a4841f4c6637b2aa10da56b2ec00eb3f9d499ee80362e1934dae7c95c763e
7
+ data.tar.gz: 68ec49c5c7d230b79566cc72de70eeb0f059ecf83614a3eb2905b1957b4899a16ec0a025a7f1f0157a74fa10c0af9d85c3294eb50618d3a41c267df13ae623d0
data/lib/rest.rb CHANGED
@@ -1,40 +1,28 @@
1
1
  require 'twilio-ruby'
2
+ require 'twilio_extensions'
2
3
 
3
4
  module Twilio
4
5
  module REST
5
- class Messages < ListResource
6
- def create(attrs)
7
- TwilioMock::Mocker.new.create_message(attrs) if TwilioMock::Testing.enabled?
8
- super(attrs)
9
- end
10
- end
11
-
12
- class IncomingPhoneNumbers < ListResource
13
- def create(attrs)
14
- TwilioMock::Mocker.new.buy_number(attrs) if TwilioMock::Testing.enabled?
15
- super(attrs)
16
- end
17
- end
6
+ class Api < Domain
7
+ class V2010 < Version
8
+ class AccountContext < InstanceContext
9
+ prepend TwilioExtensions::AccountContext
18
10
 
19
- class AvailablePhoneNumbers < ListResource
20
- def get(sid)
21
- TwilioMock::Mocker.new.available_number if TwilioMock::Testing.enabled?
22
- super(sid)
23
- end
24
- end
11
+ class MessageList < ListResource
12
+ prepend TwilioExtensions::Messages
13
+ end
25
14
 
26
- class Local < ListResource
27
- def list(params = {}, full_path = false)
28
- TwilioMock::Mocker.new.available_number(nil, params) if TwilioMock::Testing.enabled?
29
- super(params, full_path)
15
+ class IncomingPhoneNumberList < ListResource
16
+ prepend TwilioExtensions::IncomingPhoneNumbers
17
+ end
18
+ end
30
19
  end
31
20
  end
32
21
 
33
- module Lookups
34
- class PhoneNumbers < NextGenListResource
35
- def get(number)
36
- TwilioMock::LookupMocker.new.lookup(number) if TwilioMock::Testing.enabled?
37
- super(number)
22
+ class Lookups
23
+ class V1 < Version
24
+ class PhoneNumberContext < InstanceContext
25
+ prepend TwilioExtensions::Lookups
38
26
  end
39
27
  end
40
28
  end
@@ -0,0 +1,29 @@
1
+ module TwilioExtensions
2
+ module AccountContext
3
+ def available_phone_numbers(country_code=:unset)
4
+ TwilioMock::Mocker.new.available_number if TwilioMock::Testing.enabled?
5
+ super(country_code)
6
+ end
7
+ end
8
+
9
+ module Messages
10
+ def create(attrs)
11
+ TwilioMock::Mocker.new.create_message(attrs) if TwilioMock::Testing.enabled?
12
+ super(attrs)
13
+ end
14
+ end
15
+
16
+ module IncomingPhoneNumbers
17
+ def create(attrs)
18
+ TwilioMock::Mocker.new.buy_number(attrs) if TwilioMock::Testing.enabled?
19
+ super(attrs)
20
+ end
21
+ end
22
+
23
+ module Lookups
24
+ def fetch(*)
25
+ TwilioMock::LookupMocker.new.lookup(@solution[:phone_number]) if TwilioMock::Testing.enabled?
26
+ super
27
+ end
28
+ end
29
+ end
@@ -5,7 +5,6 @@ module TwilioMock
5
5
 
6
6
  def lookup(number, country_code = nil)
7
7
  stub_request(:get, "#{base_twilio_url}/PhoneNumbers/#{number}")
8
- .with(headers: headers)
9
8
  .to_return(status: 200, body: response(number, country_code), headers: {})
10
9
  end
11
10
 
@@ -2,11 +2,10 @@ require 'twilio-ruby'
2
2
  require 'webmock'
3
3
  require_relative 'number_generator'
4
4
  require 'ostruct'
5
+ require_relative 'twilify'
5
6
 
6
7
  module TwilioMock
7
8
  class Mocker
8
- include Twilio::REST::Utils
9
-
10
9
  API_VERSION = '2010-04-01'.freeze
11
10
  HOST = 'api.twilio.com'.freeze
12
11
 
@@ -21,9 +20,9 @@ module TwilioMock
21
20
  end
22
21
 
23
22
  def available_number(number = nil, params = nil)
24
- query_string = params && params.any? ? twilify(params).to_h.to_query : ''
23
+ query_string = params && params.any? ? Twilify.process(params).to_h.to_query : ''
25
24
  stub_request(:get, "#{base_twilio_url}/AvailablePhoneNumbers/US/Local.json?#{query_string}")
26
- .with(headers: headers, basic_auth: basic_auth)
25
+ .with(basic_auth: basic_auth)
27
26
  .to_return(status: 200, body: available_number_response(number), headers: {})
28
27
  end
29
28
 
@@ -48,10 +47,6 @@ module TwilioMock
48
47
  }.to_json
49
48
  end
50
49
 
51
- def headers
52
- Twilio::REST::Client::HTTP_HEADERS
53
- end
54
-
55
50
  def basic_auth
56
51
  [@username, @token]
57
52
  end
@@ -65,9 +60,9 @@ module TwilioMock
65
60
  end
66
61
 
67
62
  def prepare_stub(attrs, path)
68
- body = twilify(attrs).map { |k, val| [k, val.to_s] }.to_h
63
+ body = Twilify.process(attrs).map { |k, val| [k, val.to_s] }.to_h
69
64
  stub_request(:post, "#{base_twilio_url}/#{path}")
70
- .with(body: body, headers: headers, basic_auth: basic_auth)
65
+ .with(body: body, basic_auth: basic_auth)
71
66
  .to_return(status: 200, body: response, headers: {})
72
67
  end
73
68
 
@@ -75,7 +70,10 @@ module TwilioMock
75
70
  number ||= number_generator.generate
76
71
  {
77
72
  sid: @username,
78
- available_phone_numbers: [{ 'PhoneNumber' => number }]
73
+ available_phone_numbers: [{ 'phone_number' => number }],
74
+ meta: {
75
+ key: 'available_phone_numbers'
76
+ }
79
77
  }.to_json
80
78
  end
81
79
 
@@ -0,0 +1,17 @@
1
+ module Twilify
2
+ module_function
3
+
4
+ # extracted from the deprecated Twilio::REST::Utils
5
+ def process(something)
6
+ if something.is_a? Hash
7
+ something = something.to_a
8
+ something = something.map { |pair| [process(pair[0]).to_sym, pair[1]] }
9
+ something = something.flatten(1)
10
+ Hash[*something]
11
+ else
12
+ something.to_s.split('_').map! do |s|
13
+ [s[0,1].capitalize, s[1..-1]].join
14
+ end.join
15
+ end
16
+ end
17
+ end
data/lib/twilio_mock.rb CHANGED
@@ -3,4 +3,5 @@ require 'twilio_mock/number_generator'
3
3
  require 'twilio_mock/messages_queue'
4
4
  require 'twilio_mock/mocker'
5
5
  require 'twilio_mock/lookup_mocker'
6
+ require 'twilio_extensions'
6
7
  require 'rest'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twilio_mock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maicol Bentancor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-07 00:00:00.000000000 Z
11
+ date: 2017-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twilio-ruby
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.13.0
19
+ version: 5.2.3
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: '3'
22
+ version: '5'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 4.13.0
29
+ version: 5.2.3
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: '3'
32
+ version: '5'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: webmock
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -57,12 +57,14 @@ extensions: []
57
57
  extra_rdoc_files: []
58
58
  files:
59
59
  - lib/rest.rb
60
+ - lib/twilio_extensions.rb
60
61
  - lib/twilio_mock.rb
61
62
  - lib/twilio_mock/lookup_mocker.rb
62
63
  - lib/twilio_mock/messages_queue.rb
63
64
  - lib/twilio_mock/mocker.rb
64
65
  - lib/twilio_mock/number_generator.rb
65
66
  - lib/twilio_mock/testing.rb
67
+ - lib/twilio_mock/twilify.rb
66
68
  homepage:
67
69
  licenses:
68
70
  - MIT