diff --git a/signup_test.go b/signup_test.go new file mode 100644 index 0000000..05e3aac --- /dev/null +++ b/signup_test.go @@ -0,0 +1,161 @@ +package ofxgo_test + +import ( + "github.com/aclindsa/ofxgo" + "strings" + "testing" + "time" +) + +func TestMarshalAcctInfoRequest(t *testing.T) { + var expectedString string = ` + + + + + 20160115112300.000[-5:EST] + myusername + Pa$$word + ENG + + BNK + 1987 + + OFXGO + 0001 + + + + + e3ad9bda-38fa-4e5b-8099-1bd567ddef7a + + 20151221182945.000[-5:EST] + + + +` + + EST := time.FixedZone("EST", -5*60*60) + + 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" + + acctInfoRequest := ofxgo.AcctInfoRequest{ + TrnUID: "e3ad9bda-38fa-4e5b-8099-1bd567ddef7a", + DtAcctUp: ofxgo.Date(time.Date(2015, 12, 21, 18, 29, 45, 0, EST)), + } + request.Signup = append(request.Signup, &acctInfoRequest) + + request.SetClientFields(&client) + // Overwrite the DtClient value set by SetClientFields to time.Now() + request.Signon.DtClient = ofxgo.Date(time.Date(2016, 1, 15, 11, 23, 0, 0, EST)) + + marshalCheckRequest(t, &request, expectedString) +} + +func TestUnmarshalAcctInfoResponse(t *testing.T) { + responseReader := strings.NewReader(` + + + + + + 0 + INFO + + 20060115112303 + ENG + 20050221091300 + 20060102160000 + + BNK + 1987 + + + + + + 10938754 + + 0 + INFO + + + 20050228 + + Personal Checking + 888-222-5827 + + + 8367556009 + 000999847 + MONEYMRKT + + Y + Y + Y + ACTIVE + + + + + +`) + var expected ofxgo.Response + GMT := time.FixedZone("GMT", 0) + + expected.Version = "203" + expected.Signon.Status.Code = 0 + expected.Signon.Status.Severity = "INFO" + expected.Signon.DtServer = ofxgo.Date(time.Date(2006, 1, 15, 11, 23, 03, 0, GMT)) + expected.Signon.Language = "ENG" + dtprofup := ofxgo.Date(time.Date(2005, 2, 21, 9, 13, 0, 0, GMT)) + expected.Signon.DtProfUp = &dtprofup + dtacctup := ofxgo.Date(time.Date(2006, 1, 2, 16, 0, 0, 0, GMT)) + expected.Signon.DtAcctUp = &dtacctup + expected.Signon.Org = "BNK" + expected.Signon.Fid = "1987" + + bankacctinfo := ofxgo.BankAcctInfo{ + BankAcctFrom: ofxgo.BankAcct{ + BankId: "8367556009", + AcctId: "000999847", + AcctType: "MONEYMRKT", + }, + SupTxDl: true, + XferSrc: true, + XferDest: true, + SvcStatus: "ACTIVE", + } + + acctInfoResponse := ofxgo.AcctInfoResponse{ + TrnUID: "10938754", + Status: ofxgo.Status{ + Code: 0, + Severity: "INFO", + }, + DtAcctUp: ofxgo.Date(time.Date(2005, 2, 28, 0, 0, 0, 0, GMT)), + AcctInfo: []ofxgo.AcctInfo{{ + Desc: "Personal Checking", + Phone: "888-222-5827", + BankAcctInfo: &bankacctinfo, + }}, + } + expected.Signup = append(expected.Signup, acctInfoResponse) + + response, err := ofxgo.ParseResponse(responseReader) + if err != nil { + t.Fatalf("Unexpected error unmarshalling response: %s\n", err) + } + + checkResponsesEqual(t, &expected, response) +}