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 +4 -4
- data/Gemfile.lock +17 -1
- data/README.md +22 -0
- data/lib/telesignature.rb +1 -0
- data/lib/telesignature/mock_service/fake_server.rb +120 -0
- data/lib/telesignature/mock_service/railtie.rb +13 -0
- data/lib/telesignature/phone_id.rb +1 -1
- data/lib/telesignature/verify.rb +1 -1
- data/lib/telesignature/version.rb +1 -1
- data/telesignature.gemspec +2 -1
- data/test/phone_id_test.rb +12 -12
- data/test/verify_test.rb +38 -18
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cf01a84031f2daabb72b74fca9e54b661f81e20
|
4
|
+
data.tar.gz: abfb60952ead2911ba72a613778456fb0ce85200
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
+
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
@@ -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]
|
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
|
)
|
data/lib/telesignature/verify.rb
CHANGED
@@ -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]
|
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
|
)
|
data/telesignature.gemspec
CHANGED
@@ -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 = [
|
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
|
data/test/phone_id_test.rb
CHANGED
@@ -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
|
-
|
34
|
-
|
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
|
-
|
44
|
+
tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
|
45
45
|
|
46
46
|
assert_raises(Telesignature::AuthorizationError){
|
47
|
-
|
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
|
-
|
58
|
+
tele = Telesignature::PhoneId.new customer_id: @expected_cid, secret_key: @expected_secret_key
|
59
59
|
|
60
60
|
assert_raises(Telesignature::TelesignError){
|
61
|
-
|
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
|
-
|
71
|
-
|
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
|
-
|
80
|
-
|
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
|
-
|
89
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
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
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
93
|
-
|
94
|
-
|
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
|
-
|
104
|
-
|
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
|
-
|
115
|
-
|
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
|
+
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-
|
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
|