@@ -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