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)
+}