telesignature 0.0.2

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