From 737d289b29fdf2a3a23f5a8c4e09d7bce0c090bf Mon Sep 17 00:00:00 2001 From: Aaron Lindsay Date: Mon, 3 Apr 2017 19:58:50 -0400 Subject: [PATCH] Add profile tests --- profile_test.go | 330 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 330 insertions(+) create mode 100644 profile_test.go diff --git a/profile_test.go b/profile_test.go new file mode 100644 index 0000000..1afb0b5 --- /dev/null +++ b/profile_test.go @@ -0,0 +1,330 @@ +package ofxgo_test + +import ( + "github.com/aclindsa/ofxgo" + "strings" + "testing" + "time" +) + +func TestMarshalProfileRequest(t *testing.T) { + var expectedString string = ` + + + + + 20160614073400.000[-5:EST] + anonymous00000000000000000000000 + anonymous00000000000000000000000 + ENG + + BNK + 1987 + + OFXGO + 0001 + + + + + 983373 + + NONE + 20160101000000.000[-5:EST] + + + +` + + var client = ofxgo.Client{ + AppId: "OFXGO", + AppVer: "0001", + SpecVersion: "203", + } + + var request ofxgo.Request + request.Signon.UserId = "anonymous00000000000000000000000" + request.Signon.UserPass = "anonymous00000000000000000000000" + request.Signon.Org = "BNK" + request.Signon.Fid = "1987" + + EST := time.FixedZone("EST", -5*60*60) + + profileRequest := ofxgo.ProfileRequest{ + TrnUID: "983373", + DtProfUp: ofxgo.Date(time.Date(2016, 1, 1, 0, 0, 0, 0, EST)), + } + request.Prof = append(request.Prof, &profileRequest) + + request.SetClientFields(&client) + // Overwrite the DtClient value set by SetClientFields to time.Now() + request.Signon.DtClient = ofxgo.Date(time.Date(2016, 6, 14, 7, 34, 0, 0, EST)) + + marshalCheckRequest(t, &request, expectedString) +} + +func TestUnmarshalProfileResponse102(t *testing.T) { + responseReader := strings.NewReader(`OFXHEADER:100 +DATA:OFXSGML +VERSION:102 +SECURITY:NONE +ENCODING:USASCII +CHARSET:1252 +COMPRESSION:NONE +OLDFILEUID:NONE +NEWFILEUID:NONE + + + + + +0 +INFO + +20170403093458.000 +ENG +20021119140000 + + + + +0f94ce83-13b7-7568-e4fc-c02c7b47e7ab + +0 +INFO + + + + + + +1 +https://ofx.example.com/cgi-ofx/exampleofx +NONE +Y +Example Trade +ENG +LITE +N +300 + + + + + + +1 +https://ofx.example.com/cgi-ofx/exampleofx +NONE +Y +Example Trade +ENG +LITE +N +300 + + +Y + +N +Y +Y + + + + + +1 +https://ofx.example.com/cgi-ofx/exampleofx +NONE +Y +Example Trade +ENG +LITE +N +300 + +Y +N +Y +Y +N + + + + + +1 +https://ofx.example.com/cgi-ofx/exampleofx +NONE +Y +Example Trade +ENG +LITE +N +300 + +Y + + + + + +1 +https://ofx.example.com/cgi-ofx/exampleofx +NONE +Y +Example Trade +ENG +LITE +N +300 + + + + + + +Example Trade +1 +32 +ALPHAORNUMERIC +N +Y +N +N +N + + +20021119140000 +Example Trade Financial +5555 Buhunkus Drive +Someville +NC +28801 +USA +1-800-234-5678 +1-800-234-5678 +1-888-234-5678 +http://www.example.com +service@example.com +example.com + + + +`) + var expected ofxgo.Response + GMT := time.FixedZone("GMT", 0) + + expected.Version = "102" + expected.Signon.Status.Code = 0 + expected.Signon.Status.Severity = "INFO" + expected.Signon.DtServer = ofxgo.Date(time.Date(2017, 4, 3, 9, 34, 58, 0, GMT)) + expected.Signon.Language = "ENG" + dtprofup := ofxgo.Date(time.Date(2002, 11, 19, 14, 0, 0, 0, GMT)) + expected.Signon.DtProfUp = &dtprofup + + profileResponse := ofxgo.ProfileResponse{ + TrnUID: "0f94ce83-13b7-7568-e4fc-c02c7b47e7ab", + Status: ofxgo.Status{ + Code: 0, + Severity: "INFO", + }, + MessageSetList: ofxgo.MessageSetList{ + ofxgo.MessageSet{ + Name: "SIGNONMSGSETV1", + Ver: "1", + Url: "https://ofx.example.com/cgi-ofx/exampleofx", + OfxSec: "NONE", + TranspSec: true, + SignonRealm: "Example Trade", + Language: []ofxgo.String{"ENG"}, + SyncMode: "LITE", + RespFileER: false, + // Ignored: 300 + }, + ofxgo.MessageSet{ + Name: "SIGNUPMSGSETV1", + Ver: "1", + Url: "https://ofx.example.com/cgi-ofx/exampleofx", + OfxSec: "NONE", + TranspSec: true, + SignonRealm: "Example Trade", + Language: []ofxgo.String{"ENG"}, + SyncMode: "LITE", + RespFileER: false, + // Ignored: 300 + }, + ofxgo.MessageSet{ + Name: "INVSTMTMSGSETV1", + Ver: "1", + Url: "https://ofx.example.com/cgi-ofx/exampleofx", + OfxSec: "NONE", + TranspSec: true, + SignonRealm: "Example Trade", + Language: []ofxgo.String{"ENG"}, + SyncMode: "LITE", + RespFileER: false, + // Ignored: 300 + }, + ofxgo.MessageSet{ + Name: "SECLISTMSGSETV1", + Ver: "1", + Url: "https://ofx.example.com/cgi-ofx/exampleofx", + OfxSec: "NONE", + TranspSec: true, + SignonRealm: "Example Trade", + Language: []ofxgo.String{"ENG"}, + SyncMode: "LITE", + RespFileER: false, + // Ignored: 300 + }, + ofxgo.MessageSet{ + Name: "PROFMSGSETV1", + Ver: "1", + Url: "https://ofx.example.com/cgi-ofx/exampleofx", + OfxSec: "NONE", + TranspSec: true, + SignonRealm: "Example Trade", + Language: []ofxgo.String{"ENG"}, + SyncMode: "LITE", + RespFileER: false, + // Ignored: 300 + }, + }, + SignonInfoList: []ofxgo.SignonInfo{ + ofxgo.SignonInfo{ + SignonRealm: "Example Trade", + Min: 1, + Max: 32, + CharType: "ALPHAORNUMERIC", + CaseSen: false, + Special: true, + Spaces: false, + PinCh: false, + ChgPinFirst: false, + }, + }, + DtProfUp: ofxgo.Date(time.Date(2002, 11, 19, 14, 0, 0, 0, GMT)), + FiName: "Example Trade Financial", + Addr1: "5555 Buhunkus Drive", + City: "Someville", + State: "NC", + PostalCode: "28801", + Country: "USA", + CsPhone: "1-800-234-5678", + TsPhone: "1-800-234-5678", + FaxPhone: "1-888-234-5678", + URL: "http://www.example.com", + Email: "service@example.com", + // Ignored: example.com + } + expected.Prof = append(expected.Prof, &profileResponse) + + response, err := ofxgo.ParseResponse(responseReader) + if err != nil { + t.Fatalf("Unexpected error unmarshalling response: %s\n", err) + } + + checkResponsesEqual(t, &expected, response) +}