public OfxModel Load(string fileContent) { var model = new OfxModel(); var lines = fileContent.Split("\r\n"); fileContent = string.Join("", lines); string ofxBodyContent = FileParser.GetOfxBody(fileContent); ofxBodyContent = "<xml>" + ofxBodyContent + "</xml>"; using (var stringReader = new StringReader(ofxBodyContent)) { XmlReader reader = XmlReader.Create(stringReader); XmlDocument doc = new XmlDocument(); doc.Load(reader); XmlNode node = doc.DocumentElement.FirstChild; model.Ofx.SignOnMessage = ParseSignOnMessages(node["SIGNONMSGSRSV1"]["SONRS"]); model.Ofx.BankMessages = ParseBankMessages(node["BANKMSGSRSV1"]); foreach (var line in lines) { string value = ""; string propName = ""; foreach (var property in model.GetType().GetProperties()) { object[] attrs = property.GetCustomAttributes(true); foreach (object attr in attrs) { OfxProperty authAttr = attr as OfxProperty; if (authAttr != null) { propName = property.Name; value = authAttr.FieldName; } } var keyValue = line.Split(":"); if (keyValue.Length > 1 && value == keyValue[0]) { model[propName] = keyValue[1]; } } } } return(model); }
public void WhenParseMinimumFileMustReturnSignOnMessageAttributesCorrectly() { var reader = new OfxReader(); OfxModel ofx = reader.Load(TestData.BASIC); Assert.AreEqual("0", ofx.Ofx.SignOnMessage.Status.Code); Assert.AreEqual("INFO", ofx.Ofx.SignOnMessage.Status.Severity); Assert.AreEqual("20210417", ofx.Ofx.SignOnMessage.DateServer); Assert.AreEqual("POR", ofx.Ofx.SignOnMessage.Language); Assert.AreEqual("Banco XXX", ofx.Ofx.SignOnMessage.Fi.Organization); Assert.AreEqual("123", ofx.Ofx.SignOnMessage.Fi.Fid); }
public void WhenParseMinimumFileMustReturnHeaderAttributesCorrectly() { var reader = new OfxReader(); OfxModel ofx = reader.Load(TestData.BASIC); Assert.AreEqual("100", ofx.Header); Assert.AreEqual("OFXSGML", ofx.Data); Assert.AreEqual("102", ofx.Version); Assert.AreEqual("NONE", ofx.Security); Assert.AreEqual("1252", ofx.Charset); Assert.AreEqual("NONE", ofx.Compression); Assert.AreEqual("NONE", ofx.OldFileUID); Assert.AreEqual("NONE", ofx.NewFileUID); }
public void WhenParseMinimumFileWithTwoTransactionsMustParseCorrectly() { var reader = new OfxReader(); OfxModel ofx = reader.Load(TestData.BASIC_TWO_TRANSACTIONS); Assert.AreEqual(2, ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions.Count); Assert.AreEqual("PAYMENT", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions[0].Type); Assert.AreEqual("20210305", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions[0].Date); Assert.AreEqual("-1400.77", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions[0].Ammount); Assert.AreEqual("05/03/2021077", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions[0].FITID); Assert.AreEqual("077", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions[0].CHECKNUM); Assert.AreEqual("077", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions[0].REFNUM); Assert.AreEqual("Payment", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.Transactions[0].MEMO); }
public void WhenParseMinimumFileMustReturnBankMessageAttributesCorrectly() { var reader = new OfxReader(); OfxModel ofx = reader.Load(TestData.BASIC); Assert.AreEqual("1001", ofx.Ofx.BankMessages.Stmttrns.Trnuid); Assert.AreEqual("0", ofx.Ofx.BankMessages.Stmttrns.Status.Code); Assert.AreEqual("INFO", ofx.Ofx.BankMessages.Stmttrns.Status.Severity); Assert.AreEqual("BRL", ofx.Ofx.BankMessages.Stmttrns.Currency); Assert.AreEqual("077", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.Id); Assert.AreEqual("XXXX-X", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.BranchID); Assert.AreEqual("12345678", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.AccountID); Assert.AreEqual("CHECKING", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.AccountType); Assert.AreEqual("20210301", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.StartDate); Assert.AreEqual("20210331", ofx.Ofx.BankMessages.Stmttrns.AccountFrom.TransacionList.EndDate); }