public void CreateDataModel_WhenSelectedPaymentOptionIsFull_TransactionValueIsFullPaymentAmountDerived()
        {
            PaymentOptionsVm paymentOptionsVm = new PaymentOptionsVm()
            {
                SelectedPaymentOption   = PaymentOptionsSelectionsVm.Values.FullPayment,
                VerifoneTransactionGuid = "fb3ce06f-af36-40d4-a88b-dab5f39b0893",
                FullPaymentBalance      = 123.45m,
                LowellReference         = "anyoldref",
                OutstandingBalance      = 211.12m
            };

            RequestDataModel requestDataModel = _createVerifoneRequestProcess.CreateDataModel(paymentOptionsVm);

            string tokenexpirationdate = DateTime.Now.AddYears(4).ToString("ddMMyyyy");

            Assert.AreEqual(null, requestDataModel.api);                               // ConfigurationManager.AppSettings["Verifone:PostData:Api"]
            Assert.AreEqual(null, requestDataModel.merchantid);                        // ConfigurationManager.AppSettings["Verifone:Merchant:MerchantId"]
            Assert.AreEqual(null, requestDataModel.systemid);                          // ConfigurationManager.AppSettings["Verifone:Merchant:SystemId"]
            Assert.AreEqual(null, requestDataModel.systemguid);                        // ConfigurationManager.AppSettings["Verifone:Merchant:SystemGuid"])
            Assert.AreEqual("fb3ce06f-af36-40d4-a88b-dab5f39b0893", requestDataModel.merchantreference);
            Assert.AreEqual("<returnurl></returnurl>", requestDataModel.returnurlxml); // $"<returnurl>{ConfigurationManager.AppSettings["Verifone:Url:CompletionUrlOverride"]}</returnurl>";
            Assert.AreEqual(null, requestDataModel.merchanttemplateid);                // ConfigurationManager.AppSettings["Verifone:Template:MerchantTemplateId:SetupPaymentPlan"]
            Assert.AreEqual(1, requestDataModel.languagetemplateid);
            Assert.AreEqual(12, requestDataModel.capturemethod);
            Assert.AreEqual(1, requestDataModel.processingidentifier);
            Assert.AreEqual(null, requestDataModel.accountid); // ConfigurationManager.AppSettings["Verifone:Merchant:AccountId"]
            Assert.AreEqual(123.45m, requestDataModel.transactionvalue);
            Assert.AreEqual("", requestDataModel.tokenidxml);
            Assert.AreEqual("false", requestDataModel.registertoken);
            Assert.AreEqual(tokenexpirationdate, requestDataModel.tokenexpirationdate);
            Assert.AreEqual(null, requestDataModel.allowedpaymentschemes); // ConfigurationManager.AppSettings["Verifone:PostData:AllowedPaymentSchemes"]
            Assert.AreEqual("1", requestDataModel.allowedpaymentmethods);
            Assert.AreEqual("Payment to Lowell account anyoldref", requestDataModel.description);
            Assert.AreEqual("", requestDataModel.firstname);
            Assert.AreEqual("", requestDataModel.lastname);
            Assert.AreEqual("", requestDataModel.email);
            Assert.AreEqual("", requestDataModel.address1);
            Assert.AreEqual("", requestDataModel.address2);
            Assert.AreEqual("", requestDataModel.postcode);
            Assert.AreEqual("", requestDataModel.town);
            Assert.AreEqual(211.12m, requestDataModel.totalamount);
            Assert.AreEqual("Payment to Lowell account anyoldref", requestDataModel.productname);
            Assert.AreEqual("anyoldref", requestDataModel.productcode);
            Assert.AreEqual(false, requestDataModel.processCPC);
            Assert.AreEqual("", requestDataModel.payerauthxml);

            Assert.Inconclusive("Unable to unit test completely. Should be taking IApplicationSettingsReader as a method parameter, so as to be able to mock config.");

            Assert.Inconclusive("Make internal method that takes token expiration date, so that it can be unit tested in detail.");
        }
Пример #2
0
        public string CreatePayload(PaymentOptionsVm accountVm)
        {
            using (var sr = new StreamReader("Verifone/PostData-template.txt"))
            {
                _postdataTemplateXml = sr.ReadToEnd();
            }

            using (var sr = new StreamReader("Verifone/EftRequest-template.txt"))
            {
                _requestTemplateXml = sr.ReadToEnd();
            }

            var requestDataModel = _createVerifoneRequestProcess.CreateDataModel(accountVm);

            var formattedRequestXml = _requestTemplateXml.FormatWith(requestDataModel);

            var htmlEncodedRequest = HttpUtility.HtmlEncode(formattedRequestXml);

            var postDataModel = _createVerifonePostProcess.CreateDataModel(htmlEncodedRequest);

            var formattedPostDataXml = _postdataTemplateXml.FormatWith(postDataModel);

            return(formattedPostDataXml);
        }