aggcat 0.2.5 → 0.2.6
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.
- data/lib/aggcat/client.rb +12 -9
- data/lib/aggcat/version.rb +1 -1
- data/test/aggcat/client_test.rb +26 -0
- data/test/fixtures/challenges.xml +6 -0
- metadata +3 -1
data/lib/aggcat/client.rb
CHANGED
@@ -26,10 +26,10 @@ module Aggcat
|
|
26
26
|
post("/institutions/#{institution_id}/logins", body)
|
27
27
|
end
|
28
28
|
|
29
|
-
def account_confirmation(institution_id, challenge_session_id, challenge_node_id,
|
30
|
-
validate(institution_id: institution_id, challenge_node_id: challenge_session_id, challenge_node_id: challenge_node_id,
|
29
|
+
def account_confirmation(institution_id, challenge_session_id, challenge_node_id, answers)
|
30
|
+
validate(institution_id: institution_id, challenge_node_id: challenge_session_id, challenge_node_id: challenge_node_id, answers: answers)
|
31
31
|
headers = {'challengeSessionId' => challenge_session_id, 'challengeNodeId' => challenge_node_id}
|
32
|
-
post("/institutions/#{institution_id}/logins",
|
32
|
+
post("/institutions/#{institution_id}/logins", challenge_answers(answers), headers)
|
33
33
|
end
|
34
34
|
|
35
35
|
def accounts
|
@@ -56,10 +56,10 @@ module Aggcat
|
|
56
56
|
put("/logins/#{login_id}?refresh=true", body)
|
57
57
|
end
|
58
58
|
|
59
|
-
def update_login_confirmation(login_id, challenge_session_id, challenge_node_id,
|
60
|
-
validate(login_id: login_id, challenge_node_id: challenge_session_id, challenge_node_id: challenge_node_id,
|
61
|
-
headers = {challengeSessionId
|
62
|
-
put("/logins/#{login_id}?refresh=true",
|
59
|
+
def update_login_confirmation(login_id, challenge_session_id, challenge_node_id, answers)
|
60
|
+
validate(login_id: login_id, challenge_node_id: challenge_session_id, challenge_node_id: challenge_node_id, answers: answers)
|
61
|
+
headers = {'challengeSessionId' => challenge_session_id, 'challengeNodeId' => challenge_node_id}
|
62
|
+
put("/logins/#{login_id}?refresh=true", challenge_answers(answers), headers)
|
63
63
|
end
|
64
64
|
|
65
65
|
def delete_account(account_id)
|
@@ -143,14 +143,17 @@ module Aggcat
|
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
146
|
-
def
|
146
|
+
def challenge_answers(answers)
|
147
147
|
xml = Builder::XmlMarkup.new
|
148
148
|
xml.InstitutionLogin('xmlns' => LOGIN_NAMESPACE) do |login|
|
149
149
|
login.challengeResponses do |challenge|
|
150
|
-
|
150
|
+
[answers].flatten.each do |answer|
|
151
|
+
challenge.response(answer, 'xmlns' => CHALLENGE_NAMESPACE)
|
152
|
+
end
|
151
153
|
end
|
152
154
|
end
|
153
155
|
end
|
156
|
+
|
154
157
|
end
|
155
158
|
end
|
156
159
|
|
data/lib/aggcat/version.rb
CHANGED
data/test/aggcat/client_test.rb
CHANGED
@@ -189,6 +189,17 @@ class ClientTest < Test::Unit::TestCase
|
|
189
189
|
@client.account_confirmation(institution_id, challenge_session_id, challenge_node_id, answer)
|
190
190
|
end
|
191
191
|
|
192
|
+
def test_account_confirmation_multi_answer
|
193
|
+
institution_id = '100000'
|
194
|
+
challenge_session_id = '1234'
|
195
|
+
challenge_node_id = '4321'
|
196
|
+
answers = ['answer1', 'answer2']
|
197
|
+
parser = XmlHasher::Parser.new(snakecase: true, ignore_namespaces: true)
|
198
|
+
stub_get("/institutions/#{institution_id}").to_return(:body => fixture('institution.xml'), :headers => {:content_type => 'application/xml; charset=utf-8'})
|
199
|
+
stub_post("/institutions/#{institution_id}/logins").to_return(:body => lambda { |request| assert_equal(parser.parse(fixture('challenges.xml')), parser.parse(request.body)) })
|
200
|
+
@client.account_confirmation(institution_id, challenge_session_id, challenge_node_id, answers)
|
201
|
+
end
|
202
|
+
|
192
203
|
def test_update_login_confirmation
|
193
204
|
login_id = '1234567890'
|
194
205
|
challenge_session_id = '1234'
|
@@ -204,6 +215,21 @@ class ClientTest < Test::Unit::TestCase
|
|
204
215
|
@client.update_login_confirmation(login_id, challenge_session_id, challenge_node_id, answer)
|
205
216
|
end
|
206
217
|
|
218
|
+
def test_update_login_confirmation_multi_answers
|
219
|
+
login_id = '1234567890'
|
220
|
+
challenge_session_id = '1234'
|
221
|
+
challenge_node_id = '4321'
|
222
|
+
answers = ['answer1', 'answer2']
|
223
|
+
validator = lambda do |request|
|
224
|
+
parser = XmlHasher::Parser.new(snakecase: true, ignore_namespaces: true)
|
225
|
+
assert_equal(parser.parse(fixture('challenges.xml')), parser.parse(request.body))
|
226
|
+
assert_equal(challenge_session_id, request.headers['Challengesessionid'])
|
227
|
+
assert_equal(challenge_node_id, request.headers['Challengenodeid'])
|
228
|
+
end
|
229
|
+
stub_put("/logins/#{login_id}?refresh=true").to_return(:body => validator)
|
230
|
+
@client.update_login_confirmation(login_id, challenge_session_id, challenge_node_id, answers)
|
231
|
+
end
|
232
|
+
|
207
233
|
def test_retry_success
|
208
234
|
institution_id = '100000'
|
209
235
|
stub_get("/institutions/#{institution_id}").to_timeout.times(1).then.to_return(:body => fixture('institution.xml'), :headers => {:content_type => 'application/xml; charset=utf-8'})
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<InstitutionLogin xmlns:v1="http://schema.intuit.com/platform/fdatafeed/institutionlogin/v1">
|
2
|
+
<challengeResponses>
|
3
|
+
<response xmlns:v11="http://schema.intuit.com/platform/fdatafeed/challenge/v1">answer1</response>
|
4
|
+
<response xmlns:v11="http://schema.intuit.com/platform/fdatafeed/challenge/v1">answer2</response>
|
5
|
+
</challengeResponses>
|
6
|
+
</InstitutionLogin>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aggcat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- test/fixtures/accounts.xml
|
149
149
|
- test/fixtures/cert.key
|
150
150
|
- test/fixtures/challenge.xml
|
151
|
+
- test/fixtures/challenges.xml
|
151
152
|
- test/fixtures/institution.xml
|
152
153
|
- test/fixtures/institutions.xml
|
153
154
|
- test/fixtures/login.xml
|
@@ -186,6 +187,7 @@ test_files:
|
|
186
187
|
- test/fixtures/accounts.xml
|
187
188
|
- test/fixtures/cert.key
|
188
189
|
- test/fixtures/challenge.xml
|
190
|
+
- test/fixtures/challenges.xml
|
189
191
|
- test/fixtures/institution.xml
|
190
192
|
- test/fixtures/institutions.xml
|
191
193
|
- test/fixtures/login.xml
|