mirror of
https://github.com/aclindsa/ofxgo.git
synced 2024-11-21 19:20:05 -05:00
Add basic test for marshalling bank statement request
Also add marshalCheckRequest(), a helper function which prints the first differences found between the two strings to aid in debugging test failures.
This commit is contained in:
parent
5596cfbf8d
commit
6d6ee3ea1b
73
banking_test.go
Normal file
73
banking_test.go
Normal file
@ -0,0 +1,73 @@
|
||||
package ofxgo_test
|
||||
|
||||
import (
|
||||
"github.com/aclindsa/ofxgo"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestMarshalBankStatementRequest(t *testing.T) {
|
||||
var expectedString string = `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?OFX OFXHEADER="200" VERSION="203" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
|
||||
<OFX>
|
||||
<SIGNONMSGSRQV1>
|
||||
<SONRQ>
|
||||
<DTCLIENT>20060115112300.000[-5:EST]</DTCLIENT>
|
||||
<USERID>myusername</USERID>
|
||||
<USERPASS>Pa$$word</USERPASS>
|
||||
<LANGUAGE>ENG</LANGUAGE>
|
||||
<FI>
|
||||
<ORG>BNK</ORG>
|
||||
<FID>1987</FID>
|
||||
</FI>
|
||||
<APPID>OFXGO</APPID>
|
||||
<APPVER>0001</APPVER>
|
||||
</SONRQ>
|
||||
</SIGNONMSGSRQV1>
|
||||
<BANKMSGSRQV1>
|
||||
<STMTTRNRQ>
|
||||
<TRNUID>123</TRNUID>
|
||||
<STMTRQ>
|
||||
<BANKACCTFROM>
|
||||
<BANKID>318398732</BANKID>
|
||||
<ACCTID>78346129</ACCTID>
|
||||
<ACCTTYPE>CHECKING</ACCTTYPE>
|
||||
</BANKACCTFROM>
|
||||
<INCTRAN>
|
||||
<INCLUDE>Y</INCLUDE>
|
||||
</INCTRAN>
|
||||
</STMTRQ>
|
||||
</STMTTRNRQ>
|
||||
</BANKMSGSRQV1>
|
||||
</OFX>`
|
||||
|
||||
var client = ofxgo.Client{
|
||||
AppId: "OFXGO",
|
||||
AppVer: "0001",
|
||||
SpecVersion: "203",
|
||||
}
|
||||
|
||||
var request ofxgo.Request
|
||||
request.Signon.UserId = "myusername"
|
||||
request.Signon.UserPass = "Pa$$word"
|
||||
request.Signon.Org = "BNK"
|
||||
request.Signon.Fid = "1987"
|
||||
|
||||
statementRequest := ofxgo.StatementRequest{
|
||||
TrnUID: "123",
|
||||
BankAcctFrom: ofxgo.BankAcct{
|
||||
BankId: "318398732",
|
||||
AcctId: "78346129",
|
||||
AcctType: "CHECKING",
|
||||
},
|
||||
Include: true,
|
||||
}
|
||||
request.Banking = append(request.Banking, &statementRequest)
|
||||
|
||||
request.SetClientFields(&client)
|
||||
// Overwrite the DtClient value set by SetClientFields to time.Now()
|
||||
EST := time.FixedZone("EST", -5*60*60)
|
||||
request.Signon.DtClient = ofxgo.Date(time.Date(2006, 1, 15, 11, 23, 0, 0, EST))
|
||||
|
||||
marshalCheckRequest(t, &request, expectedString)
|
||||
}
|
48
request_test.go
Normal file
48
request_test.go
Normal file
@ -0,0 +1,48 @@
|
||||
package ofxgo_test
|
||||
|
||||
import (
|
||||
"github.com/aclindsa/ofxgo"
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var ignoreSpacesRe = regexp.MustCompile(">[ \t\r\n]+<")
|
||||
|
||||
func marshalCheckRequest(t *testing.T, request *ofxgo.Request, expected string) {
|
||||
buf, err := request.Marshal()
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error marshalling request: %s\n", err)
|
||||
}
|
||||
actualString := buf.String()
|
||||
|
||||
// Ignore spaces between XML elements
|
||||
expectedString := ignoreSpacesRe.ReplaceAllString(expected, "><")
|
||||
actualString = ignoreSpacesRe.ReplaceAllString(actualString, "><")
|
||||
|
||||
if expectedString != actualString {
|
||||
compareLength := len(expectedString)
|
||||
if len(actualString) < compareLength {
|
||||
compareLength = len(actualString)
|
||||
}
|
||||
|
||||
for i := 0; i < compareLength; i++ {
|
||||
if expectedString[i] != actualString[i] {
|
||||
displayStart := i - 10
|
||||
if displayStart < 0 {
|
||||
displayStart = 0
|
||||
}
|
||||
displayEnd := displayStart + 40
|
||||
if displayEnd > compareLength {
|
||||
displayEnd = compareLength
|
||||
}
|
||||
t.Fatalf("%s expected '...%s...',\ngot '...%s...'\n", t.Name(), expectedString[displayStart:displayEnd], actualString[displayStart:displayEnd])
|
||||
}
|
||||
}
|
||||
|
||||
if len(actualString) > compareLength {
|
||||
t.Fatalf("%s: Actual string longer than expected string\n", t.Name())
|
||||
} else {
|
||||
t.Fatalf("%s: Actual string shorter than expected string\n", t.Name())
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user