public void Should_get_parameter_string()
        {
            // Arrange
            var doc = new XmlDocument();

            doc.AppendChild(doc.CreateElement("Info"));

            var response = new PaymentResponse
            {
                Operation      = "Operation",
                OrderNumber    = 34634634,
                MerOrderNumber = 321,
                PRCode         = 23,
                SRCode         = 1,
                ResultText     = "ResultText",
                UserParam1     = "ResultText",
                AddInfo        = doc.DocumentElement,
                Digest         = "Digest",
                Digest1        = "Digest1"
            };

            var          testee   = new PaymentResponseTransformer();
            const string expected = "Operation|34634634|321|23|1|ResultText|ResultText|<Info />";

            // Assert
            var result = testee.GetParameterString(response);

            // Assert
            result.Should().BeEquivalentTo(expected);
        }
        public void Should_get_payment_response_without_optional_parameters()
        {
            // Arrange
            var data = new QueryCollection(new Dictionary <string, StringValues>()
            {
                { "OPERATION", new StringValues("Operation") },
                { "ORDERNUMBER", new StringValues("12332") },
                { "PRCODE", new StringValues("23") },
                { "SRCODE", new StringValues("12") },
                { "RESULTTEXT", new StringValues("ResultText") },
                { "USERPARAM1", new StringValues("UserParam1") },
                { "DIGEST", new StringValues("Digest") },
                { "DIGEST1", new StringValues("Digest1") },
            });

            var testee = new PaymentResponseTransformer();

            // Act
            var result = testee.GetPaymentResponse(data);

            // Assert
            result.Operation.Should().BeEquivalentTo("Operation");
            result.OrderNumber.Should().Be(12332);
            result.MerOrderNumber.Should().Be(0);
            result.PRCode.Should().Be(23);
            result.SRCode.Should().Be(12);
            result.ResultText.Should().BeEquivalentTo("ResultText");
            result.UserParam1.Should().BeEquivalentTo("UserParam1");
            result.AddInfo.Should().BeNull();
            result.Digest.Should().BeEquivalentTo("Digest");
            result.Digest1.Should().BeEquivalentTo("Digest1");
        }
Exemplo n.º 3
0
        public void Should_process_GPWP_response_from_response_no_mock_with_certificate()
        {
            // Arrange
            const string merchantNumber             = "62346346";
            const string privateCertificateFile     = "certs/server.pfx";
            const string privateCertificatePassword = "******";
            const string publicCertificateFile      = "certs/server_pub.pem";
            const string publicCertificatePassword  = null;
            var          privateCert = new X509Certificate2(privateCertificateFile, privateCertificatePassword,
                                                            Encoding.DefaultKeyStorageFlags);
            var publicCert = new X509Certificate2(publicCertificateFile, publicCertificatePassword,
                                                  Encoding.DefaultKeyStorageFlags);

            var response = new PaymentResponse
            {
                Operation      = "Operation",
                OrderNumber    = 12332,
                MerOrderNumber = 0,
                PRCode         = 0,
                SRCode         = 0,
                ResultText     = "ResultText",
                UserParam1     = "UserParam1",
                AddInfo        = null
            };

            var encodingServiceMock = this.GetLoggerMock <EncodingService>();
            var encodingService     = new EncodingService(encodingServiceMock.Object);
            var prt = new PaymentResponseTransformer();

            var parameterString = prt.GetParameterString(response);

            response.Digest  = encodingService.SignData(parameterString, privateCert);
            response.Digest1 = encodingService.SignData($"{parameterString}|{merchantNumber}", privateCert);

            var clientServiceLoggerMock = this.GetLoggerMock <ClientService>();
            var testee = new ClientService(encodingService,
                                           new PaymentRequestTransformer(), new PaymentResponseTransformer(), clientServiceLoggerMock.Object);

            // Act
            // Assert
            testee.ProcessGPWebPayResponse(response, merchantNumber, publicCert);
        }