public async Task ProcessSalesAdjustmentReversalAsync_Throws_When_Disposed() { var client = CreateTestClient(); client.Dispose(); var request = new ProcessAuthorisationRequest() { MerchantId = "30299999", DeviceId = "d555", OperatorId = "test_operator", PosVersion = "123", ClientTransactionReference = "tnx-ref1", PreapprovalCode = "6111NHQMAM4Z", FinanceAmount = 100, PurchaseAmount = 500, PurchaseItems = new PurchaseItemsCollection ( new string[] { "Item1", "Item2" } ) }; _ = await client.ProcessAuthorisationAsync(request); }
public void Writes_Expected_ProcessAuthorisation_Request_With_Signature() { var sigGen = new Hmac256SignatureGenerator("dy33vQhksVsv"); var writer = new SignedRequestWriter(sigGen); var request = new ProcessAuthorisationRequest() { MerchantId = "30299999", DeviceId = "d555", OperatorId = "test_operator", PosVersion = "123", ClientTransactionReference = "tnx-ref1", PreapprovalCode = "6111NHQMAM4Z", FinanceAmount = 100, PurchaseAmount = 500, PurchaseItems = new PurchaseItemsCollection ( new string[] { "Item1", "Item2" } ) }; var result = writer.WriteRequest(request); Assert.AreEqual("{\"x_pos_transaction_ref\":\"tnx-ref1\",\"x_pre_approval_code\":\"6111NHQMAM4Z\",\"x_finance_amount\":10000,\"x_purchase_amount\":50000,\"purchase_items\":\"{\\\"PurchaseItems\\\":[\\\"Item1\\\",\\\"Item2\\\"]}\",\"buyer_confirms\":false,\"x_merchant_id\":\"30299999\",\"x_device_id\":\"d555\",\"x_firmware_version\":\"123\",\"x_operator_id\":\"test_operator\",\"signature\":\"d6967970b99e585fc7d1a11702690f25b4be0c5fbfd10b39fbea3953ba48bad2\"}", result); Assert.IsTrue(result.Contains("d6967970b99e585fc7d1a11702690f25b4be0c5fbfd10b39fbea3953ba48bad2")); }
public async Task HummClient_ProcessAuthorisation_RaisesEvent_When_AutoHandlePendingResponse_True() { int requestCount = 0; var request = new ProcessAuthorisationRequest() { ClientTransactionReference = System.Guid.NewGuid().ToString(), PurchaseAmount = 100, FinanceAmount = 500, PreapprovalCode = "01000000", OperatorId = "Yort", PurchaseItems = new PurchaseItemsCollection() { "Item1", "Item2" }, BuyerConfirms = true, AutoHandlePendingResponse = true, TrackingData = new Dictionary <string, string>() { { "Key1", "Value1" } } }; var handler = new MockHttpHandler ( (clientRequest) => { requestCount++; if (requestCount >= 4) { return(GetSuccessfulProcessAuthorisationResponse()); } return(GetPendingProcessAuthorisationResponse(request)); } ); var eventRaised = false; var client = CreateMockedClient(handler); client.PendingAuthorisation += (sender, e) => { eventRaised = true; Assert.AreEqual(request.ClientTransactionReference, e.ClientReference); Assert.AreEqual(5, e.RetryDuration); Assert.AreEqual(request.TrackingData.Count, e.TrackingData.Count); }; var sw = new System.Diagnostics.Stopwatch(); sw.Start(); var response = await client.ProcessAuthorisationAsync(request); sw.Stop(); Assert.AreEqual(4, requestCount); Assert.IsTrue(sw.Elapsed.TotalSeconds >= 15); Assert.IsTrue(eventRaised); }
public async Task HummClient_ProcessAuthorisation_Returns_Pending_When_AutoHandlePendingResponse_False() { int requestCount = 0; var requestContent = new ProcessAuthorisationRequest() { ClientTransactionReference = System.Guid.NewGuid().ToString(), PurchaseAmount = 100, FinanceAmount = 500, PreapprovalCode = "01000000", OperatorId = "Yort", PurchaseItems = new PurchaseItemsCollection() { "Item1", "Item2" }, BuyerConfirms = true, AutoHandlePendingResponse = false }; var handler = new MockHttpHandler ( (clientRequest) => { requestCount++; if (requestCount >= 4) { return(GetSuccessfulProcessAuthorisationResponse()); } return(GetPendingProcessAuthorisationResponse(requestContent)); } ); var client = CreateMockedClient(handler); var sw = new System.Diagnostics.Stopwatch(); sw.Start(); var response = await client.ProcessAuthorisationAsync(requestContent); sw.Stop(); Assert.AreEqual(1, requestCount); Assert.IsTrue(sw.Elapsed.TotalSeconds <= 1); Assert.AreEqual(RequestStates.Pending, response.Status); }
public async Task ProcessAuthorisationAsync_Validates_PreapprovalCode_NotOverLength() { var client = CreateTestClient(); var request = new ProcessAuthorisationRequest() { ClientTransactionReference = "1234567890123456789012345678901234567890123456789012345678901234567890", PreapprovalCode = "1234567890", PurchaseAmount = 10, FinanceAmount = 10, PurchaseItems = new PurchaseItemsCollection() { "Item1", "Item2" } }; _ = await client.ProcessAuthorisationAsync(request); }
public void ProcessAuthorisationRequest_Validates_Ok_When_Valid() { var request = new ProcessAuthorisationRequest() { OperatorId = "Yort", DeviceId = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_DeviceId"), MerchantId = Environment.GetEnvironmentVariable("Humm_Test_Sandbox_MerchantId"), PosVersion = "1.0", ClientTransactionReference = "12345678901234567890", PreapprovalCode = "1234567890", PurchaseAmount = 10, FinanceAmount = 10, PurchaseItems = new PurchaseItemsCollection() { "Item1", "Item2" } }; request.Validate(); }
private Task <HttpResponseMessage> GetPendingProcessAuthorisationResponse(ProcessAuthorisationRequest request) { var responseContent = new ProcessAuthorisationResponse() { Code = "SPRA01", Status = RequestStates.Pending, Message = "Pending", RetryDuration = 5, Signature = "bb5bb8418bff30eacaa841e7b7d0fba94a5b40bb1ce9283c1b26511ade34f719" }; if (request.TrackingData != null) { responseContent.TrackingData = new Dictionary <string, string>(); CopyTrackingData(request.TrackingData, responseContent.TrackingData); } var retVal = new HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(responseContent)) }; return(Task.FromResult(retVal)); }