ofx_for_ruby 0.1.1
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/.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
|