telesignature 0.0.2
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 +7 -0
- data/.gitignore +18 -0
- data/.pryrc +6 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +75 -0
- data/Guardfile +9 -0
- data/LICENSE +20 -0
- data/LICENSE.txt +22 -0
- data/README.md +8 -0
- data/Rakefile +1 -0
- data/lib/telesignature/auth.rb +67 -0
- data/lib/telesignature/authorization_error.rb +23 -0
- data/lib/telesignature/helpers.rb +9 -0
- data/lib/telesignature/phone_id.rb +324 -0
- data/lib/telesignature/response.rb +13 -0
- data/lib/telesignature/service_base.rb +39 -0
- data/lib/telesignature/telesign_error.rb +34 -0
- data/lib/telesignature/validation_error.rb +23 -0
- data/lib/telesignature/verify.rb +273 -0
- data/lib/telesignature/version.rb +3 -0
- data/lib/telesignature.rb +13 -0
- data/telesignature.gemspec +30 -0
- data/test/auth_test.rb +81 -0
- data/test/exceptions_test.rb +57 -0
- data/test/phone_id_test.rb +159 -0
- data/test/test_helper.rb +10 -0
- data/test/verify_test.rb +193 -0
- metadata +201 -0
data/test/verify_test.rb
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pry'
|
3
|
+
require 'telesignature'
|
4
|
+
require 'webmock/minitest'
|
5
|
+
|
6
|
+
class VerifyTest < Minitest::Test
|
7
|
+
# Test for Verify telesign sdk
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@expected_cid = '99999999-1F7E-11E1-B760-000000000000'
|
11
|
+
@expected_secret_key = '8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M8M=='
|
12
|
+
@expected_phone_no = '12343455678'
|
13
|
+
@expected_language = 'en'
|
14
|
+
@expected_verify_code = '54321'
|
15
|
+
@expected_ref_id = '99999999999999999'
|
16
|
+
@expected_data = '{ "a":"AA", "b":"BB" }'
|
17
|
+
@expected_sms_resource = 'https://rest.telesign.com/v1/verify/sms'
|
18
|
+
@expected_call_resource = 'https://rest.telesign.com/v1/verify/call'
|
19
|
+
@expected_status_resource = "https://rest.telesign.com/v1/verify/%s" % @expected_ref_id
|
20
|
+
@proxy = 'localhost:8080'
|
21
|
+
@expected_proxy = 'https://localhost:8080'
|
22
|
+
|
23
|
+
@acceptance_headers = { 'Accept' => /.*/,
|
24
|
+
'Accept-Encoding' => /.*/,
|
25
|
+
'Authorization' => /.*/,
|
26
|
+
'User-Agent' => /.*/,
|
27
|
+
'X-Ts-Auth-Method' => /.*/,
|
28
|
+
'X-Ts-Date'=> /.*/,
|
29
|
+
'X-Ts-Nonce' => /.*/,
|
30
|
+
'Content-Type'=>'application/x-www-form-urlencoded'}
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_verify_sms
|
34
|
+
fields = {phone_number: @expected_phone_no,
|
35
|
+
language: @expected_language,
|
36
|
+
verify_code: @expected_verify_code,
|
37
|
+
template: ''}
|
38
|
+
|
39
|
+
stub_request(:post, @expected_sms_resource).
|
40
|
+
with( body: fields,
|
41
|
+
headers: @acceptance_headers).
|
42
|
+
to_return(body: @expected_data, status: 200)
|
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
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_verify_call
|
51
|
+
fields = {phone_number: @expected_phone_no,
|
52
|
+
language: @expected_language,
|
53
|
+
verify_code: @expected_verify_code}
|
54
|
+
|
55
|
+
stub_request(:post, @expected_call_resource).
|
56
|
+
with( body: fields,
|
57
|
+
headers: @acceptance_headers).
|
58
|
+
to_return(body: @expected_data, status: 200)
|
59
|
+
|
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
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_verify_sms_default_code
|
67
|
+
fields = {phone_number: @expected_phone_no,
|
68
|
+
language: @expected_language,
|
69
|
+
verify_code: /\d{5}/,
|
70
|
+
template: ''}
|
71
|
+
|
72
|
+
stub_request(:post, @expected_sms_resource).
|
73
|
+
with( body: fields,
|
74
|
+
headers: @acceptance_headers).
|
75
|
+
to_return(body: @expected_data, status: 200)
|
76
|
+
|
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
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_verify_call_default_code
|
83
|
+
fields = {phone_number: @expected_phone_no,
|
84
|
+
language: @expected_language,
|
85
|
+
verify_code: /\d{5}/}
|
86
|
+
|
87
|
+
stub_request(:post, @expected_call_resource).
|
88
|
+
with( body: fields,
|
89
|
+
headers: @acceptance_headers).
|
90
|
+
to_return(body: @expected_data, status: 200)
|
91
|
+
|
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
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_status_check
|
98
|
+
@acceptance_headers.delete('Content-Type')
|
99
|
+
stub_request(:get, @expected_status_resource).
|
100
|
+
with( headers: @acceptance_headers).
|
101
|
+
to_return(body: @expected_data, status: 200)
|
102
|
+
|
103
|
+
p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
|
104
|
+
p.status @expected_ref_id
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_report_code
|
108
|
+
@acceptance_headers.delete('Content-Type')
|
109
|
+
stub_request(:get, @expected_status_resource).
|
110
|
+
with( query: {verify_code: @expected_verify_code.to_s},
|
111
|
+
headers: @acceptance_headers).
|
112
|
+
to_return(body: @expected_data, status: 200)
|
113
|
+
|
114
|
+
p = Telesignature::Verify.new customer_id: @expected_cid, secret_key: @expected_secret_key
|
115
|
+
p.status @expected_ref_id, @expected_verify_code
|
116
|
+
end
|
117
|
+
|
118
|
+
# # @mock.patch.object(requests, "post")
|
119
|
+
# def test_verify_sms_with_proxy
|
120
|
+
# response = mock.Mock()
|
121
|
+
# response.reason = ""
|
122
|
+
# response.status_code = 200
|
123
|
+
# response.text = @expected_data
|
124
|
+
# req_mock.return_value = response
|
125
|
+
|
126
|
+
# p = Verify.new(@expected_cid, @expected_secret_key, proxy_host="localhost:8080")
|
127
|
+
# p.sms(@expected_phone_no, @expected_verify_code, @expected_language)
|
128
|
+
|
129
|
+
# assert_true req_mock.called
|
130
|
+
# _, kwargs = req_mock.call_args
|
131
|
+
# assert_equal kwargs['url'], @expected_sms_resource, "Sms verify resource was incorrect"
|
132
|
+
# assert_equal kwargs["data"]["phone_number"], @expected_phone_no, "Phone number field did not match"
|
133
|
+
# assert_equal kwargs["data"]["language"], @expected_language, "Language field did not match"
|
134
|
+
# assert_equal kwargs["data"]["verify_code"], @expected_verify_code, "Verify code field did not match"
|
135
|
+
# assert_equal kwargs["proxies"]["https"], @expected_proxy, "Proxy did not match"
|
136
|
+
# end
|
137
|
+
|
138
|
+
# # @mock.patch.object(requests, "post")
|
139
|
+
# def test_verify_call_with_proxy
|
140
|
+
# response = mock.Mock()
|
141
|
+
# response.reason = ""
|
142
|
+
# response.status_code = 200
|
143
|
+
# response.text = @expected_data
|
144
|
+
# req_mock.return_value = response
|
145
|
+
|
146
|
+
# p = Verify.new(@expected_cid, @expected_secret_key, proxy_host=@proxy)
|
147
|
+
# p.call(@expected_phone_no, @expected_verify_code, @expected_language)
|
148
|
+
|
149
|
+
# assert_true req_mock.called
|
150
|
+
# _, kwargs = req_mock.call_args
|
151
|
+
# assert_equal kwargs['url'], @expected_call_resource, "Call verify resource was incorrect"
|
152
|
+
# assert_equal kwargs["data"]["phone_number"], @expected_phone_no, "Phone number field did not match"
|
153
|
+
# assert_equal kwargs["data"]["language"], @expected_language, "Language field did not match"
|
154
|
+
# assert_equal kwargs["data"]["verify_code"], @expected_verify_code, "Verify code field did not match"
|
155
|
+
# assert_equal kwargs["proxies"]["https"], @expected_proxy, "Proxy did not match"
|
156
|
+
# end
|
157
|
+
|
158
|
+
# # @mock.patch.object(requests, "get")
|
159
|
+
# def test_status_check_with_proxy
|
160
|
+
# response = mock.Mock()
|
161
|
+
# response.reason = ""
|
162
|
+
# response.status_code = 200
|
163
|
+
# response.text = @expected_data
|
164
|
+
# req_mock.return_value = response
|
165
|
+
|
166
|
+
# p = Verify.new(@expected_cid, @expected_secret_key, proxy_host=@proxy)
|
167
|
+
# p.status(@expected_ref_id)
|
168
|
+
|
169
|
+
# assert_true req_mock.called
|
170
|
+
# _, kwargs = req_mock.call_args
|
171
|
+
# assert_equal kwargs["url"], @expected_status_resource, "Status resource was incorrect"
|
172
|
+
# assert_equal kwargs["proxies"]["https"], @expected_proxy, "Proxy did not match"
|
173
|
+
# end
|
174
|
+
|
175
|
+
# # @mock.patch.object(requests, "get")
|
176
|
+
# def test_report_code_with_proxy
|
177
|
+
# response = mock.Mock()
|
178
|
+
# response.reason = ""
|
179
|
+
# response.status_code = 200
|
180
|
+
# response.text = @expected_data
|
181
|
+
# req_mock.return_value = response
|
182
|
+
|
183
|
+
# p = Verify.new(@expected_cid, @expected_secret_key, proxy_host=@proxy)
|
184
|
+
# p.status(@expected_ref_id, @expected_verify_code)
|
185
|
+
|
186
|
+
# assert_true req_mock.called
|
187
|
+
# _, kwargs = req_mock.call_args
|
188
|
+
# assert_equal kwargs["url"], @expected_status_resource, "Status resource was incorrect"
|
189
|
+
# assert_equal kwargs["params"]["verify_code"], @expected_verify_code, "Verify code did not match"
|
190
|
+
# assert_equal kwargs["proxies"]["https"], @expected_proxy, "Proxy did not match"
|
191
|
+
# end
|
192
|
+
end
|
193
|
+
|
metadata
ADDED
@@ -0,0 +1,201 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: telesignature
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andy Koch
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard-minitest
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry-debugger
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: Client gem for Telesign REST API
|
140
|
+
email:
|
141
|
+
- akoch@practicefusion.com
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- .gitignore
|
147
|
+
- .pryrc
|
148
|
+
- Gemfile
|
149
|
+
- Gemfile.lock
|
150
|
+
- Guardfile
|
151
|
+
- LICENSE
|
152
|
+
- LICENSE.txt
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- lib/telesignature.rb
|
156
|
+
- lib/telesignature/auth.rb
|
157
|
+
- lib/telesignature/authorization_error.rb
|
158
|
+
- lib/telesignature/helpers.rb
|
159
|
+
- lib/telesignature/phone_id.rb
|
160
|
+
- lib/telesignature/response.rb
|
161
|
+
- lib/telesignature/service_base.rb
|
162
|
+
- lib/telesignature/telesign_error.rb
|
163
|
+
- lib/telesignature/validation_error.rb
|
164
|
+
- lib/telesignature/verify.rb
|
165
|
+
- lib/telesignature/version.rb
|
166
|
+
- telesignature.gemspec
|
167
|
+
- test/auth_test.rb
|
168
|
+
- test/exceptions_test.rb
|
169
|
+
- test/phone_id_test.rb
|
170
|
+
- test/test_helper.rb
|
171
|
+
- test/verify_test.rb
|
172
|
+
homepage: https://github.com/practicefusion/telesignature
|
173
|
+
licenses:
|
174
|
+
- MIT
|
175
|
+
metadata: {}
|
176
|
+
post_install_message:
|
177
|
+
rdoc_options: []
|
178
|
+
require_paths:
|
179
|
+
- lib
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - '>='
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
187
|
+
- - '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
190
|
+
requirements: []
|
191
|
+
rubyforge_project:
|
192
|
+
rubygems_version: 2.0.3
|
193
|
+
signing_key:
|
194
|
+
specification_version: 4
|
195
|
+
summary: Client gem for Telesign REST API
|
196
|
+
test_files:
|
197
|
+
- test/auth_test.rb
|
198
|
+
- test/exceptions_test.rb
|
199
|
+
- test/phone_id_test.rb
|
200
|
+
- test/test_helper.rb
|
201
|
+
- test/verify_test.rb
|