telesignature 0.0.4 → 0.0.5

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: f5e430a6951e4fa685cb34b0fcfcde9c78583985
4
- data.tar.gz: 8c607aff7d237e6283a29a9b93975c9926cd323a
3
+ metadata.gz: 3cf01a84031f2daabb72b74fca9e54b661f81e20
4
+ data.tar.gz: abfb60952ead2911ba72a613778456fb0ce85200
5
5
  SHA512:
6
- metadata.gz: 11069f94b3df23fd6d892a5c92bf2f10992d0abda30160b998af43dd5cc32b95e7a58a0f02ee734088cd84098b7c878035a79f6a88bf3390e38b1513fad65bab
7
- data.tar.gz: f78c83ba5e3999eb61db4aa9c60f9ac4c3bf0b27cc0f12e5402abf830875f8fc3a357a882f824b117b583dfa4576ecef9503527c5db834498e1d071b004a238f
6
+ metadata.gz: 1884ea8328d04a0ca8da306131ec3e9e5f41bbab2504da27fb7dbeb4c02e6620d47d1bd5763facf59f2116da6267f697d41b771f9a993fe6ecd02063b10691fc
7
+ data.tar.gz: abdb17c479449d78b479a24af53bd0794e693cc7f2ce168b66776bb5141de599ac60386ed1e8a72fbb1793460f5502e7367705b9fc3448214cc8ba674c109e99
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- telesignature (0.0.4)
4
+ telesignature (0.0.5)
5
5
  faraday
6
6
 
7
7
  GEM
@@ -36,6 +36,7 @@ GEM
36
36
  guard-minitest (2.2.0)
37
37
  guard (~> 2.0)
38
38
  minitest (>= 3.0)
39
+ json (1.8.1)
39
40
  listen (2.7.0)
40
41
  celluloid (>= 0.15.2)
41
42
  celluloid-io (>= 0.15.0)
@@ -43,9 +44,15 @@ GEM
43
44
  rb-inotify (>= 0.9)
44
45
  lumberjack (1.0.4)
45
46
  method_source (0.8.2)
47
+ mimic (0.4.3)
48
+ json
49
+ plist
50
+ rack
51
+ sinatra
46
52
  minitest (5.3.0)
47
53
  multipart-post (2.0.0)
48
54
  nio4r (1.0.0)
55
+ plist (3.1.0)
49
56
  pry (0.9.12.6)
50
57
  coderay (~> 1.0)
51
58
  method_source (~> 0.8)
@@ -53,13 +60,21 @@ GEM
53
60
  pry-debugger (0.2.2)
54
61
  debugger (~> 1.3)
55
62
  pry (~> 0.9.10)
63
+ rack (1.5.2)
64
+ rack-protection (1.5.2)
65
+ rack
56
66
  rake (10.1.1)
57
67
  rb-fsevent (0.9.4)
58
68
  rb-inotify (0.9.3)
59
69
  ffi (>= 0.5.0)
60
70
  safe_yaml (1.0.1)
71
+ sinatra (1.4.4)
72
+ rack (~> 1.4)
73
+ rack-protection (~> 1.4)
74
+ tilt (~> 1.3, >= 1.3.4)
61
75
  slop (3.4.7)
62
76
  thor (0.18.1)
77
+ tilt (1.4.1)
63
78
  timers (1.1.0)
64
79
  webmock (1.17.4)
65
80
  addressable (>= 2.2.7)
@@ -72,6 +87,7 @@ DEPENDENCIES
72
87
  bundler (~> 1.3)
73
88
  guard
74
89
  guard-minitest
90
+ mimic
75
91
  minitest
76
92
  pry
77
93
  pry-debugger
data/README.md CHANGED
@@ -37,3 +37,25 @@ p status_info.raw_data
37
37
  p status_info.verify_code
38
38
  p "##################"
39
39
  ```
40
+
41
+ stubs mode
42
+ =============
43
+ If you're running this in a Rails app, there is a stubs mode Sintra app available.
44
+
45
+ Enable it by setting ENV['TELESIGN_STUBBED'] to something truthy.
46
+
47
+ The Sinatra app will run on "http://localhost:11989".
48
+
49
+ The stubs app will shutdown with a rails server, but a console still needs a manual shutdown.
50
+ A known issue, hoping to get that sorted out sometime soonish...
51
+
52
+ Currently stubs mode supports:
53
+
54
+ post '/v1/verify/sms'
55
+ post '/v1/verify/call'
56
+
57
+ Both of which always return a success response.
58
+
59
+ get '/v1/verify/:reference_id'
60
+
61
+ Returns VALID for any verify_code which does not contain '666'.
data/lib/telesignature.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'telesignature/version'
2
+ require 'telesignature/mock_service/railtie' if defined? Rails
2
3
 
3
4
  module Telesignature
4
5
  autoload :TelesignError, 'telesignature/telesign_error'
@@ -0,0 +1,120 @@
1
+ if defined? Rails
2
+ Rails.logger.info '***************************'
3
+ Rails.logger.info 'Starting fake telesign server'
4
+ Rails.logger.info '***************************'
5
+ end
6
+
7
+ require 'mimic'
8
+ require 'json'
9
+ require 'securerandom'
10
+
11
+ class StdHelpers
12
+ class << self
13
+ def standard_headers
14
+ # scraped from TeleSign api response
15
+ { 'date'=>Time.now.strftime("%a, %d %b %Y %H:%M:%S %z"),
16
+ 'server'=>'Apache',
17
+ 'allow'=>'GET,POST,HEAD',
18
+ 'connection'=>'close',
19
+ 'content-type'=>'application/json'}
20
+ end
21
+
22
+ def std_response_body reference_id, status_code = 'UNKNOWN'
23
+ # scraped from TeleSign api response
24
+ { 'reference_id' => reference_id,
25
+ 'resource_uri' => "/v1/verify/#{reference_id}",
26
+ 'sub_resource' => "sms",
27
+ 'errors' => [],
28
+ 'status' => {
29
+ 'updated_on' => standard_updated_on,
30
+ 'code' => 290,
31
+ 'description' => 'Message in progress'
32
+ },
33
+ 'verify' => {
34
+ 'code_state' => status_code,
35
+ 'code_entered' => ''
36
+ }
37
+ }
38
+ end
39
+
40
+ def std_reference_id
41
+ SecureRandom.uuid.gsub('-','').upcase
42
+ end
43
+
44
+ def standard_updated_on
45
+ Time.now.utc.strftime("%Y-%m-%dT%H:%M:%S.%6N")
46
+ end
47
+ end
48
+ end
49
+
50
+ Mimic.mimic port: 11989, host: 'localhost', fork: false do
51
+ # 'https://rest.telesign.com/v1/verify/sms'
52
+ # params['phone_number']
53
+ # params['language']
54
+ # params['verify_code']
55
+ # params['template']
56
+ post '/v1/verify/sms' do
57
+ http_status = 200
58
+ headers = StdHelpers.standard_headers
59
+
60
+ response_body = StdHelpers.std_response_body StdHelpers.std_reference_id
61
+
62
+ content_type :json
63
+ [http_status, headers, response_body.to_json]
64
+ end
65
+
66
+ # 'https://rest.telesign.com/v1/verify/call'
67
+ # params['phone_number']
68
+ # params['language']
69
+ # params['verify_code']
70
+ post '/v1/verify/call' do
71
+ http_status = 200
72
+ headers = StdHelpers.standard_headers
73
+ response_body = StdHelpers.std_response_body StdHelpers.std_reference_id
74
+
75
+ content_type :json
76
+ [http_status, headers, response_body.to_json]
77
+ end
78
+
79
+ # "https://rest.telesign.com/v1/verify/%s" % @expected_ref_id
80
+ # params[:reference_id]
81
+ # params[:verify_code]
82
+ get '/v1/verify/:reference_id' do
83
+ http_status = 200
84
+ headers = StdHelpers.standard_headers
85
+
86
+ status_code = if params[:verify_code] =~ /666/
87
+ 'INVALID'
88
+ else
89
+ 'VALID'
90
+ end
91
+
92
+ response_body = StdHelpers.std_response_body params[:reference_id], status_code
93
+
94
+ content_type :json
95
+ [http_status, headers, response_body.to_json]
96
+ end
97
+
98
+ # not using phoneid calls yet, but here are the stubs
99
+ # # "https://rest.telesign.com/v1/phoneid/%s/%s"
100
+
101
+ # # "/v1/phoneid/standard/%s" % phone_number
102
+ # get '/v1/phoneid/standard/:phone_number' do
103
+
104
+ # end
105
+
106
+ # # /v1/phoneid/score/%s" % phone_number
107
+ # get '/v1/phoneid/score/:phone_number' do
108
+
109
+ # end
110
+
111
+ # # /v1/phoneid/contact/%s" % phone_number
112
+ # get '/v1/phoneid/contact/:phone_number' do
113
+
114
+ # end
115
+
116
+ # # /v1/phoneid/live/%s" % phone_number
117
+ # get '/v1/phoneid/live/:phone_number' do
118
+
119
+ # end
120
+ end
@@ -0,0 +1,13 @@
1
+ module Telesignature
2
+ module MockService
3
+ class Railtie < ::Rails::Railtie
4
+ initializer 'telesignature_railtie.configure_rails_initialization' do
5
+ if ENV['TELESIGN_STUBBED']
6
+ Process.detach(Process.fork do
7
+ require 'telesignature/mock_service/fake_server'
8
+ end)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -29,7 +29,7 @@ module Telesignature
29
29
  super(
30
30
  customer_id: opts[:customer_id],
31
31
  secret_key: opts[:secret_key],
32
- ssl: (opts[:ssl] || true),
32
+ ssl: ((opts[:ssl].nil?) ? true : opts[:ssl]),
33
33
  api_host: (opts[:api_host] || 'rest.telesign.com'),
34
34
  proxy_host: (opts[:proxy_host] || nil)
35
35
  )
@@ -34,7 +34,7 @@ module Telesignature
34
34
  super(
35
35
  customer_id: opts[:customer_id],
36
36
  secret_key: opts[:secret_key],
37
- ssl: (opts[:ssl] || true),
37
+ ssl: ((opts[:ssl].nil?) ? true : opts[:ssl]),
38
38
  api_host: (opts[:api_host] || 'rest.telesign.com'),
39
39
  proxy_host: (opts[:proxy_host] || nil)
40
40
  )
@@ -1,3 +1,3 @@
1
1
  module Telesignature
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.test_files = spec.files.grep(%r{^(test)/})
18
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
19
19
 
20
20
  spec.add_dependency 'faraday'
21
21
 
@@ -27,4 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'guard-minitest'
28
28
  spec.add_development_dependency 'pry'
29
29
  spec.add_development_dependency 'pry-debugger'
30
+ spec.add_development_dependency 'mimic'
30
31
  end
@@ -30,8 +30,8 @@ class PhoneIdTest < Minitest::Test
30
30
  with( headers: @acceptance_headers).
31
31
  to_return(body: @expected_data, status: 200)
32
32
 
33
- p = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
34
- p.standard @expected_phone_no
33
+ tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
34
+ tele.standard @expected_phone_no
35
35
  end
36
36
 
37
37
  def test_standard_phoneid_unauthorized
@@ -41,10 +41,10 @@ class PhoneIdTest < Minitest::Test
41
41
  with( headers: @acceptance_headers).
42
42
  to_return(body: response_body, status: [401, 'Unauthorized'])
43
43
 
44
- p = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
44
+ tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
45
45
 
46
46
  assert_raises(Telesignature::AuthorizationError){
47
- p.standard(@expected_phone_no)
47
+ tele.standard(@expected_phone_no)
48
48
  }
49
49
  end
50
50
 
@@ -55,10 +55,10 @@ class PhoneIdTest < Minitest::Test
55
55
  with( headers: @acceptance_headers).
56
56
  to_return(body: response_body, status: [502, 'Bad Gateway'])
57
57
 
58
- p = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
58
+ tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
59
59
 
60
60
  assert_raises(Telesignature::TelesignError){
61
- p.standard(@expected_phone_no)
61
+ tele.standard(@expected_phone_no)
62
62
  }
63
63
  end
64
64
 
@@ -67,8 +67,8 @@ class PhoneIdTest < Minitest::Test
67
67
  with(query: {ucid: 'OTHR'}, headers: @acceptance_headers).
68
68
  to_return(body: @expected_data, status: 200)
69
69
 
70
- p = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
71
- p.score @expected_phone_no, 'OTHR'
70
+ tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
71
+ tele.score @expected_phone_no, 'OTHR'
72
72
  end
73
73
 
74
74
  def test_contact_phoneid
@@ -76,8 +76,8 @@ class PhoneIdTest < Minitest::Test
76
76
  with(query: {ucid: 'OTHR'}, headers: @acceptance_headers).
77
77
  to_return(body: @expected_data, status: 200)
78
78
 
79
- p = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
80
- p.contact @expected_phone_no, 'OTHR'
79
+ tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
80
+ tele.contact @expected_phone_no, 'OTHR'
81
81
  end
82
82
 
83
83
  def test_live_phoneid
@@ -85,8 +85,8 @@ class PhoneIdTest < Minitest::Test
85
85
  with(query: {ucid: 'OTHR'}, headers: @acceptance_headers).
86
86
  to_return(body: @expected_data, status: 200)
87
87
 
88
- p = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
89
- p.live @expected_phone_no, 'OTHR'
88
+ tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
89
+ tele.live @expected_phone_no, 'OTHR'
90
90
  end
91
91
 
92
92
  # # @mock.patch.object(requests, "get")
data/test/verify_test.rb CHANGED
@@ -41,10 +41,30 @@ class VerifyTest < Minitest::Test
41
41
  headers: @acceptance_headers).
42
42
  to_return(body: @expected_data, status: 200)
43
43
 
44
- p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
45
- p.sms phone_number: @expected_phone_no,
46
- verify_code: @expected_verify_code,
47
- language: @expected_language
44
+ tele = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
45
+ tele.sms phone_number: @expected_phone_no,
46
+ verify_code: @expected_verify_code,
47
+ language: @expected_language
48
+ end
49
+
50
+ def test_setting_ssl_false
51
+ fields = {phone_number: @expected_phone_no,
52
+ language: @expected_language,
53
+ verify_code: @expected_verify_code,
54
+ template: ''}
55
+
56
+ stub_request(:post, 'http://rest.telesign.com/v1/verify/sms').
57
+ with( body: fields,
58
+ headers: @acceptance_headers).
59
+ to_return(body: @expected_data, status: 200)
60
+
61
+ tele = Telesignature::Verify.new customer_id: @expected_cid,
62
+ secret_key: @expected_secret_key,
63
+ ssl: false
64
+
65
+ tele.sms phone_number: @expected_phone_no,
66
+ verify_code: @expected_verify_code,
67
+ language: @expected_language
48
68
  end
49
69
 
50
70
  def test_verify_call
@@ -57,10 +77,10 @@ class VerifyTest < Minitest::Test
57
77
  headers: @acceptance_headers).
58
78
  to_return(body: @expected_data, status: 200)
59
79
 
60
- p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
61
- p.call phone_number: @expected_phone_no,
62
- verify_code: @expected_verify_code,
63
- language: @expected_language
80
+ tele = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
81
+ tele.call phone_number: @expected_phone_no,
82
+ verify_code: @expected_verify_code,
83
+ language: @expected_language
64
84
  end
65
85
 
66
86
  def test_verify_sms_default_code
@@ -74,9 +94,9 @@ class VerifyTest < Minitest::Test
74
94
  headers: @acceptance_headers).
75
95
  to_return(body: @expected_data, status: 200)
76
96
 
77
- p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
78
- p.sms phone_number: @expected_phone_no,
79
- language: @expected_language
97
+ tele = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
98
+ tele.sms phone_number: @expected_phone_no,
99
+ language: @expected_language
80
100
  end
81
101
 
82
102
  def test_verify_call_default_code
@@ -89,9 +109,9 @@ class VerifyTest < Minitest::Test
89
109
  headers: @acceptance_headers).
90
110
  to_return(body: @expected_data, status: 200)
91
111
 
92
- p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
93
- p.call phone_number: @expected_phone_no,
94
- language: @expected_language
112
+ tele = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
113
+ tele.call phone_number: @expected_phone_no,
114
+ language: @expected_language
95
115
  end
96
116
 
97
117
  def test_status_check
@@ -100,8 +120,8 @@ class VerifyTest < Minitest::Test
100
120
  with( headers: @acceptance_headers).
101
121
  to_return(body: @expected_data, status: 200)
102
122
 
103
- p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
104
- p.status @expected_ref_id
123
+ tele = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
124
+ tele.status @expected_ref_id
105
125
  end
106
126
 
107
127
  def test_report_code
@@ -111,8 +131,8 @@ class VerifyTest < Minitest::Test
111
131
  headers: @acceptance_headers).
112
132
  to_return(body: @expected_data, status: 200)
113
133
 
114
- p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
115
- p.status @expected_ref_id, @expected_verify_code
134
+ tele = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
135
+ tele.status @expected_ref_id, @expected_verify_code
116
136
  end
117
137
 
118
138
  # # @mock.patch.object(requests, "post")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telesignature
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Koch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-09 00:00:00.000000000 Z
11
+ date: 2014-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: mimic
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description: Client gem for Telesign REST API
140
154
  email:
141
155
  - akoch@practicefusion.com
@@ -156,6 +170,8 @@ files:
156
170
  - lib/telesignature/auth.rb
157
171
  - lib/telesignature/authorization_error.rb
158
172
  - lib/telesignature/helpers.rb
173
+ - lib/telesignature/mock_service/fake_server.rb
174
+ - lib/telesignature/mock_service/railtie.rb
159
175
  - lib/telesignature/phone_id.rb
160
176
  - lib/telesignature/response.rb
161
177
  - lib/telesignature/service_base.rb