ofx_for_ruby 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.externalToolBuilders/Rebuild parsers.launch +10 -0
- data/.gitignore +9 -0
- data/.loadpath +5 -0
- data/.project +27 -0
- data/COPYING +674 -0
- data/Gemfile +2 -0
- data/README +47 -0
- data/RELEASE_NOTES +45 -0
- data/Rakefile +63 -0
- data/lib/ofx.rb +60 -0
- data/lib/ofx/1.0.2/banking_message_set.rb +261 -0
- data/lib/ofx/1.0.2/credit_card_statement_message_set.rb +269 -0
- data/lib/ofx/1.0.2/document.rb +34 -0
- data/lib/ofx/1.0.2/email_message_set.rb +34 -0
- data/lib/ofx/1.0.2/financial_institution_profile_message_set.rb +155 -0
- data/lib/ofx/1.0.2/header.rb +48 -0
- data/lib/ofx/1.0.2/interbank_funds_transfer_message_set.rb +30 -0
- data/lib/ofx/1.0.2/investment_security_list_message_set.rb +30 -0
- data/lib/ofx/1.0.2/investment_statement_message_set.rb +30 -0
- data/lib/ofx/1.0.2/lexer.rb +135 -0
- data/lib/ofx/1.0.2/message_set.rb +165 -0
- data/lib/ofx/1.0.2/ofx_102.racc +90 -0
- data/lib/ofx/1.0.2/ofx_102.rex +65 -0
- data/lib/ofx/1.0.2/parser.rb +215 -0
- data/lib/ofx/1.0.2/payment_message_set.rb +30 -0
- data/lib/ofx/1.0.2/serializer.rb +114 -0
- data/lib/ofx/1.0.2/signon_message_set.rb +121 -0
- data/lib/ofx/1.0.2/signup_message_set.rb +186 -0
- data/lib/ofx/1.0.2/statements.rb +54 -0
- data/lib/ofx/1.0.2/status.rb +30 -0
- data/lib/ofx/1.0.2/wire_funds_transfer_message_set.rb +30 -0
- data/lib/ofx/banking_message_set.rb +125 -0
- data/lib/ofx/credit_card_statement_message_set.rb +104 -0
- data/lib/ofx/document.rb +30 -0
- data/lib/ofx/email_message_set.rb +42 -0
- data/lib/ofx/file_unique_identifier.rb +28 -0
- data/lib/ofx/financial_client.rb +76 -0
- data/lib/ofx/financial_institution.rb +83 -0
- data/lib/ofx/financial_institution_profile_message_set.rb +67 -0
- data/lib/ofx/header.rb +115 -0
- data/lib/ofx/http/cacert.pem +3509 -0
- data/lib/ofx/http/ofx_http_client.rb +84 -0
- data/lib/ofx/interbank_funds_transfer_message_set.rb +33 -0
- data/lib/ofx/investment_security_list_message_set.rb +33 -0
- data/lib/ofx/investment_statement_message_set.rb +33 -0
- data/lib/ofx/message_set.rb +78 -0
- data/lib/ofx/payment_message_set.rb +33 -0
- data/lib/ofx/serializer.rb +39 -0
- data/lib/ofx/signon_message_set.rb +141 -0
- data/lib/ofx/signup_message_set.rb +84 -0
- data/lib/ofx/statements.rb +49 -0
- data/lib/ofx/status.rb +100 -0
- data/lib/ofx/transaction_unique_identifier.rb +28 -0
- data/lib/ofx/version.rb +82 -0
- data/lib/ofx/wire_funds_transfer_message_set.rb +33 -0
- data/ofx_for_ruby.gemspec +25 -0
- data/planning/OFX Specification completion.ods +0 -0
- data/test/capital_one/capital_one_helper.rb +77 -0
- data/test/capital_one/fixtures/README +10 -0
- data/test/capital_one/fixtures/fipid-5599.xml +98 -0
- data/test/capital_one/test_banking_statement.rb +108 -0
- data/test/capital_one/test_financial_institution_profile.rb +295 -0
- data/test/capital_one/test_ofx_http_client.rb +72 -0
- data/test/capital_one/test_signup_account_information.rb +100 -0
- data/test/citi/citi_helper.rb +77 -0
- data/test/citi/fixtures/README +9 -0
- data/test/citi/fixtures/fipid-6642.xml +98 -0
- data/test/citi/test_credit_card_statement.rb +159 -0
- data/test/citi/test_financial_institution_profile.rb +231 -0
- data/test/citi/test_ofx_http_client.rb +71 -0
- data/test/citi/test_signup_account_information.rb +85 -0
- data/test/test_helper.rb +4 -0
- data/test/test_ofx_version.rb +141 -0
- metadata +210 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
If you want to run tests for Capital One, you will need to place two files here called capital-one-accounts and capital-one-credentials. These
|
2
|
+
should contain valid Capital One account numbers and logins.
|
3
|
+
|
4
|
+
Examples:
|
5
|
+
capital-one-accounts:
|
6
|
+
checking,123123123
|
7
|
+
savings,456456456
|
8
|
+
|
9
|
+
capital-one-credentials:
|
10
|
+
my_user_name,my_password
|
@@ -0,0 +1,98 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<MSNOnlSvcInfo Version="2.0" xmlns:msxml="urn:schemas-microsoft-com:xslt">
|
3
|
+
<ProviderSettings>
|
4
|
+
<FIPID>5599</FIPID>
|
5
|
+
<Name>Capital One bank</Name>
|
6
|
+
<Address1>PO Box 61540</Address1>
|
7
|
+
<Address2></Address2>
|
8
|
+
<Address3></Address3>
|
9
|
+
<City>New Orleans</City>
|
10
|
+
<State>LA</State>
|
11
|
+
<Zip>70161-1540</Zip>
|
12
|
+
<Country>USA</Country>
|
13
|
+
<Phone>8774423764</Phone>
|
14
|
+
<InternetMail></InternetMail>
|
15
|
+
<Website1>https://onlinebanking.capitalone.com/</Website1>
|
16
|
+
<hfi>{8ACC96F3-20DD-4CDF-AB44-2DC1C66EE5DB}</hfi>
|
17
|
+
<hfisvc>{FCF51E18-A96E-41E3-ADDE-0EBFF1891BA8}</hfisvc>
|
18
|
+
<DriverType>O</DriverType>
|
19
|
+
<StandAlone>0</StandAlone>
|
20
|
+
<Org>Hibernia</Org>
|
21
|
+
<FID>1001</FID>
|
22
|
+
<AcctListAvail>1</AcctListAvail>
|
23
|
+
<ClientActReq>0</ClientActReq>
|
24
|
+
<BrokerID></BrokerID>
|
25
|
+
<OFXHeaderVer>102</OFXHeaderVer>
|
26
|
+
<FullSyncSupp>0</FullSyncSupp>
|
27
|
+
<DisallowUSASCIIEncoding>0</DisallowUSASCIIEncoding>
|
28
|
+
<DisallowUNICODEEncoding>1</DisallowUNICODEEncoding>
|
29
|
+
<DisallowUTF8Encoding>1</DisallowUTF8Encoding>
|
30
|
+
<DisallowGenMail>0</DisallowGenMail>
|
31
|
+
<DisallowPinChange>0</DisallowPinChange>
|
32
|
+
<Min>8</Min>
|
33
|
+
<Max>12</Max>
|
34
|
+
<Alpha>1</Alpha>
|
35
|
+
<Numeric>1</Numeric>
|
36
|
+
<Special>0</Special>
|
37
|
+
<Spaces>0</Spaces>
|
38
|
+
<ChangePin>0</ChangePin>
|
39
|
+
<TANRequired>0</TANRequired>
|
40
|
+
<ProviderURL>https://onlinebanking.capitalone.com/scripts/serverext.dll</ProviderURL>
|
41
|
+
<ServiceUpdateURL></ServiceUpdateURL>
|
42
|
+
<SmallLogoURL>https://www.microsoft.com/Money/Money2005/USA/451.bmp</SmallLogoURL>
|
43
|
+
<ProvUpdateDescURL></ProvUpdateDescURL>
|
44
|
+
<CommentsTXT>If you have any questions or concerns, please feel free to contact Capital One Bank Customer Service toll-free at 1-877-442-3764 or visit our website listed above.\r\n\r\nWe look forward to providing you with on-line banking and bill payment services.\r\n</CommentsTXT>
|
45
|
+
<UserIDString>User ID</UserIDString>
|
46
|
+
<PasswordString>Password</PasswordString>
|
47
|
+
<ServiceVersion>2</ServiceVersion>
|
48
|
+
<StatementLogonURL></StatementLogonURL>
|
49
|
+
<PaymentLogonURL></PaymentLogonURL>
|
50
|
+
<WebServicesURL></WebServicesURL>
|
51
|
+
<BrandingDate>3/17/2006</BrandingDate>
|
52
|
+
</ProviderSettings>
|
53
|
+
<BankingCapabilities>
|
54
|
+
<Bank>1</Bank>
|
55
|
+
<BankMail>1</BankMail>
|
56
|
+
<IntraXferCanSched>0</IntraXferCanSched>
|
57
|
+
<CreditCard>1</CreditCard>
|
58
|
+
<DfltDays>0</DfltDays>
|
59
|
+
<IntraXferSupp>1</IntraXferSupp>
|
60
|
+
<IntraSyncSupp>0</IntraSyncSupp>
|
61
|
+
</BankingCapabilities>
|
62
|
+
<BillPayCapabilities>
|
63
|
+
<Pay>1</Pay>
|
64
|
+
<BillPayMail>1</BillPayMail>
|
65
|
+
<DfltDaysWith>4</DfltDaysWith>
|
66
|
+
<DfltDaysToPay>4</DfltDaysToPay>
|
67
|
+
<XferDfltDaysWith>0</XferDfltDaysWith>
|
68
|
+
<XferDfltDaysToPay>0</XferDfltDaysToPay>
|
69
|
+
<IdDfltDaysWith>0</IdDfltDaysWith>
|
70
|
+
<IdDfltDaysToPay>0</IdDfltDaysToPay>
|
71
|
+
<CountNonBusDays>0</CountNonBusDays>
|
72
|
+
<PmtByAddr>1</PmtByAddr>
|
73
|
+
<PmtByXfer>0</PmtByXfer>
|
74
|
+
<PmtByPayeeID>0</PmtByPayeeID>
|
75
|
+
<DisallowRecPmt>0</DisallowRecPmt>
|
76
|
+
<DisallowCreditCardPmt>1</DisallowCreditCardPmt>
|
77
|
+
<UseProcessDateModel>0</UseProcessDateModel>
|
78
|
+
<BillPay2AddrLines>0</BillPay2AddrLines>
|
79
|
+
</BillPayCapabilities>
|
80
|
+
<InvestmentCapabilities>
|
81
|
+
<BrkStmt>0</BrkStmt>
|
82
|
+
<InvMail>0</InvMail>
|
83
|
+
<DisallowInvTranDownload>1</DisallowInvTranDownload>
|
84
|
+
<DisallowOODownload>1</DisallowOODownload>
|
85
|
+
<DisallowPositionDownload>1</DisallowPositionDownload>
|
86
|
+
<DisallowInvBalanceDownload>1</DisallowInvBalanceDownload>
|
87
|
+
</InvestmentCapabilities>
|
88
|
+
<PinWiz>
|
89
|
+
<SignupType>3</SignupType>
|
90
|
+
<URLPin>https://onlinebanking.capitalone.com/CAPITALONE/Enrollment.aspx</URLPin>
|
91
|
+
<PhonePin></PhonePin>
|
92
|
+
<Charge>0.0000</Charge>
|
93
|
+
<ChargeFrq>1</ChargeFrq>
|
94
|
+
<ConnectionSurchargeLimit>0</ConnectionSurchargeLimit>
|
95
|
+
<UsesWebPwd>0</UsesWebPwd>
|
96
|
+
<SeparateEnroll>0</SeparateEnroll>
|
97
|
+
</PinWiz>
|
98
|
+
</MSNOnlSvcInfo>
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
|
2
|
+
#
|
3
|
+
# This file is part of OFX for Ruby.
|
4
|
+
#
|
5
|
+
# OFX for Ruby is free software; you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation; either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# OFX for Ruby is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
18
|
+
require File.dirname(__FILE__) + '/capital_one_helper'
|
19
|
+
|
20
|
+
class CapitalOneBankingStatmentTest < Test::Unit::TestCase
|
21
|
+
|
22
|
+
include CapitalOneHelper
|
23
|
+
|
24
|
+
def setup
|
25
|
+
setup_capital_one_credentials
|
26
|
+
setup_capital_one_accounts
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_requesting_last_seven_days_statement_from_capital_one
|
30
|
+
financial_institution = OFX::FinancialInstitution.get_institution('Capital One')
|
31
|
+
requestDocument = financial_institution.create_request_document
|
32
|
+
|
33
|
+
client = OFX::FinancialClient.new([[OFX::FinancialInstitutionIdentification.new('Hibernia', '1001'),
|
34
|
+
OFX::UserCredentials.new(@user_name, @password)]])
|
35
|
+
requestDocument.message_sets << client.create_signon_request_message('1001')
|
36
|
+
|
37
|
+
|
38
|
+
banking_message_set = OFX::BankingMessageSet.new
|
39
|
+
statement_request = OFX::BankingStatementRequest.new
|
40
|
+
|
41
|
+
statement_request.transaction_identifier = OFX::TransactionUniqueIdentifier.new
|
42
|
+
statement_request.account = OFX::BankingAccount.new
|
43
|
+
statement_request.account.bank_identifier = '065002030'
|
44
|
+
statement_request.account.branch_identifier = nil
|
45
|
+
statement_request.account.account_identifier = @accounts[:checking]
|
46
|
+
statement_request.account.account_type = :checking
|
47
|
+
statement_request.account.account_key = nil
|
48
|
+
|
49
|
+
statement_request.include_transactions = true
|
50
|
+
statement_request.included_range = ('2007-06-01'.to_date)..('2007-06-07'.to_date)
|
51
|
+
|
52
|
+
banking_message_set.requests << statement_request
|
53
|
+
requestDocument.message_sets << banking_message_set
|
54
|
+
|
55
|
+
response_document = financial_institution.send(requestDocument)
|
56
|
+
assert response_document != nil
|
57
|
+
|
58
|
+
verify_capital_one_header response_document
|
59
|
+
|
60
|
+
assert_not_equal nil, response_document.message_sets
|
61
|
+
assert_equal 2, response_document.message_sets.length
|
62
|
+
|
63
|
+
verify_capital_one_signon_response response_document
|
64
|
+
|
65
|
+
banking_message_set = response_document.message_sets[1]
|
66
|
+
assert_not_equal nil, banking_message_set
|
67
|
+
assert banking_message_set.kind_of?(OFX::BankingMessageSet)
|
68
|
+
assert_equal 1, banking_message_set.responses.length
|
69
|
+
statement = banking_message_set.responses[0]
|
70
|
+
assert_not_equal nil, statement
|
71
|
+
assert_equal 'USD', statement.default_currency
|
72
|
+
assert_not_equal nil, statement.account
|
73
|
+
assert_equal '065002030', statement.account.bank_identifier
|
74
|
+
assert_equal @accounts[:checking], statement.account.account_identifier
|
75
|
+
assert_equal :checking, statement.account.account_type
|
76
|
+
|
77
|
+
assert_equal nil, statement.marketing_information
|
78
|
+
|
79
|
+
assert_not_equal nil, statement.ledger_balance
|
80
|
+
assert_not_equal nil, statement.ledger_balance.amount
|
81
|
+
assert_not_equal nil, statement.ledger_balance.as_of
|
82
|
+
|
83
|
+
assert_not_equal nil, statement.available_balance
|
84
|
+
assert_not_equal nil, statement.available_balance.amount
|
85
|
+
assert_not_equal nil, statement.available_balance.as_of
|
86
|
+
|
87
|
+
assert_not_equal nil, statement.transaction_range
|
88
|
+
assert_equal '2007-06-01'.to_date, statement.transaction_range.begin
|
89
|
+
assert_equal '2007-06-07'.to_date, statement.transaction_range.end
|
90
|
+
assert_not_equal nil, statement.transactions
|
91
|
+
assert_equal 18, statement.transactions.length
|
92
|
+
|
93
|
+
padded_range = (statement.transaction_range.begin - 1.day)..(statement.transaction_range.end + 1.day)
|
94
|
+
total_of_transactions = 0.0.to_d
|
95
|
+
statement.transactions.each do |transaction|
|
96
|
+
assert_not_equal nil, transaction.transaction_type
|
97
|
+
assert_not_equal nil, transaction.date_posted
|
98
|
+
assert_not_equal nil, transaction.amount
|
99
|
+
assert_not_equal nil, transaction.financial_institution_transaction_identifier
|
100
|
+
|
101
|
+
assert padded_range === transaction.date_posted
|
102
|
+
|
103
|
+
total_of_transactions += transaction.amount
|
104
|
+
end
|
105
|
+
|
106
|
+
assert_equal 366.15.to_d, total_of_transactions
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,295 @@
|
|
1
|
+
# Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
|
2
|
+
#
|
3
|
+
# This file is part of OFX for Ruby.
|
4
|
+
#
|
5
|
+
# OFX for Ruby is free software; you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation; either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# OFX for Ruby is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
18
|
+
require File.dirname(__FILE__) + '/capital_one_helper'
|
19
|
+
|
20
|
+
class CapitalOneFinancialInstitutionProfileTest < Test::Unit::TestCase
|
21
|
+
|
22
|
+
include CapitalOneHelper
|
23
|
+
|
24
|
+
def setup
|
25
|
+
setup_capital_one_credentials
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_requesting_fresh_fi_profile_from_capital_one
|
29
|
+
financial_institution = OFX::FinancialInstitution.get_institution('Capital One')
|
30
|
+
requestDocument = financial_institution.create_request_document
|
31
|
+
|
32
|
+
client = OFX::FinancialClient.new([[OFX::FinancialInstitutionIdentification.new('Hibernia', '1001'),
|
33
|
+
OFX::UserCredentials.new(@user_name, @password)]])
|
34
|
+
requestDocument.message_sets << client.create_signon_request_message('1001')
|
35
|
+
|
36
|
+
client.date_of_last_profile_update = DateTime.new(2001, 1, 1)
|
37
|
+
requestDocument.message_sets << client.create_profile_update_request_message()
|
38
|
+
|
39
|
+
response_document = financial_institution.send(requestDocument)
|
40
|
+
assert response_document != nil
|
41
|
+
|
42
|
+
verify_capital_one_header response_document
|
43
|
+
|
44
|
+
assert_not_equal nil, response_document.message_sets
|
45
|
+
assert_equal 2, response_document.message_sets.length
|
46
|
+
|
47
|
+
verify_capital_one_signon_response response_document
|
48
|
+
|
49
|
+
profile_message = response_document.message_sets[1]
|
50
|
+
assert profile_message.kind_of?(OFX::FinancialInstitutionProfileMessageSet)
|
51
|
+
assert_equal 1, profile_message.responses.length
|
52
|
+
profile_response = profile_message.responses[0]
|
53
|
+
assert profile_response.kind_of?(OFX::FinancialInstitutionProfileResponse)
|
54
|
+
assert_not_equal nil, profile_response.transaction_identifier
|
55
|
+
assert_not_equal nil, profile_response.status
|
56
|
+
assert profile_response.status.kind_of?(OFX::Information)
|
57
|
+
assert profile_response.status.kind_of?(OFX::Success)
|
58
|
+
assert_equal 0, profile_response.status.code
|
59
|
+
assert_equal :information, profile_response.status.severity
|
60
|
+
assert_not_equal nil, profile_response.status.message
|
61
|
+
|
62
|
+
assert_not_equal nil, profile_response.date_of_last_profile_update
|
63
|
+
assert_equal "Capital One Bank", profile_response.financial_institution_name
|
64
|
+
assert_equal "PO Box 61540", profile_response.address
|
65
|
+
assert_equal "New Orleans", profile_response.city
|
66
|
+
assert_equal "LA", profile_response.state
|
67
|
+
assert_equal "70161", profile_response.postal_code
|
68
|
+
assert_equal "USA", profile_response.country
|
69
|
+
assert_equal "1-877-442-3764", profile_response.customer_service_telephone
|
70
|
+
assert_equal "1-877-442-3764", profile_response.technical_support_telephone
|
71
|
+
assert_equal nil, profile_response.facsimile_telephone
|
72
|
+
assert_equal URI.parse("https://onlinebanking.capitalone.com"), profile_response.url
|
73
|
+
assert_equal "emailus@capitaloneinfo.com", profile_response.email_address
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
assert_not_equal nil, profile_response.message_sets
|
78
|
+
assert_equal 6, profile_response.message_sets.length
|
79
|
+
|
80
|
+
# unsupported message sets
|
81
|
+
assert_equal nil, profile_response.message_sets[OFX::CreditCardStatementMessageSet]
|
82
|
+
assert_equal nil, profile_response.message_sets[OFX::InvestmentStatementMessageSet]
|
83
|
+
assert_equal nil, profile_response.message_sets[OFX::InterbankFundsTransferMessageSet]
|
84
|
+
assert_equal nil, profile_response.message_sets[OFX::WireFundsTransferMessageSet]
|
85
|
+
assert_equal nil, profile_response.message_sets[OFX::InvestmentSecurityListMessageSet]
|
86
|
+
|
87
|
+
# signon
|
88
|
+
assert_not_equal nil, profile_response.message_sets[OFX::SignonMessageSet]
|
89
|
+
assert_equal 1, profile_response.message_sets[OFX::SignonMessageSet].length
|
90
|
+
profile = profile_response.message_sets[OFX::SignonMessageSet][OFX::Version.new(1)]
|
91
|
+
assert_not_equal nil, profile
|
92
|
+
assert profile.kind_of?(OFX::SignonMessageSetProfile)
|
93
|
+
assert_equal OFX::SignonMessageSet, profile.message_set_class
|
94
|
+
assert_equal OFX::Version.new(1), profile.version
|
95
|
+
assert_equal 'Corillian Corporation', profile.service_provider_name
|
96
|
+
assert_equal URI.parse('https://onlinebanking.capitalone.com/scripts/serverext.dll'), profile.message_url
|
97
|
+
assert_equal 'NONE', profile.required_ofx_security
|
98
|
+
assert_equal true, profile.requires_transport_security?
|
99
|
+
assert_equal 'Realm1', profile.signon_realm
|
100
|
+
assert_equal 'ENG', profile.language
|
101
|
+
assert_equal 'LITE', profile.synchronization_mode
|
102
|
+
assert_equal true, profile.supports_response_file_error_recovery?
|
103
|
+
|
104
|
+
# signup
|
105
|
+
assert_not_equal nil, profile_response.message_sets[OFX::SignupMessageSet]
|
106
|
+
assert_equal 1, profile_response.message_sets[OFX::SignupMessageSet].length
|
107
|
+
profile = profile_response.message_sets[OFX::SignupMessageSet][OFX::Version.new(1)]
|
108
|
+
assert_not_equal nil, profile
|
109
|
+
assert profile.kind_of?(OFX::SignupMessageSetProfile)
|
110
|
+
assert_equal OFX::SignupMessageSet, profile.message_set_class
|
111
|
+
assert_equal OFX::Version.new(1), profile.version
|
112
|
+
assert_equal 'Corillian Corporation', profile.service_provider_name
|
113
|
+
assert_equal URI.parse('https://onlinebanking.capitalone.com/scripts/serverext.dll'), profile.message_url
|
114
|
+
assert_equal 'NONE', profile.required_ofx_security
|
115
|
+
assert_equal true, profile.requires_transport_security?
|
116
|
+
assert_equal 'Realm1', profile.signon_realm
|
117
|
+
assert_equal 'ENG', profile.language
|
118
|
+
assert_equal 'LITE', profile.synchronization_mode
|
119
|
+
assert_equal true, profile.supports_response_file_error_recovery
|
120
|
+
assert_not_equal nil, profile.enrollment
|
121
|
+
assert profile.enrollment.kind_of?(OFX::Enrollment)
|
122
|
+
assert profile.enrollment.kind_of?(OFX::WebEnrollment)
|
123
|
+
assert_equal URI.parse('https://onlinebanking.capitalone.com'), profile.enrollment.url
|
124
|
+
assert_equal false, profile.user_information_changes_allowed?
|
125
|
+
assert_equal true, profile.available_account_requests_allowed?
|
126
|
+
assert_equal false, profile.service_activation_requests_allowed?
|
127
|
+
|
128
|
+
# banking
|
129
|
+
assert_not_equal nil, profile_response.message_sets[OFX::BankingMessageSet]
|
130
|
+
assert_equal 1, profile_response.message_sets[OFX::BankingMessageSet].length
|
131
|
+
profile = profile_response.message_sets[OFX::BankingMessageSet][OFX::Version.new(1)]
|
132
|
+
assert_not_equal nil, profile
|
133
|
+
assert profile.kind_of?(OFX::BankingMessageSetProfile)
|
134
|
+
assert_equal OFX::BankingMessageSet, profile.message_set_class
|
135
|
+
assert_equal OFX::Version.new(1), profile.version
|
136
|
+
assert_equal 'Corillian Corporation', profile.service_provider_name
|
137
|
+
assert_equal URI.parse('https://onlinebanking.capitalone.com/scripts/serverext.dll'), profile.message_url
|
138
|
+
assert_equal 'NONE', profile.required_ofx_security
|
139
|
+
assert_equal true, profile.requires_transport_security?
|
140
|
+
assert_equal 'Realm1', profile.signon_realm
|
141
|
+
assert_equal 'ENG', profile.language
|
142
|
+
assert_equal 'FULL', profile.synchronization_mode
|
143
|
+
assert_equal true, profile.supports_response_file_error_recovery?
|
144
|
+
assert_not_equal nil, profile.invalid_account_types
|
145
|
+
assert_equal false, profile.closing_statement_available?
|
146
|
+
|
147
|
+
assert_not_equal nil, profile.intrabank_transfer_profile
|
148
|
+
assert_not_equal nil, profile.intrabank_transfer_profile.processing_days_off
|
149
|
+
assert_equal 23, profile.intrabank_transfer_profile.processing_end_time_of_day.hour
|
150
|
+
assert_equal 0, profile.intrabank_transfer_profile.processing_end_time_of_day.min
|
151
|
+
assert_equal 0, profile.intrabank_transfer_profile.processing_end_time_of_day.sec
|
152
|
+
assert_equal 0, profile.intrabank_transfer_profile.processing_end_time_of_day.offset
|
153
|
+
assert_equal false, profile.intrabank_transfer_profile.supports_scheduled_transfers?
|
154
|
+
assert_equal false, profile.intrabank_transfer_profile.supports_recurring_transfers?
|
155
|
+
assert_equal false, profile.intrabank_transfer_profile.supports_modification_of_transfers?
|
156
|
+
assert_equal false, profile.intrabank_transfer_profile.supports_modification_of_models?
|
157
|
+
assert_equal 0, profile.intrabank_transfer_profile.model_window
|
158
|
+
assert_equal 0, profile.intrabank_transfer_profile.number_of_days_early_funds_are_withdrawn
|
159
|
+
assert_equal 0, profile.intrabank_transfer_profile.default_number_of_days_to_pay
|
160
|
+
|
161
|
+
assert_equal nil, profile.stop_check_profile
|
162
|
+
# assert_not_equal nil, profile.stop_check_profile.processing_days_off
|
163
|
+
# assert_equal 23, profile.stop_check_profile.processing_end_time_of_day.hour
|
164
|
+
# assert_equal 0, profile.stop_check_profile.processing_end_time_of_day.min
|
165
|
+
# assert_equal 0, profile.stop_check_profile.processing_end_time_of_day.sec
|
166
|
+
# assert_equal 0, profile.stop_check_profile.processing_end_time_of_day.offset
|
167
|
+
# assert_equal false, profile.stop_check_profile.can_stop_a_range_of_checks?
|
168
|
+
# assert_equal false, profile.stop_check_profile.can_stop_checks_by_description?
|
169
|
+
# assert_equal '', profile.stop_check_profile.default_stop_check_fee
|
170
|
+
|
171
|
+
assert_not_equal nil, profile.email_profile
|
172
|
+
assert_equal true, profile.email_profile.supports_banking_email?
|
173
|
+
assert_equal false, profile.email_profile.supports_notifications?
|
174
|
+
|
175
|
+
|
176
|
+
# payments
|
177
|
+
assert_not_equal nil, profile_response.message_sets[OFX::PaymentMessageSet]
|
178
|
+
assert_equal 1, profile_response.message_sets[OFX::PaymentMessageSet].length
|
179
|
+
profile = profile_response.message_sets[OFX::PaymentMessageSet][OFX::Version.new(1)]
|
180
|
+
assert_not_equal nil, profile
|
181
|
+
assert profile.kind_of?(OFX::PaymentMessageSetProfile)
|
182
|
+
assert_equal OFX::PaymentMessageSet, profile.message_set_class
|
183
|
+
assert_equal OFX::Version.new(1), profile.version
|
184
|
+
assert_equal 'Corillian Corporation', profile.service_provider_name
|
185
|
+
assert_equal URI.parse('https://onlinebanking.capitalone.com/scripts/serverext.dll'), profile.message_url
|
186
|
+
assert_equal 'NONE', profile.required_ofx_security
|
187
|
+
assert_equal true, profile.requires_transport_security?
|
188
|
+
assert_equal 'Realm1', profile.signon_realm
|
189
|
+
assert_equal 'ENG', profile.language
|
190
|
+
assert_equal 'FULL', profile.synchronization_mode
|
191
|
+
assert_equal true, profile.supports_response_file_error_recovery?
|
192
|
+
|
193
|
+
# email
|
194
|
+
assert_not_equal nil, profile_response.message_sets[OFX::EmailMessageSet]
|
195
|
+
assert_equal 1, profile_response.message_sets[OFX::EmailMessageSet].length
|
196
|
+
profile = profile_response.message_sets[OFX::EmailMessageSet][OFX::Version.new(1)]
|
197
|
+
assert_not_equal nil, profile
|
198
|
+
assert profile.kind_of?(OFX::EmailMessageSetProfile)
|
199
|
+
assert_equal OFX::EmailMessageSet, profile.message_set_class
|
200
|
+
assert_equal OFX::Version.new(1), profile.version
|
201
|
+
assert_equal 'Corillian Corporation', profile.service_provider_name
|
202
|
+
assert_equal URI.parse('https://onlinebanking.capitalone.com/scripts/serverext.dll'), profile.message_url
|
203
|
+
assert_equal 'NONE', profile.required_ofx_security
|
204
|
+
assert_equal true, profile.requires_transport_security?
|
205
|
+
assert_equal 'Realm1', profile.signon_realm
|
206
|
+
assert_equal 'ENG', profile.language
|
207
|
+
assert_equal 'FULL', profile.synchronization_mode
|
208
|
+
assert_equal true, profile.supports_response_file_error_recovery?
|
209
|
+
assert_equal true, profile.supports_email?
|
210
|
+
assert_equal false, profile.supports_mime_messages?
|
211
|
+
|
212
|
+
# profile
|
213
|
+
assert_not_equal nil, profile_response.message_sets[OFX::FinancialInstitutionProfileMessageSet]
|
214
|
+
assert_equal 1, profile_response.message_sets[OFX::FinancialInstitutionProfileMessageSet].length
|
215
|
+
profile = profile_response.message_sets[OFX::FinancialInstitutionProfileMessageSet][OFX::Version.new(1)]
|
216
|
+
assert_not_equal nil, profile
|
217
|
+
assert profile.kind_of?(OFX::FinancialInstitutionProfileMessageSetProfile)
|
218
|
+
assert_equal OFX::FinancialInstitutionProfileMessageSet, profile.message_set_class
|
219
|
+
assert_equal OFX::Version.new(1), profile.version
|
220
|
+
assert_equal 'Corillian Corporation', profile.service_provider_name
|
221
|
+
assert_equal URI.parse('https://onlinebanking.capitalone.com/scripts/serverext.dll'), profile.message_url
|
222
|
+
assert_equal 'NONE', profile.required_ofx_security
|
223
|
+
assert_equal true, profile.requires_transport_security?
|
224
|
+
assert_equal 'Realm1', profile.signon_realm
|
225
|
+
assert_equal 'ENG', profile.language
|
226
|
+
assert_equal 'LITE', profile.synchronization_mode
|
227
|
+
assert_equal true, profile.supports_response_file_error_recovery?
|
228
|
+
|
229
|
+
assert_not_equal nil, profile_response.signon_realms
|
230
|
+
assert_equal 1, profile_response.signon_realms.length
|
231
|
+
signon_realm = profile_response.signon_realms[0]
|
232
|
+
assert_equal 'Realm1', signon_realm.name
|
233
|
+
assert_equal 8..12, signon_realm.password_length_constraint
|
234
|
+
assert_equal :alphabetic_and_numeric, signon_realm.password_characters_constraint
|
235
|
+
assert_equal true, signon_realm.case_sensitive
|
236
|
+
assert_equal false, signon_realm.allows_special_characters
|
237
|
+
assert_equal false, signon_realm.allows_spaces
|
238
|
+
assert_equal true, signon_realm.supports_pin_changes
|
239
|
+
assert_equal false, signon_realm.requires_initial_pin_change
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_requesting_up_to_date_fi_profile_from_capital_one
|
243
|
+
financial_institution = OFX::FinancialInstitution.get_institution('Capital One')
|
244
|
+
requestDocument = financial_institution.create_request_document
|
245
|
+
|
246
|
+
client = OFX::FinancialClient.new([[OFX::FinancialInstitutionIdentification.new('Hibernia', '1001'),
|
247
|
+
OFX::UserCredentials.new(@user_name, @password)]])
|
248
|
+
requestDocument.message_sets << client.create_signon_request_message('1001')
|
249
|
+
|
250
|
+
client.date_of_last_profile_update = DateTime.now
|
251
|
+
requestDocument.message_sets << client.create_profile_update_request_message()
|
252
|
+
|
253
|
+
response_document = financial_institution.send(requestDocument)
|
254
|
+
assert response_document != nil
|
255
|
+
|
256
|
+
verify_capital_one_header response_document
|
257
|
+
|
258
|
+
assert_not_equal nil, response_document.message_sets
|
259
|
+
assert_equal 2, response_document.message_sets.length
|
260
|
+
|
261
|
+
verify_capital_one_signon_response response_document
|
262
|
+
|
263
|
+
profile_message = response_document.message_sets[1]
|
264
|
+
assert profile_message.kind_of?(OFX::FinancialInstitutionProfileMessageSet)
|
265
|
+
assert_equal 1, profile_message.responses.length
|
266
|
+
profile_response = profile_message.responses[0]
|
267
|
+
assert profile_response.kind_of?(OFX::FinancialInstitutionProfileResponse)
|
268
|
+
assert_not_equal nil, profile_response.transaction_identifier
|
269
|
+
assert_not_equal nil, profile_response.status
|
270
|
+
assert profile_response.status.kind_of?(OFX::Information)
|
271
|
+
assert profile_response.status.kind_of?(OFX::ClientUpToDate)
|
272
|
+
assert_equal 1, profile_response.status.code
|
273
|
+
assert_equal :information, profile_response.status.severity
|
274
|
+
assert_not_equal nil, profile_response.status.message
|
275
|
+
|
276
|
+
assert_equal nil, profile_response.date_of_last_profile_update
|
277
|
+
assert_equal nil, profile_response.financial_institution_name
|
278
|
+
assert_equal nil, profile_response.address
|
279
|
+
assert_equal nil, profile_response.city
|
280
|
+
assert_equal nil, profile_response.state
|
281
|
+
assert_equal nil, profile_response.postal_code
|
282
|
+
assert_equal nil, profile_response.country
|
283
|
+
assert_equal nil, profile_response.customer_service_telephone
|
284
|
+
assert_equal nil, profile_response.technical_support_telephone
|
285
|
+
assert_equal nil, profile_response.facsimile_telephone
|
286
|
+
assert_equal nil, profile_response.url
|
287
|
+
assert_equal nil, profile_response.email_address
|
288
|
+
|
289
|
+
assert_not_equal nil, profile_response.message_sets
|
290
|
+
assert_equal 0, profile_response.message_sets.length
|
291
|
+
|
292
|
+
assert_not_equal nil, profile_response.signon_realms
|
293
|
+
assert_equal 0, profile_response.signon_realms.length
|
294
|
+
end
|
295
|
+
end
|