public async Task CreateFileUploadTest() { var apiClientMock = new Mock <IApiClient>(); var signMock = new Mock <ISignService>(); var configMock = new Mock <IConfigurationProvider>(); configMock.Setup <string>(x => x.GetUploadsUrl()).Returns("https://example2.com"); SecurionPayGateway gateway = new SecurionPayGateway(apiClientMock.Object, configMock.Object, signMock.Object); var request = new FileUploadRequest() { File = new byte[1] { 233 }, FileName = "test.jpg", Purpose = SecurionPay.Enums.FileUploadPurpose.DisputeEvidence }; await gateway.CreateFileUpload(request); apiClientMock.Verify <Task <FileUpload> >(api => api.SendMultiPartRequest <FileUpload>( It.Is <HttpMethod>(method => method == HttpMethod.Post), It.Is <string>(action => action == configMock.Object.GetUploadsUrl() + "/files"), It.Is <Dictionary <string, string> >(dictionary => dictionary.Any(p => p.Key == "purpose" && p.Value == "dispute_evidence")), It.Is <byte[]>(array => array[0] == 233), It.Is <string>(f => f == "test.jpg")) , Times.Once); }
public IntegrationTest() { var configProvider = new TestConfigurationProvider(); var mimeMapper = new FileExtensionToMimeMapper(); var httpClient = new HttpClient(); var apiClient = new ApiClient(httpClient, configProvider, mimeMapper); var signService = new SignService(configProvider); _gateway = new SecurionPayGateway(apiClient, configProvider, signService); }
public async Task TestMethod <TResponseType>(Func <SecurionPayGateway, Task> methodToTest, RequestDescriptor expectedRequest) { var apiClientMock = new Mock <IApiClient>(); var signMock = new Mock <ISignService>(); var configMock = new Mock <IConfigurationProvider>(); configMock.Setup <string>(x => x.GetApiUrl()).Returns("https://example.com"); configMock.Setup <string>(x => x.GetUploadsUrl()).Returns("https://example2.com"); SecurionPayGateway gateway = new SecurionPayGateway(apiClientMock.Object, configMock.Object, signMock.Object); try { await methodToTest(gateway); } catch { } var endpoint = expectedRequest.UseUploadEndpoint ? configMock.Object.GetUploadsUrl() : configMock.Object.GetApiUrl(); apiClientMock.Verify <Task <TResponseType> >(api => api.SendRequest <TResponseType>(It.Is <HttpMethod>(method => method == expectedRequest.Method), It.Is <string>(action => action == endpoint + "/" + expectedRequest.Action), It.Is <object>(obj => obj == expectedRequest.Parameter)), Times.Once); }
public void TestCheckoutRequest() { var signServiceMock = new Mock <ISignService>(); signServiceMock.Setup(service => service.Sign(It.IsAny <string>())).Returns("cf9ce2d8331c531f8389a616a18f9578c134b784dab5cb7e4b5964e7790f173c"); var gateway = new SecurionPayGateway(new Mock <IApiClient>().Object, new Mock <IConfigurationProvider>().Object, signServiceMock.Object); var checkoutRequest = new CheckoutRequest() { Charge = new CheckoutRequestCharge() { Amount = 499, Currency = "EUR" } }; var signedCheckout = gateway.SignCheckoutRequest(checkoutRequest); signServiceMock.Verify(service => service.Sign(It.Is <string>(x => x == "{\"charge\":{\"amount\":499,\"currency\":\"EUR\"}}"))); Assert.AreEqual("Y2Y5Y2UyZDgzMzFjNTMxZjgzODlhNjE2YTE4Zjk1NzhjMTM0Yjc4NGRhYjVjYjdlNGI1OTY0ZTc3OTBmMTczY3x7ImNoYXJnZSI6eyJhbW91bnQiOjQ5OSwiY3VycmVuY3kiOiJFVVIifX0=", signedCheckout); }
public async Task <ActionResult> PagarCita(Tarjeta tarjeta) { var CookCitaID = ControllerContext.HttpContext.Request.Cookies["IDCita"]; string CitaID = CookCitaID.Value; CookCitaID.Expires = DateTime.Now.AddDays(-1D); var CookPsicologoID = ControllerContext.HttpContext.Request.Cookies["IDPsicologo"]; string PsicologoID = CookPsicologoID.Value; CookPsicologoID.Expires = DateTime.Now.AddDays(-1D); Pago pago = new Pago { PagoMonto = tarjeta.MT, PagoFecha = DateTime.Now, Paciente = new Paciente { PacienteID = SessionHelper.GetNameIdentifier(User) }, Cita = new Cita { CitaID = CitaID }, Psicologo = new Psicologo { PsicologoID = PsicologoID } }; SecurionPayGateway gateway = new SecurionPayGateway("sk_test_MZm7slzOHYNJsvQ0yQjHaYwS"); int montoPago = (int)(tarjeta.MT * 100); ChargeRequest request = new ChargeRequest() { Amount = montoPago, Currency = "PEN", Card = new CardRequest() { CustomerId = SessionHelper.GetEmail(User), Number = tarjeta.CN, ExpMonth = tarjeta.NM.ToString(), ExpYear = tarjeta.NY.ToString(), Cvc = tarjeta.CV.ToString() } }; try { Charge charge = await gateway.CreateCharge(request); // do something with charge object - see https://securionpay.com/docs/api#charge-object string chargeId = charge.Id; client = new FireSharp.FirebaseClient(config); //Crear codigo y cita PushResponse response = client.Push("Pago/", pago); pago.PagoID = response.Result.name; //Enviar datos de Cita a DB SetResponse setResponse = client.Set("Pago/" + pago.PagoID, pago); return(RedirectToAction("SolicitarCita", "Cita", new { CitaID })); } catch (SecurionPayException e) { // handle error response - see https://securionpay.com/docs/api#error-object ErrorType errorType = e.Error.Type; ErrorCode?errorCode = e.Error.Code; string errorMessage = e.Error.Message; } return(RedirectToAction("CancelarPago", "Cita")); }