Skip to content

Commit 468857d

Browse files
merge with master
2 parents 54f7128 + f493de7 commit 468857d

13 files changed

Lines changed: 541 additions & 146 deletions

File tree

TransactionProcessorACL.BusinessLogic.Tests/TransactionProcessorACLApplicationServiceTests.cs

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace TransactionProcessorACL.BusinesssLogic.Tests
1313
using Microsoft.Extensions.Configuration;
1414
using Models;
1515
using Moq;
16+
using Newtonsoft.Json;
1617
using SecurityService.Client;
1718
using Shared.General;
1819
using Shared.Logger;
@@ -72,6 +73,40 @@ public async Task TransactionProcessorACLApplicationService_ProcessLogonTransact
7273
logonResponse.ResponseCode.ShouldBe(TestData.ResponseCode);
7374
}
7475

76+
[Fact]
77+
public async Task TransactionProcessorACLApplicationService_ProcessLogonTransaction_RequestIsSerialisedCorrectly()
78+
{
79+
SerialisedMessage capturedMessage = null;
80+
81+
transactionProcessorClient.Setup(t => t.PerformTransaction(It.IsAny<String>(), It.IsAny<SerialisedMessage>(), It.IsAny<CancellationToken>()))
82+
.Callback<String, SerialisedMessage, CancellationToken>((_, message, _) => capturedMessage = message)
83+
.ReturnsAsync(TestData.SerialisedMessageResponseLogon);
84+
securityServiceClient.Setup(s => s.GetToken(It.IsAny<String>(), It.IsAny<String>(), It.IsAny<CancellationToken>()))
85+
.ReturnsAsync(Result.Success(TestData.TokenResponse));
86+
87+
await applicationService.ProcessLogonTransaction(TestData.EstateId,
88+
TestData.MerchantId,
89+
TestData.TransactionDateTime,
90+
TestData.TransactionNumber,
91+
TestData.DeviceIdentifier,
92+
CancellationToken.None);
93+
94+
capturedMessage.ShouldNotBeNull();
95+
capturedMessage.Metadata[MetadataContants.KeyNameEstateId].ShouldBe(TestData.EstateId.ToString());
96+
capturedMessage.Metadata[MetadataContants.KeyNameMerchantId].ShouldBe(TestData.MerchantId.ToString());
97+
98+
LogonTransactionRequest logonTransactionRequest = JsonConvert.DeserializeObject<LogonTransactionRequest>(capturedMessage.SerialisedData,
99+
new JsonSerializerSettings {
100+
TypeNameHandling = TypeNameHandling.All
101+
});
102+
103+
logonTransactionRequest.ShouldNotBeNull();
104+
logonTransactionRequest.TransactionNumber.ShouldBe(TestData.TransactionNumber);
105+
logonTransactionRequest.DeviceIdentifier.ShouldBe(TestData.DeviceIdentifier);
106+
logonTransactionRequest.TransactionDateTime.ShouldBe(TestData.TransactionDateTime);
107+
logonTransactionRequest.TransactionType.ShouldBe("LOGON");
108+
}
109+
75110
[Fact]
76111
public async Task TransactionProcessorACLApplicationService_ProcessLogonTransaction_GetTokenFailed_ResultFailed()
77112
{
@@ -149,6 +184,52 @@ public async Task TransactionProcessorACLApplicationService_ProcessSaleTransacti
149184
saleResponse.ResponseCode.ShouldBe(TestData.ResponseCode);
150185
}
151186

187+
[Fact]
188+
public async Task TransactionProcessorACLApplicationService_ProcessSaleTransaction_RequestContainsExpectedSaleData()
189+
{
190+
SerialisedMessage capturedRequest = null;
191+
transactionProcessorClient.Setup(t => t.PerformTransaction(It.IsAny<String>(), It.IsAny<SerialisedMessage>(), It.IsAny<CancellationToken>()))
192+
.Callback<String, SerialisedMessage, CancellationToken>((accessToken, request, cancellationToken) => capturedRequest = request)
193+
.ReturnsAsync(TestData.SerialisedMessageResponseSale);
194+
securityServiceClient.Setup(s => s.GetToken(It.IsAny<String>(), It.IsAny<String>(), It.IsAny<CancellationToken>())).ReturnsAsync(Result.Success(TestData.TokenResponse));
195+
196+
Result<ProcessSaleTransactionResponse> result = await applicationService.ProcessSaleTransaction(TestData.EstateId,
197+
TestData.MerchantId,
198+
TestData.TransactionDateTime,
199+
TestData.TransactionNumber,
200+
TestData.DeviceIdentifier,
201+
TestData.OperatorId,
202+
TestData.CustomerEmailAddress,
203+
TestData.ContractId,
204+
TestData.ProductId,
205+
TestData.AdditionalRequestMetadata,
206+
CancellationToken.None);
207+
208+
result.IsSuccess.ShouldBeTrue();
209+
capturedRequest.ShouldNotBeNull();
210+
capturedRequest.Metadata[MetadataContants.KeyNameEstateId].ShouldBe(TestData.EstateId.ToString());
211+
capturedRequest.Metadata[MetadataContants.KeyNameMerchantId].ShouldBe(TestData.MerchantId.ToString());
212+
213+
SaleTransactionRequest request = JsonConvert.DeserializeObject<SaleTransactionRequest>(capturedRequest.SerialisedData,
214+
new JsonSerializerSettings
215+
{
216+
TypeNameHandling = TypeNameHandling.All
217+
});
218+
219+
request.ShouldNotBeNull();
220+
request.TransactionNumber.ShouldBe(TestData.TransactionNumber);
221+
request.DeviceIdentifier.ShouldBe(TestData.DeviceIdentifier);
222+
request.TransactionDateTime.ShouldBe(TestData.TransactionDateTime);
223+
request.TransactionType.ShouldBe("SALE");
224+
request.OperatorId.ShouldBe(TestData.OperatorId);
225+
request.CustomerEmailAddress.ShouldBe(TestData.CustomerEmailAddress);
226+
request.TransactionSource.ShouldBe(1);
227+
request.ContractId.ShouldBe(TestData.ContractId);
228+
request.ProductId.ShouldBe(TestData.ProductId);
229+
request.AdditionalTransactionMetadata["Amount"].ShouldBe(TestData.AdditionalRequestMetadata["Amount"]);
230+
request.AdditionalTransactionMetadata["CustomerAccountNumber"].ShouldBe(TestData.AdditionalRequestMetadata["CustomerAccountNumber"]);
231+
}
232+
152233
[Fact]
153234
public async Task TransactionProcessorACLApplicationService_ProcessSaleTransaction_GetTokenFailed_ResultFailed()
154235
{

0 commit comments

Comments
 (0)