telesignature 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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