diff --git a/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj b/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj
index 32c42d8a..3470c884 100644
--- a/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj
+++ b/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/TransactionProcessor.BusinessLogic.Tests/Manager/VoucherManagementManagerTests.cs b/TransactionProcessor.BusinessLogic.Tests/Manager/VoucherManagementManagerTests.cs
index 63f7d1b7..792242b6 100644
--- a/TransactionProcessor.BusinessLogic.Tests/Manager/VoucherManagementManagerTests.cs
+++ b/TransactionProcessor.BusinessLogic.Tests/Manager/VoucherManagementManagerTests.cs
@@ -71,8 +71,9 @@ await context.VoucherProjectionStates.AddAsync(new VoucherProjectionState
VoucherManagementManager manager = new VoucherManagementManager(dbContextFactory.Object, aggregateService.Object);
- Models.Voucher voucher = await manager.GetVoucherByCode(TestData.EstateId, TestData.VoucherCode, CancellationToken.None);
-
+ var result = await manager.GetVoucherByCode(TestData.EstateId, TestData.VoucherCode, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ Models.Voucher voucher = result.Data;
voucher.ShouldNotBeNull();
}
@@ -121,8 +122,9 @@ await context.VoucherProjectionStates.AddAsync(new VoucherProjectionState
VoucherManagementManager manager = new VoucherManagementManager(dbContextFactory.Object, aggregateService.Object);
- Models.Voucher voucher = await manager.GetVoucherByTransactionId(TestData.EstateId, TestData.TransactionId, CancellationToken.None);
-
+ var result = await manager.GetVoucherByTransactionId(TestData.EstateId, TestData.TransactionId, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ Models.Voucher voucher = result.Data;
voucher.ShouldNotBeNull();
}
diff --git a/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/PataPawaPostPayProxyTests.cs b/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/PataPawaPostPayProxyTests.cs
index 48547909..a7577dc0 100644
--- a/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/PataPawaPostPayProxyTests.cs
+++ b/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/PataPawaPostPayProxyTests.cs
@@ -44,8 +44,9 @@ public async Task PataPawaPostPayProxy_ProcessLogonMessage_SuccessfulResponse_Me
PataPawaPostPayService.Setup(s => s.getLoginRequestAsync(It.IsAny(), It.IsAny())).ReturnsAsync(TestData.PataPawaPostPaidSuccessfulLoginResponse);
- BusinessLogic.OperatorInterfaces.OperatorResponse logonResponse = await PataPawaPostPayProxy.ProcessLogonMessage(CancellationToken.None);
-
+ var logonResponseResult = await PataPawaPostPayProxy.ProcessLogonMessage(CancellationToken.None);
+ logonResponseResult.IsSuccess.ShouldBeTrue();
+ BusinessLogic.OperatorInterfaces.OperatorResponse logonResponse = logonResponseResult.Data;
logonResponse.ShouldNotBeNull();
logonResponse.IsSuccessful.ShouldBeTrue();
logonResponse.ResponseMessage.ShouldBe(TestData.PataPawaPostPaidSuccessfulLoginResponse.message);
@@ -88,7 +89,7 @@ public async Task PataPawaPostPayProxy_ProcessSaleMessage_VerifyAccount_Successf
.ReturnsAsync(TestData.PataPawaPostPaidSuccessfulVerifyAccountResponse);
MemoryCache.Set("PataPawaPostPayLogon", TestData.PataPawaPostPaidSuccessfulLoginOperatorResponse);
- BusinessLogic.OperatorInterfaces.OperatorResponse saleResponse = await this.PataPawaPostPayProxy.ProcessSaleMessage(TestData.TransactionId,
+ var processSaleMessageResult = await this.PataPawaPostPayProxy.ProcessSaleMessage(TestData.TransactionId,
TestData.OperatorId,
TestData.Merchant,
TestData.TransactionDateTime,
@@ -96,6 +97,8 @@ public async Task PataPawaPostPayProxy_ProcessSaleMessage_VerifyAccount_Successf
TestData.AdditionalTransactionMetaDataForPataPawaVerifyAccount(),
CancellationToken.None);
+ processSaleMessageResult.IsSuccess.ShouldBeTrue();
+ BusinessLogic.OperatorInterfaces.OperatorResponse saleResponse = processSaleMessageResult.Data;
saleResponse.ShouldNotBeNull();
saleResponse.IsSuccessful.ShouldBeTrue();
saleResponse.ResponseMessage.ShouldBe("SUCCESS");
@@ -206,7 +209,7 @@ public async Task PataPawaPostPayProxy_ProcessSaleMessage_ProcessBill_Successful
.ReturnsAsync(TestData.PataPawaPostPaidSuccessfulProcessBillResponse);
this.MemoryCache.Set("PataPawaPostPayLogon", TestData.PataPawaPostPaidSuccessfulLoginOperatorResponse);
- BusinessLogic.OperatorInterfaces.OperatorResponse saleResponse = await this.PataPawaPostPayProxy.ProcessSaleMessage(
+ var processSaleMessageResult = await this.PataPawaPostPayProxy.ProcessSaleMessage(
TestData.TransactionId,
TestData.OperatorId,
TestData.Merchant,
@@ -214,7 +217,8 @@ public async Task PataPawaPostPayProxy_ProcessSaleMessage_ProcessBill_Successful
TestData.TransactionReference,
TestData.AdditionalTransactionMetaDataForPataPawaProcessBill(),
CancellationToken.None);
-
+ processSaleMessageResult.IsSuccess.ShouldBeTrue();
+ BusinessLogic.OperatorInterfaces.OperatorResponse saleResponse = processSaleMessageResult.Data;
saleResponse.ShouldNotBeNull();
saleResponse.IsSuccessful.ShouldBeTrue();
saleResponse.ResponseMessage.ShouldBe(TestData.PataPawaPostPaidSuccessfulProcessBillResponse.msg);
diff --git a/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/SafaricomPinlessProxyTests.cs b/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/SafaricomPinlessProxyTests.cs
index 7f121e5f..507a0bd1 100644
--- a/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/SafaricomPinlessProxyTests.cs
+++ b/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/SafaricomPinlessProxyTests.cs
@@ -34,7 +34,9 @@ public async Task SafaricomPinlessProxy_ProcessLogonMessage_NullIsReturned() {
HttpClient httpClient = SetupMockHttpClient(responseMessage);
IOperatorProxy safaricomPinlessproxy = new SafaricomPinlessProxy(safaricomConfiguration, httpClient);
- OperatorResponse operatorResponse = await safaricomPinlessproxy.ProcessLogonMessage(CancellationToken.None);
+ var processLogonMessageResult = await safaricomPinlessproxy.ProcessLogonMessage(CancellationToken.None);
+ processLogonMessageResult.IsSuccess.ShouldBeTrue();
+ OperatorResponse operatorResponse = processLogonMessageResult.Data;
operatorResponse.ShouldBeNull();
}
diff --git a/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/VoucherManagementProxyTests.cs b/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/VoucherManagementProxyTests.cs
index 4da7282a..729899b7 100644
--- a/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/VoucherManagementProxyTests.cs
+++ b/TransactionProcessor.BusinessLogic.Tests/OperatorInterfaces/VoucherManagementProxyTests.cs
@@ -28,8 +28,9 @@ public async Task VoucherManagementProxy_ProcessLogonMessage_NullReturned() {
IOperatorProxy voucherManagementProxy = new VoucherManagementProxy(mediator.Object);
- OperatorResponse operatorResponse = await voucherManagementProxy.ProcessLogonMessage(CancellationToken.None);
-
+ var processLogonMessageResult = await voucherManagementProxy.ProcessLogonMessage(CancellationToken.None);
+ processLogonMessageResult.IsSuccess.ShouldBeTrue();
+ OperatorResponse operatorResponse = processLogonMessageResult.Data;
operatorResponse.ShouldBeNull();
}
diff --git a/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs b/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs
index 602b6e21..5c908eff 100644
--- a/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs
+++ b/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs
@@ -180,8 +180,9 @@ public async Task TransactionDomainService_ProcessReconciliationTransaction_Reco
TestData.MerchantId, TestData.DeviceIdentifier, TestData.TransactionDateTime,
TestData.ReconciliationTransactionCount, TestData.ReconciliationTransactionValue);
- ProcessReconciliationTransactionResponse response = await this.TransactionDomainService.ProcessReconciliationTransaction(command, CancellationToken.None);
- ;
+ var result = await this.TransactionDomainService.ProcessReconciliationTransaction(command, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ ProcessReconciliationTransactionResponse response = result.Data;
response.EstateId.ShouldBe(TestData.EstateId);
response.MerchantId.ShouldBe(TestData.MerchantId);
@@ -209,8 +210,9 @@ public async Task TransactionDomainService_ProcessReconciliationTransaction_Vali
TestData.MerchantId, TestData.DeviceIdentifier, TestData.TransactionDateTime,
TestData.ReconciliationTransactionCount, TestData.ReconciliationTransactionValue);
- ProcessReconciliationTransactionResponse response = await this.TransactionDomainService.ProcessReconciliationTransaction(command, CancellationToken.None);
- ;
+ var result = await this.TransactionDomainService.ProcessReconciliationTransaction(command, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ var response = result.Data;
response.EstateId.ShouldBe(TestData.EstateId);
response.MerchantId.ShouldBe(TestData.MerchantId);
@@ -261,7 +263,9 @@ public async Task TransactionDomainService_ProcessSaleTransaction_DeclinedByOper
TestData.CustomerEmailAddress, TestData.AdditionalTransactionMetaDataForMobileTopup(),
TestData.ContractId, TestData.ProductId, TestData.TransactionSource, TestData.TransactionReceivedDateTime);
- ProcessSaleTransactionResponse response = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ var result = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ var response = result.Data;
response.EstateId.ShouldBe(TestData.EstateId);
response.MerchantId.ShouldBe(TestData.MerchantId);
@@ -302,7 +306,9 @@ public async Task TransactionDomainService_ProcessSaleTransaction_OperatorProxyT
TestData.CustomerEmailAddress, TestData.AdditionalTransactionMetaDataForMobileTopup(),
TestData.ContractId, TestData.ProductId, TestData.TransactionSource, TestData.TransactionReceivedDateTime);
- ProcessSaleTransactionResponse response = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ var result = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ var response = result.Data;
response.EstateId.ShouldBe(TestData.EstateId);
response.MerchantId.ShouldBe(TestData.MerchantId);
@@ -360,7 +366,9 @@ public async Task TransactionDomainService_ProcessSaleTransaction_TransactionIsP
TestData.CustomerEmailAddress, TestData.AdditionalTransactionMetaDataForMobileTopup(),
TestData.ContractId, TestData.ProductId, TestData.TransactionSource, TestData.TransactionReceivedDateTime);
- ProcessSaleTransactionResponse response = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ var result = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ var response = result.Data;
response.EstateId.ShouldBe(TestData.EstateId);
response.MerchantId.ShouldBe(TestData.MerchantId);
@@ -422,7 +430,9 @@ public async Task TransactionDomainService_ProcessSaleTransaction_NoFloatFound_T
TestData.CustomerEmailAddress, TestData.AdditionalTransactionMetaDataForMobileTopup(),
TestData.ContractId, TestData.ProductId, TestData.TransactionSource, TestData.TransactionReceivedDateTime);
- ProcessSaleTransactionResponse response = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ var result = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ var response = result.Data;
response.EstateId.ShouldBe(TestData.EstateId);
response.MerchantId.ShouldBe(TestData.MerchantId);
@@ -464,7 +474,9 @@ public async Task TransactionDomainService_ProcessSaleTransaction_ValidationFail
TestData.CustomerEmailAddress, TestData.AdditionalTransactionMetaDataForMobileTopup(),
TestData.ContractId, TestData.ProductId, TestData.TransactionSource, TestData.TransactionReceivedDateTime);
- ProcessSaleTransactionResponse response = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ var result = await this.TransactionDomainService.ProcessSaleTransaction(command, CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
+ var response = result.Data;
response.EstateId.ShouldBe(TestData.EstateId);
response.MerchantId.ShouldBe(TestData.MerchantId);
diff --git a/TransactionProcessor.BusinessLogic/Common/Extensions.cs b/TransactionProcessor.BusinessLogic/Common/Extensions.cs
index 1f2b033a..b8c8b526 100644
--- a/TransactionProcessor.BusinessLogic/Common/Extensions.cs
+++ b/TransactionProcessor.BusinessLogic/Common/Extensions.cs
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Shared.Results;
+using SimpleResults;
namespace TransactionProcessor.BusinessLogic.Common
{
@@ -23,7 +25,7 @@ public static Guid CalculateSettlementAggregateId(DateTime settlementDate,
return aggregateId;
}
- public static async Task GetToken(TokenResponse currentToken, ISecurityServiceClient securityServiceClient, CancellationToken cancellationToken)
+ public static async Task> GetToken(TokenResponse currentToken, ISecurityServiceClient securityServiceClient, CancellationToken cancellationToken)
{
// Get a token to talk to the estate service
String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId");
@@ -33,20 +35,26 @@ public static async Task GetToken(TokenResponse currentToken, ISe
if (currentToken == null)
{
- TokenResponse token = await securityServiceClient.GetToken(clientId, clientSecret, cancellationToken);
+ Result tokenResult= await securityServiceClient.GetToken(clientId, clientSecret, cancellationToken);
+ if (tokenResult.IsFailed)
+ return ResultHelpers.CreateFailure(tokenResult);
+ TokenResponse token =tokenResult.Data;
Logger.LogDebug($"Token is {token.AccessToken}");
- return token;
+ return Result.Success(token);
}
if (currentToken.Expires.UtcDateTime.Subtract(DateTime.UtcNow) < TimeSpan.FromMinutes(2))
{
Logger.LogDebug($"Token is about to expire at {currentToken.Expires.DateTime:O}");
- TokenResponse token = await securityServiceClient.GetToken(clientId, clientSecret, cancellationToken);
+ Result tokenResult = await securityServiceClient.GetToken(clientId, clientSecret, cancellationToken);
+ if (tokenResult.IsFailed)
+ return ResultHelpers.CreateFailure(tokenResult);
+ TokenResponse token = tokenResult.Data;
Logger.LogDebug($"Token is {token.AccessToken}");
- return token;
+ return Result.Success(token);
}
- return currentToken;
+ return Result.Success(currentToken);
}
}
diff --git a/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs b/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs
index 3413433e..9de2fcb5 100644
--- a/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs
+++ b/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs
@@ -152,7 +152,10 @@ private async Task HandleSpecificDomainEvent(VoucherDomainEvents.Voucher
return ResultHelpers.CreateFailure(voucherAggregateResult);
Models.Voucher voucherModel = voucherAggregateResult.Data.GetVoucher();
- this.TokenResponse = await Helpers.GetToken(this.TokenResponse, this.SecurityServiceClient, cancellationToken);
+ Result getTokenResult = await Helpers.GetToken(this.TokenResponse, this.SecurityServiceClient, cancellationToken);
+ if (getTokenResult.IsFailed)
+ return ResultHelpers.CreateFailure(getTokenResult);
+ this.TokenResponse = getTokenResult.Data;
if (string.IsNullOrEmpty(voucherModel.RecipientEmail) == false)
{
String message = await this.GetEmailVoucherMessage(voucherModel, cancellationToken);
diff --git a/TransactionProcessor.BusinessLogic/Manager/TransactionProcessorManager.cs b/TransactionProcessor.BusinessLogic/Manager/TransactionProcessorManager.cs
index 3d2546da..3a9b97ae 100644
--- a/TransactionProcessor.BusinessLogic/Manager/TransactionProcessorManager.cs
+++ b/TransactionProcessor.BusinessLogic/Manager/TransactionProcessorManager.cs
@@ -92,8 +92,11 @@ public async Task> GetContract(Guid estateId,
{
foreach (Operator @operator in estateModel.Operators)
{
- OperatorAggregate operatorAggregate = await this.AggregateService.GetLatest(@operator.OperatorId, cancellationToken);
- @operator.Name = operatorAggregate.Name;
+ var getOperatorResult = await this.AggregateService.GetLatest(@operator.OperatorId, cancellationToken);
+ if (getOperatorResult.IsSuccess) {
+ OperatorAggregate operatorAggregate = getOperatorResult.Data;
+ @operator.Name = operatorAggregate.Name;
+ }
}
}
@@ -132,7 +135,10 @@ public async Task> GetMerchant(Guid estateId,
List operators = new();
foreach (Models.Merchant.Operator @operator in merchantModel.Operators)
{
- OperatorAggregate operatorAggregate = await this.AggregateService.GetLatest(@operator.OperatorId, cancellationToken);
+ var getOperatorResult = await this.AggregateService.GetLatest(@operator.OperatorId, cancellationToken);
+ if (getOperatorResult.IsFailed)
+ return ResultHelpers.CreateFailure(getOperatorResult);
+ OperatorAggregate operatorAggregate = getOperatorResult.Data;
Models.Merchant.Operator newOperator = @operator with { Name = operatorAggregate.Name };
operators.Add(newOperator);
}
diff --git a/TransactionProcessor.BusinessLogic/Services/ContractDomainService.cs b/TransactionProcessor.BusinessLogic/Services/ContractDomainService.cs
index 3c6f927f..b708f44b 100644
--- a/TransactionProcessor.BusinessLogic/Services/ContractDomainService.cs
+++ b/TransactionProcessor.BusinessLogic/Services/ContractDomainService.cs
@@ -55,9 +55,12 @@ private async Task ApplyUpdates(Func<(EstateAggregate estateAggregate, C
{
try
{
- EstateAggregate estateAggregate = await this.AggregateService.Get(estateId, cancellationToken);
+ Result getResult = await this.AggregateService.Get(estateId, cancellationToken);
+ if (getResult.IsFailed)
+ return ResultHelpers.CreateFailure(getResult);
+ EstateAggregate estateAggregate = getResult.Data;
if (estateAggregate.IsCreated == false)
- return Result.Failure("Estate is noty created");
+ return Result.Failure("Estate is not created");
Result getContractResult = await this.AggregateService.GetLatest(contractId, cancellationToken);
Result contractAggregateResult =
@@ -160,8 +163,10 @@ public async Task CreateContract(ContractCommands.CreateContractCommand
String projection =
$"fromCategory(\"ContractAggregate\")\n.when({{\n $init: function (s, e) {{\n return {{\n total: 0,\n contractId: 0\n }};\n }},\n 'ContractCreatedEvent': function(s,e){{\n // Check if it matches\n if (e.data.description === '{command.RequestDTO.Description}' \n && e.data.operatorId === '{command.RequestDTO.OperatorId}'){{\n s.total += 1;\n s.contractId = e.data.contractId\n }}\n }}\n}})";
- Result resultString = await this.Context.RunTransientQuery(projection, cancellationToken);
-
+ Result result = await this.Context.RunTransientQuery(projection, cancellationToken);
+ if (result.IsFailed)
+ return ResultHelpers.CreateFailure(result);
+ String resultString = result.Data;
if (String.IsNullOrEmpty(resultString) == false)
{
JObject jsonResult = JObject.Parse(resultString);
diff --git a/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs b/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs
index a7b1a098..7d9d6eb0 100644
--- a/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs
+++ b/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs
@@ -464,8 +464,10 @@ public async Task AddSettledMerchantFee(TransactionCommands.AddSettledMe
public async Task SendCustomerEmailReceipt(TransactionCommands.SendCustomerEmailReceiptCommand command,
CancellationToken cancellationToken) {
- this.TokenResponse = await Helpers.GetToken(this.TokenResponse, this.SecurityServiceClient, cancellationToken);
-
+ Result getTokenResult = await Helpers.GetToken(this.TokenResponse, this.SecurityServiceClient, cancellationToken);
+ if (getTokenResult.IsFailed)
+ return ResultHelpers.CreateFailure(getTokenResult);
+ this.TokenResponse = getTokenResult.Data;
Result transactionAggregateResult = await this.AggregateService.GetLatest(command.TransactionId, cancellationToken);
if (transactionAggregateResult.IsFailed)
@@ -495,7 +497,10 @@ public async Task SendCustomerEmailReceipt(TransactionCommands.SendCusto
public async Task ResendCustomerEmailReceipt(TransactionCommands.ResendCustomerEmailReceiptCommand command,
CancellationToken cancellationToken) {
- this.TokenResponse = await Helpers.GetToken(this.TokenResponse, this.SecurityServiceClient, cancellationToken);
+ Result getTokenResult = await Helpers.GetToken(this.TokenResponse, this.SecurityServiceClient, cancellationToken);
+ if (getTokenResult.IsFailed)
+ return ResultHelpers.CreateFailure(getTokenResult);
+ this.TokenResponse = getTokenResult.Data;
Result transactionAggregateResult = await this.AggregateService.GetLatest(command.TransactionId, cancellationToken);
diff --git a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj
index ba86b122..f4fbbb6d 100644
--- a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj
+++ b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj
@@ -6,7 +6,7 @@
-
+
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/TransactionProcessor.Client/TransactionProcessor.Client.csproj b/TransactionProcessor.Client/TransactionProcessor.Client.csproj
index b854fdf0..cb552d55 100644
--- a/TransactionProcessor.Client/TransactionProcessor.Client.csproj
+++ b/TransactionProcessor.Client/TransactionProcessor.Client.csproj
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/TransactionProcessor.Database/TransactionProcessor.Database.csproj b/TransactionProcessor.Database/TransactionProcessor.Database.csproj
index 2a0c3c2e..2ff3a149 100644
--- a/TransactionProcessor.Database/TransactionProcessor.Database.csproj
+++ b/TransactionProcessor.Database/TransactionProcessor.Database.csproj
@@ -20,9 +20,9 @@
-
+
-
+
diff --git a/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj b/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj
index 8816c0be..01e4cacc 100644
--- a/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj
+++ b/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj
@@ -6,6 +6,6 @@
enable
-
+
diff --git a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj
index 6bdc3eaa..d667919d 100644
--- a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj
+++ b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj
@@ -7,10 +7,10 @@
-
+
-
+
diff --git a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessorSteps.cs b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessorSteps.cs
index 924d450c..38694169 100644
--- a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessorSteps.cs
+++ b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessorSteps.cs
@@ -8,6 +8,7 @@
using TransactionProcessor.DataTransferObjects.Responses.Estate;
using TransactionProcessor.DataTransferObjects.Responses.Operator;
using TransactionProcessor.DataTransferObjects.Responses.Settlement;
+using AssignOperatorRequest = TransactionProcessor.DataTransferObjects.Requests.Estate.AssignOperatorRequest;
namespace TransactionProcessor.IntegrationTesting.Helpers;
@@ -86,9 +87,9 @@ await this.TransactionProcessorClient.GetSettlement(accessToken,
settlement.Data.SettlementFees.ShouldNotBeNull();
settlement.Data.SettlementFees.ShouldNotBeEmpty();
- var settlementFees = settlementFeeDetailsList.Where(s => s.EstateId == settlementFeeDetails.EstateId &&
- s.MerchantId == settlementFeeDetails.MerchantId &&
- s.SettlementId == settlementFeeDetails.SettlementId).ToList();
+ List settlementFees = settlementFeeDetailsList.Where(s => s.EstateId == settlementFeeDetails.EstateId &&
+ s.MerchantId == settlementFeeDetails.MerchantId &&
+ s.SettlementId == settlementFeeDetails.SettlementId).ToList();
foreach (ReqnrollExtensions.SettlementFeeDetails feeDetails in settlementFees)
{
@@ -121,10 +122,11 @@ public async Task WhenIGetTheMerchantsForThenMerchantsWillBeReturned(String acce
}
await Retry.For(async () => {
- List merchantList = await this.TransactionProcessorClient
+ Result>? getMerchantsResult = await this.TransactionProcessorClient
.GetMerchants(token, estateDetails.EstateId, CancellationToken.None)
.ConfigureAwait(false);
-
+ getMerchantsResult.IsSuccess.ShouldBeTrue();
+ List merchantList = getMerchantsResult.Data;
merchantList.ShouldNotBeNull();
merchantList.ShouldNotBeEmpty();
merchantList.Count.ShouldBe(expectedMerchantCount);
@@ -148,7 +150,7 @@ public async Task WhenIGetTheMerchantForEstateAnErrorIsReturned(String accessTok
Guid merchantId = Guid.NewGuid();
- var result = await this.TransactionProcessorClient
+ Result? result = await this.TransactionProcessorClient
.GetMerchant(token, estateDetails.EstateId, merchantId, CancellationToken.None)
.ConfigureAwait(false);
result.IsFailed.ShouldBeTrue();
@@ -160,16 +162,18 @@ public async Task WhenIPerformTheFollowingTransactions(String accessToken, List<
List<(EstateDetails, Guid, String, SerialisedMessage)> responseMessages = new List<(EstateDetails, Guid, String, SerialisedMessage)>();
foreach ((EstateDetails, Guid, String, SerialisedMessage) serialisedMessage in serialisedMessages)
{
- SerialisedMessage responseSerialisedMessage =
+ Result? performTransactionResult =
await this.TransactionProcessorClient.PerformTransaction(accessToken, serialisedMessage.Item4, CancellationToken.None);
- var message = JsonConvert.SerializeObject(responseSerialisedMessage);
+ performTransactionResult.IsSuccess.ShouldBeTrue();
+ SerialisedMessage responseSerialisedMessage = performTransactionResult.Data;
+ String message = JsonConvert.SerializeObject(responseSerialisedMessage);
serialisedMessage.Item1.AddTransactionResponse(serialisedMessage.Item2, serialisedMessage.Item3, message);
}
}
public async Task WhenISetTheMerchantsSettlementSchedule(String accessToken, List<(EstateDetails, Guid, SetSettlementScheduleRequest)> requests)
{
- foreach (var request in requests)
+ foreach ((EstateDetails, Guid, SetSettlementScheduleRequest) request in requests)
{
Should.NotThrow(async () => {
await this.TransactionProcessorClient.SetMerchantSettlementSchedule(accessToken,
@@ -197,10 +201,11 @@ await this.TransactionProcessorClient
//this.TestingContext.Logger.LogInformation($"Device {newDeviceIdentifier} assigned to Merchant {merchantName}");
await Retry.For(async () => {
- MerchantResponse? merchantResponse = await this.TransactionProcessorClient
+ Result? getMerchantResult = await this.TransactionProcessorClient
.GetMerchant(accessToken, request.Item1.EstateId, request.Item2, CancellationToken.None)
.ConfigureAwait(false);
-
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse? merchantResponse = getMerchantResult.Data;
merchantResponse.Devices.ContainsValue(request.Item4.NewDeviceIdentifier);
});
}
@@ -211,7 +216,7 @@ public async Task WhenIMakeTheFollowingMerchantDepositsTheDepositIsRejected(Stri
foreach ((EstateDetails, Guid, MakeMerchantDepositRequest) makeDepositRequest in makeDepositRequests)
{
- var result = await this.TransactionProcessorClient.MakeMerchantDeposit(accessToken, makeDepositRequest.Item1.EstateId,
+ Result? result = await this.TransactionProcessorClient.MakeMerchantDeposit(accessToken, makeDepositRequest.Item1.EstateId,
makeDepositRequest.Item2, makeDepositRequest.Item3, CancellationToken.None).ConfigureAwait(false);
result.IsFailed.ShouldBeTrue();
@@ -235,7 +240,7 @@ public async Task WhenIMakeTheFollowingMerchantWithdrawals(String accessToken, L
foreach ((EstateDetails, Guid, MakeMerchantWithdrawalRequest) makeMerchantWithdrawalRequest in requests)
{
- var result = await this.TransactionProcessorClient
+ Result? result = await this.TransactionProcessorClient
.MakeMerchantWithdrawal(accessToken,
makeMerchantWithdrawalRequest.Item1.EstateId,
makeMerchantWithdrawalRequest.Item2,
@@ -267,9 +272,11 @@ public async Task> WhenICreateTheFollowingMerchants(strin
foreach ((Guid, Guid, String) m in merchants)
{
await Retry.For(async () => {
- MerchantResponse merchant = await this.TransactionProcessorClient
+ Result? getMerchantResult = await this.TransactionProcessorClient
.GetMerchant(accessToken, m.Item1, m.Item2, CancellationToken.None)
.ConfigureAwait(false);
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchant = getMerchantResult.Data;
responses.Add(merchant);
string projectionName = "MerchantBalanceProjection";
@@ -279,14 +286,14 @@ await Retry.For(async () => {
projectionName, partitionId);
JsonElement x = (JsonElement)gg;
- MerchantBalanceResponse response = await this.TransactionProcessorClient.GetMerchantBalance(accessToken, m.Item1, m.Item2, CancellationToken.None);
-
- response.ShouldNotBeNull();
+ Result? getMerchantBalanceResult = await this.TransactionProcessorClient.GetMerchantBalance(accessToken, m.Item1, m.Item2, CancellationToken.None);
+ getMerchantBalanceResult.IsSuccess.ShouldBeTrue();
+ getMerchantBalanceResult.Data.ShouldNotBeNull();
// Force a read model database hit
- MerchantBalanceResponse response2 = await this.TransactionProcessorClient.GetMerchantBalance(accessToken, m.Item1, m.Item2, CancellationToken.None, liveBalance: false);
-
- response2.ShouldNotBeNull();
+ Result? getMerchantBalanceResult2 = await this.TransactionProcessorClient.GetMerchantBalance(accessToken, m.Item1, m.Item2, CancellationToken.None, liveBalance: false);
+ getMerchantBalanceResult2.IsSuccess.ShouldBeTrue();
+ getMerchantBalanceResult2.Data.ShouldNotBeNull();
});
}
@@ -364,7 +371,7 @@ public async Task ThenTheFollowingEntriesAppearInTheMerchantsBalanceHistoryForEs
List merchantEntries = balanceEntries.Where(b => b.EstateId == m.EstateId && b.MerchantId == m.MerchantId).ToList();
await Retry.For(async () => {
- balanceHistory =
+ Result>? balanceHistoryResult =
await this.TransactionProcessorClient.GetMerchantBalanceHistory(accessToken,
m.EstateId,
m.MerchantId,
@@ -372,6 +379,8 @@ await this.TransactionProcessorClient.GetMerchantBalanceHistory(accessToken,
endDate,
CancellationToken.None);
+ balanceHistoryResult.IsSuccess.ShouldBeTrue();
+ balanceHistory = balanceHistoryResult.Data;
balanceHistory.ShouldNotBeNull();
balanceHistory.ShouldNotBeEmpty();
balanceHistory.Count.ShouldBe(m.NumberEntries);
@@ -388,9 +397,9 @@ await this.TransactionProcessorClient.GetMerchantBalanceHistory(accessToken,
balanceEntry.ShouldNotBeNull($"EntryDateTime [{merchantEntry.DateTime.ToString("yyyy-MM-dd")}] Ref [{merchantEntry.Reference}] DebitOrCredit [{merchantEntry.EntryType}] ChangeAmount [{merchantEntry.ChangeAmount}]");
}
- },
- TimeSpan.FromMinutes(10),
- TimeSpan.FromSeconds(30));
+ },
+ TimeSpan.FromMinutes(10),
+ TimeSpan.FromSeconds(30));
}
}
@@ -421,10 +430,12 @@ public async Task GetVoucherByTransactionNumber(String acces
{
GetVoucherResponse voucher = null;
await Retry.For(async () => {
- voucher = await this.TransactionProcessorClient.GetVoucherByTransactionId(accessToken,
+ Result? getVoucherResult = await this.TransactionProcessorClient.GetVoucherByTransactionId(accessToken,
estate.EstateId,
transactionResponse.TransactionId,
CancellationToken.None);
+ getVoucherResult.IsSuccess.ShouldBeTrue();
+ voucher = getVoucherResult.Data;
voucher.ShouldNotBeNull();
});
return voucher;
@@ -441,9 +452,11 @@ public async Task RedeemVoucher(String accessToken, EstateDetails estate, GetVou
// Do the redeem
await Retry.For(async () =>
{
- RedeemVoucherResponse response = await this.TransactionProcessorClient
+ Result? redeemVoucherResult = await this.TransactionProcessorClient
.RedeemVoucher(accessToken, redeemVoucherRequest, CancellationToken.None)
.ConfigureAwait(false);
+ redeemVoucherResult.IsSuccess.ShouldBeTrue();
+ RedeemVoucherResponse response = redeemVoucherResult.Data;
response.ShouldNotBeNull();
response.RemainingBalance.ShouldBe(expectedBalance);
});
@@ -458,12 +471,14 @@ await this.TransactionProcessorClient.ProcessSettlement(accessToken,
CancellationToken.None);
await Retry.For(async () => {
- TransactionProcessor.DataTransferObjects.SettlementResponse settlement =
+ Result? getSettlementByDateResult =
await this.TransactionProcessorClient.GetSettlementByDate(accessToken,
request.SettlementDate,
request.EstateDetails.EstateId,
request.MerchantId,
CancellationToken.None);
+ getSettlementByDateResult.IsSuccess.ShouldBeTrue();
+ SettlementResponse settlement = getSettlementByDateResult.Data;
settlement.NumberOfFeesPendingSettlement.ShouldBe(0);
settlement.NumberOfFeesSettled.ShouldBe(expectedNumberFeesSettled);
@@ -477,14 +492,15 @@ public async Task WhenIGetTheCompletedSettlementsTheFollowingInformationShouldBe
foreach ((EstateDetails, Guid, DateTime, Int32) request in requests)
{
await Retry.For(async () => {
- TransactionProcessor.DataTransferObjects.SettlementResponse settlements =
- await this.TransactionProcessorClient.GetSettlementByDate(accessToken,
+ Result? getSettlementByDateResult =
+ await this.TransactionProcessorClient.GetSettlementByDate(accessToken,
request.Item3,
request.Item1.EstateId,
request.Item2,
CancellationToken.None);
-
- settlements.NumberOfFeesSettled.ShouldBe(request.Item4, $"Settlement date {request.Item3}");
+ getSettlementByDateResult.IsSuccess.ShouldBeTrue();
+ SettlementResponse settlement = getSettlementByDateResult.Data;
+ settlement.NumberOfFeesSettled.ShouldBe(request.Item4, $"Settlement date {request.Item3}");
},
TimeSpan.FromMinutes(3));
}
@@ -495,14 +511,17 @@ public async Task WhenIGetThePendingSettlementsTheFollowingInformationShouldBeRe
foreach ((EstateDetails, Guid, DateTime, Int32) request in requests)
{
await Retry.For(async () => {
- TransactionProcessor.DataTransferObjects.SettlementResponse settlements =
+ Result? getSettlementByDateResult =
await this.TransactionProcessorClient.GetSettlementByDate(accessToken,
request.Item3,
request.Item1.EstateId,
request.Item2,
CancellationToken.None);
- settlements.ShouldNotBeNull();
- settlements.NumberOfFeesPendingSettlement.ShouldBe(request.Item4, $"Settlement date {request.Item3}");
+
+ getSettlementByDateResult.IsSuccess.ShouldBeTrue();
+ SettlementResponse settlement = getSettlementByDateResult.Data;
+ settlement.ShouldNotBeNull();
+ settlement.NumberOfFeesPendingSettlement.ShouldBe(request.Item4, $"Settlement date {request.Item3}");
},
TimeSpan.FromMinutes(3));
}
@@ -524,8 +543,10 @@ public async Task> WhenICreateTheFollowingEstatesX(String a
{
EstateResponse estate = null;
await Retry.For(async () => {
- List? estates = await this.TransactionProcessorClient
+ Result>? getEstatesResult = await this.TransactionProcessorClient
.GetEstates(accessToken, createEstateRequest.EstateId, CancellationToken.None).ConfigureAwait(false);
+ getEstatesResult.IsSuccess.ShouldBeTrue();
+ List? estates = getEstatesResult.Data;
estates.ShouldNotBeNull();
estates.Count.ShouldBe(1);
estate = estates.Single();
@@ -551,10 +572,11 @@ public async Task> WhenIUpdateTheFollowingMerchants(strin
foreach ((EstateDetails estate, Guid merchantId, UpdateMerchantRequest request) request in requests)
{
await Retry.For(async () => {
- MerchantResponse merchant = await this.TransactionProcessorClient
+ Result? getMerchantResult = await this.TransactionProcessorClient
.GetMerchant(accessToken, request.estate.EstateId, request.merchantId, CancellationToken.None)
.ConfigureAwait(false);
-
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchant = getMerchantResult.Data;
merchant.MerchantName.ShouldBe(request.request.Name);
merchant.SettlementSchedule.ShouldBe(request.request.SettlementSchedule);
responses.Add(merchant);
@@ -581,13 +603,14 @@ await this.TransactionProcessorClient.AssignOperatorToMerchant(accessToken,
merchantOperators.Add((request.estate, request.merchantId, request.request.OperatorId));
}
- foreach (var m in merchantOperators)
+ foreach ((EstateDetails estate, Guid merchantId, Guid operatorId) m in merchantOperators)
{
await Retry.For(async () => {
- MerchantResponse merchant = await this.TransactionProcessorClient
+ Result? getMerchantResult = await this.TransactionProcessorClient
.GetMerchant(accessToken, m.estate.EstateId, m.merchantId, CancellationToken.None)
.ConfigureAwait(false);
-
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchant = getMerchantResult.Data;
if (merchant.Operators == null)
{
Console.WriteLine($"Merchant {merchant.MerchantName} has null operators");
@@ -626,7 +649,7 @@ await Retry.For(async () => {
Result>? operators = await this.TransactionProcessorClient
.GetOperators(accessToken, request.estate.EstateId, CancellationToken.None).ConfigureAwait(false);
operators.IsSuccess.ShouldBeTrue();
- var @operator = operators.Data.SingleOrDefault(o => o.Name == request.request.Name);
+ OperatorResponse? @operator = operators.Data.SingleOrDefault(o => o.Name == request.request.Name);
@operator.ShouldNotBeNull();
request.estate.AddOperator(@operator.OperatorId, request.request.Name);
results.Add((request.estate.EstateId,
@@ -652,13 +675,15 @@ public async Task GivenIHaveAssignedTheFollowingOperatorsToTheEstates(String acc
}
// verify at the read model
- foreach (var request in requests)
+ foreach ((EstateDetails estate, AssignOperatorRequest request) request in requests)
{
await Retry.For(async () => {
- EstateResponse e = await this.TransactionProcessorClient.GetEstate(accessToken,
+ Result? getEstateResult = await this.TransactionProcessorClient.GetEstate(accessToken,
request.estate.EstateId,
CancellationToken.None);
- EstateOperatorResponse operatorResponse = e.Operators.SingleOrDefault(o => o.OperatorId == request.request.OperatorId);
+ getEstateResult.IsSuccess.ShouldBeTrue();
+ EstateResponse e = getEstateResult.Data;
+ EstateOperatorResponse operatorResponse = e.Operators.SingleOrDefault(o => o.OperatorId == request.request.OperatorId);
operatorResponse.ShouldNotBeNull();
results.Add((request.estate.EstateId, operatorResponse));
@@ -698,11 +723,12 @@ public async Task WhenICreateTheFollowingProducts(String accessToken, List<(Esta
List<(EstateDetails, Contract, AddProductToContractRequest)> estateContractProducts = new();
foreach ((EstateDetails, Contract, AddProductToContractRequest) request in requests)
{
- var result = await this.TransactionProcessorClient.AddProductToContract(accessToken,
+ Result? result = await this.TransactionProcessorClient.AddProductToContract(accessToken,
request.Item1.EstateId,
request.Item2.ContractId,
request.Item3,
CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
estateContractProducts.Add((request.Item1, request.Item2, request.Item3));
}
@@ -710,7 +736,9 @@ public async Task WhenICreateTheFollowingProducts(String accessToken, List<(Esta
{
await Retry.For(async () => {
- ContractResponse contract = await this.TransactionProcessorClient.GetContract(accessToken, estateContractProduct.Item1.EstateId, estateContractProduct.Item2.ContractId, CancellationToken.None).ConfigureAwait(false);
+ Result? getContractResult = await this.TransactionProcessorClient.GetContract(accessToken, estateContractProduct.Item1.EstateId, estateContractProduct.Item2.ContractId, CancellationToken.None).ConfigureAwait(false);
+ getContractResult.IsSuccess.ShouldBeTrue();
+ ContractResponse contract = getContractResult.Data;
contract.ShouldNotBeNull();
ContractProduct product = contract.Products.SingleOrDefault(c => c.Name == estateContractProduct.Item3.ProductName);
@@ -729,24 +757,26 @@ public async Task WhenIAddTheFollowingTransactionFees(String accessToken, List<(
List<(EstateDetails, Contract, Product, AddTransactionFeeForProductToContractRequest)> estateContractProductsFees = new();
foreach ((EstateDetails, Contract, Product, AddTransactionFeeForProductToContractRequest) request in requests)
{
- var result = await this.TransactionProcessorClient.AddTransactionFeeForProductToContract(accessToken,
+ Result? result = await this.TransactionProcessorClient.AddTransactionFeeForProductToContract(accessToken,
request.Item1.EstateId,
request.Item2.ContractId,
request.Item3.ProductId,
request.Item4,
CancellationToken.None);
+ result.IsSuccess.ShouldBeTrue();
}
foreach ((EstateDetails, Contract, Product, AddTransactionFeeForProductToContractRequest) estateContractProductsFee in estateContractProductsFees)
{
await Retry.For(async () => {
- ContractResponse contract = await this.TransactionProcessorClient.GetContract(accessToken, estateContractProductsFee.Item1.EstateId, estateContractProductsFee.Item2.ContractId, CancellationToken.None).ConfigureAwait(false);
+ Result? getContractResult = await this.TransactionProcessorClient.GetContract(accessToken, estateContractProductsFee.Item1.EstateId, estateContractProductsFee.Item2.ContractId, CancellationToken.None).ConfigureAwait(false);
+ ContractResponse contract = getContractResult.Data;
contract.ShouldNotBeNull();
ContractProduct product = contract.Products.SingleOrDefault(c => c.ProductId == estateContractProductsFee.Item3.ProductId);
product.ShouldNotBeNull();
- var transactionFee = product.TransactionFees.SingleOrDefault(f => f.Description == estateContractProductsFee.Item4.Description);
+ ContractProductTransactionFee? transactionFee = product.TransactionFees.SingleOrDefault(f => f.Description == estateContractProductsFee.Item4.Description);
transactionFee.ShouldNotBeNull();
estateContractProductsFee.Item3.AddTransactionFee(transactionFee.TransactionFeeId,
@@ -755,13 +785,16 @@ await Retry.For(async () => {
estateContractProductsFee.Item4.Description,
estateContractProductsFee.Item4.Value);
- List? fees = await this.TransactionProcessorClient.GetTransactionFeesForProduct(accessToken,
+ Result>? feesResult = await this.TransactionProcessorClient.GetTransactionFeesForProduct(accessToken,
estateContractProductsFee.Item1.EstateId,
estateContractProductsFee.Item1.GetMerchants().First().MerchantId,
contract.ContractId,
product.ProductId,
CancellationToken.None);
- var fee = fees.SingleOrDefault(f => f.TransactionFeeId == transactionFee.TransactionFeeId);
+ feesResult.IsSuccess.ShouldBeTrue();
+ List? fees = feesResult.Data;
+
+ ContractProductTransactionFee? fee = fees.SingleOrDefault(f => f.TransactionFeeId == transactionFee.TransactionFeeId);
fee.ShouldNotBeNull();
});
}
@@ -776,13 +809,15 @@ await Retry.For(async () => {
await this.TransactionProcessorClient.AddDeviceToMerchant(accessToken, request.Item1.EstateId, request.Item2, request.Item3, CancellationToken.None).ConfigureAwait(false);
}
- foreach (var m in merchantDevices)
+ foreach ((EstateDetails estate, Guid merchantId, Guid deviceId) m in merchantDevices)
{
await Retry.For(async () => {
- MerchantResponse merchant = await this.TransactionProcessorClient
+ Result? getMerchantResult = await this.TransactionProcessorClient
.GetMerchant(accessToken, m.estate.EstateId, m.merchantId, CancellationToken.None)
.ConfigureAwait(false);
- var device = merchant.Devices.SingleOrDefault(o => o.Key == m.deviceId);
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchant = getMerchantResult.Data;
+ KeyValuePair device = merchant.Devices.SingleOrDefault(o => o.Key == m.deviceId);
device.Value.ShouldNotBeNull();
result.Add((m.estate, merchant, device.Value));
});
@@ -805,7 +840,7 @@ public async Task WhenIAddTheFollowingContractsToTheFollowingMerchants(String ac
public async Task GivenIMakeTheFollowingManualMerchantDeposits(String accessToken, (EstateDetails, Guid, MakeMerchantDepositRequest) request)
{
- var result = await this.TransactionProcessorClient.MakeMerchantDeposit(accessToken, request.Item1.EstateId, request.Item2, request.Item3, CancellationToken.None).ConfigureAwait(false);
+ Result? result = await this.TransactionProcessorClient.MakeMerchantDeposit(accessToken, request.Item1.EstateId, request.Item2, request.Item3, CancellationToken.None).ConfigureAwait(false);
result.IsSuccess.ShouldBeTrue();
}
@@ -813,7 +848,7 @@ public async Task WhenICreateTheFollowingSecurityUsers(String accessToken, List<
{
foreach (CreateNewUserRequest createNewUserRequest in requests)
{
- var estateDetails = estateDetailsList.SingleOrDefault(e => e.EstateId == createNewUserRequest.EstateId.GetValueOrDefault());
+ EstateDetails? estateDetails = estateDetailsList.SingleOrDefault(e => e.EstateId == createNewUserRequest.EstateId.GetValueOrDefault());
estateDetails.ShouldNotBeNull();
@@ -879,7 +914,9 @@ public async Task WhenIGetTheEstateTheEstateDetailsAreReturnedAsFollows(String a
}
}
- EstateResponse estate = await this.TransactionProcessorClient.GetEstate(token, estateId, CancellationToken.None).ConfigureAwait(false);
+ Result? getEstateResult = await this.TransactionProcessorClient.GetEstate(token, estateId, CancellationToken.None).ConfigureAwait(false);
+ getEstateResult.IsSuccess.ShouldBeTrue();
+ EstateResponse estate = getEstateResult.Data;
estate.EstateName.ShouldBe(expectedEstateDetails.Single());
}
@@ -890,8 +927,9 @@ public async Task WhenIGetAllTheOperatorsTheFollowingDetailsAreReturned(String a
foreach (Guid estateId in distinctEstates)
{
await Retry.For(async () => {
- List? operatorList = await this.TransactionProcessorClient.GetOperators(accessToken, estateId, CancellationToken.None);
-
+ Result>? getOperatorsResult = await this.TransactionProcessorClient.GetOperators(accessToken, estateId, CancellationToken.None);
+ getOperatorsResult.IsSuccess.ShouldBeTrue();
+ List? operatorList = getOperatorsResult.Data;
foreach (OperatorResponse operatorResponse in operatorList)
{
OperatorResponse? expectedOperator = expectedOperatorResponses.SingleOrDefault(s => s.Item3.OperatorId == operatorResponse.OperatorId).Item3;
@@ -922,7 +960,7 @@ public async Task WhenIGetTheEstateTheEstateOperatorDetailsAreReturnedAsFollows(
Result>? getEstatesResult = await this.TransactionProcessorClient.GetEstates(token, estateId, CancellationToken.None).ConfigureAwait(false);
getEstatesResult.IsSuccess.ShouldBeTrue();
getEstatesResult.Data.ShouldNotBeEmpty();
- var estate = getEstatesResult.Data.Single();
+ EstateResponse estate = getEstatesResult.Data.Single();
foreach (String expectedOperator in expectedOperators)
{
EstateOperatorResponse? op = estate.Operators.SingleOrDefault(o => o.Name == expectedOperator);
@@ -946,11 +984,13 @@ public async Task WhenIGetTheEstateTheEstateSecurityUserDetailsAreReturnedAsFoll
}
}
- EstateResponse? estate = await this.TransactionProcessorClient.GetEstate(token, estateId, CancellationToken.None).ConfigureAwait(false);
+ Result? getEstateResult = await this.TransactionProcessorClient.GetEstate(token, estateId, CancellationToken.None).ConfigureAwait(false);
+ getEstateResult.IsSuccess.ShouldBeTrue();
+ EstateResponse? estate = getEstateResult.Data;
estate.ShouldNotBeNull();
foreach (String expectedSecurityUser in expectedSecurityUsers)
{
- var user = estate.SecurityUsers.SingleOrDefault(o => o.EmailAddress == expectedSecurityUser);
+ SecurityUserResponse? user = estate.SecurityUsers.SingleOrDefault(o => o.EmailAddress == expectedSecurityUser);
user.ShouldNotBeNull();
}
}
@@ -958,7 +998,7 @@ public async Task WhenIGetTheEstateTheEstateSecurityUserDetailsAreReturnedAsFoll
public async Task WhenIGetTheEstateAnErrorIsReturned(String accessToken, String estateName, List estateDetailsList)
{
Guid estateId = Guid.NewGuid();
- var result = await this.TransactionProcessorClient.GetEstate(accessToken, estateId, CancellationToken.None).ConfigureAwait(false);
+ Result? result = await this.TransactionProcessorClient.GetEstate(accessToken, estateId, CancellationToken.None).ConfigureAwait(false);
result.IsSuccess.ShouldBeFalse();
result.Status.ShouldBe(ResultStatus.NotFound);
}
@@ -972,7 +1012,9 @@ public async Task WhenIRemoveTheOperatorFromEstateTheOperatorIsRemoved(String ac
await this.TransactionProcessorClient.RemoveOperatorFromEstate(accessToken, estateDetails.EstateId, operatorId, CancellationToken.None);
await Retry.For(async () => {
- EstateResponse? estateResponse = await this.TransactionProcessorClient.GetEstate(accessToken, estateDetails.EstateId, CancellationToken.None);
+ Result? getEstateResult = await this.TransactionProcessorClient.GetEstate(accessToken, estateDetails.EstateId, CancellationToken.None);
+ getEstateResult.IsSuccess.ShouldBeTrue();
+ EstateResponse? estateResponse = getEstateResult.Data;
estateResponse.ShouldNotBeNull();
EstateOperatorResponse? operatorResponse = estateResponse.Operators.SingleOrDefault(c => c.OperatorId == operatorId);
@@ -993,10 +1035,12 @@ public async Task> WhenIUpdateTheOperatorsWithTheFollowin
foreach ((EstateDetails estate, Guid operatorId, UpdateOperatorRequest request) request in requests)
{
await Retry.For(async () => {
- OperatorResponse? operatorResponse = await this.TransactionProcessorClient
+ Result? getOperatorResult = await this.TransactionProcessorClient
.GetOperator(accessToken, request.estate.EstateId, request.operatorId, CancellationToken.None)
.ConfigureAwait(false);
+ getOperatorResult.IsSuccess.ShouldBeTrue();
+ OperatorResponse? operatorResponse = getOperatorResult.Data;
operatorResponse.Name.ShouldBe(request.request.Name);
operatorResponse.RequireCustomTerminalNumber.ShouldBe(request.request.RequireCustomTerminalNumber.Value);
operatorResponse.RequireCustomMerchantNumber.ShouldBe(request.request.RequireCustomMerchantNumber.Value);
@@ -1026,9 +1070,10 @@ public async Task ThenIGetTheContractsForTheFollowingContractDetailsAreReturned(
}
await Retry.For(async () => {
- List contracts =
+ Result>? getContractsResult =
await this.TransactionProcessorClient.GetContracts(token, estateDetails.EstateId, CancellationToken.None);
-
+ getContractsResult.IsSuccess.ShouldBeTrue();
+ List? contracts = getContractsResult.Data;
contracts.ShouldNotBeNull();
contracts.ShouldHaveSingleItem();
ContractResponse contract = contracts.Single();
@@ -1060,14 +1105,16 @@ public async Task ThenIGetTheMerchantContractsForForTheFollowingContractDetailsA
Guid merchantId = estateDetails.GetMerchant(merchantName).MerchantId;
await Retry.For(async () => {
- List contracts =
+ Result>? getContractsResult =
await this.TransactionProcessorClient.GetMerchantContracts(token, estateDetails.EstateId, merchantId, CancellationToken.None);
-
+ getContractsResult.IsSuccess.ShouldBeTrue();
+
+ List contracts = getContractsResult.Data;
contracts.ShouldNotBeNull();
contracts.ShouldHaveSingleItem();
ContractResponse contractResponse = contracts.Single();
- foreach (var contract in contractDetails)
+ foreach ((String, String) contract in contractDetails)
{
contractResponse.Description.ShouldBe(contract.Item1);
contractResponse.Products.Any(p => p.Name == contract.Item2).ShouldBeTrue();
@@ -1096,17 +1143,21 @@ public async Task ThenIGetTheTransactionFeesForOnTheContractForTheFollowingFeesA
Product product = contract.GetProduct(productName);
await Retry.For(async () => {
- List transactionFeesResults =
+ Result>? transactionFeesResult =
await this.TransactionProcessorClient.GetTransactionFeesForProduct(token,
estateDetails.EstateId,
Guid.Empty,
contract.ContractId,
product.ProductId,
CancellationToken.None);
+
+ transactionFeesResult.IsSuccess.ShouldBeTrue();
+ List transactionFeesList = transactionFeesResult.Data;
+
foreach ((CalculationType, String, Decimal?, FeeType) transactionFee in transactionFees)
{
- Boolean feeFound = transactionFeesResults.Any(f => f.CalculationType == transactionFee.Item1 && f.Description == transactionFee.Item2 &&
- f.Value == transactionFee.Item3 && f.FeeType == transactionFee.Item4);
+ Boolean feeFound = transactionFeesList.Any(f => f.CalculationType == transactionFee.Item1 && f.Description == transactionFee.Item2 &&
+ f.Value == transactionFee.Item3 && f.FeeType == transactionFee.Item4);
feeFound.ShouldBeTrue();
}
@@ -1115,9 +1166,9 @@ await this.TransactionProcessorClient.GetTransactionFeesForProduct(token,
public async Task WhenICreateAnotherContractWithTheSameValuesItShouldBeRejected(string accessToken, List<(EstateDetails, CreateContractRequest)> requests)
{
- var createContractRequest = requests.Single();
+ (EstateDetails, CreateContractRequest) createContractRequest = requests.Single();
- var result = await this.TransactionProcessorClient.CreateContract(accessToken, createContractRequest.Item1.EstateId,
+ Result? result = await this.TransactionProcessorClient.CreateContract(accessToken, createContractRequest.Item1.EstateId,
createContractRequest.Item2, CancellationToken.None);
result.IsFailed.ShouldBeTrue();
@@ -1135,7 +1186,8 @@ public async Task WhenIUpdateTheMerchantsAddressWithTheFollowingDetails(String a
foreach ((EstateDetails, MerchantResponse, Guid, Address) addressVerify in addressUpdatesList)
{
await Retry.For(async () => {
- MerchantResponse? merchant = await this.TransactionProcessorClient.GetMerchant(accessToken, addressVerify.Item1.EstateId, addressVerify.Item2.MerchantId, CancellationToken.None);
+ Result? getMerchantResult = await this.TransactionProcessorClient.GetMerchant(accessToken, addressVerify.Item1.EstateId, addressVerify.Item2.MerchantId, CancellationToken.None);
+ MerchantResponse? merchant = getMerchantResult.Data;
merchant.ShouldNotBeNull();
AddressResponse? address = merchant.Addresses.First();
@@ -1161,7 +1213,9 @@ public async Task WhenIUpdateTheMerchantsContactWithTheFollowingDetails(String a
foreach ((EstateDetails, MerchantResponse, Guid, Contact) contactVerify in contactUpdatesList)
{
await Retry.For(async () => {
- MerchantResponse? merchant = await this.TransactionProcessorClient.GetMerchant(accessToken, contactVerify.Item1.EstateId, contactVerify.Item2.MerchantId, CancellationToken.None);
+ var getMerchantResult = await this.TransactionProcessorClient.GetMerchant(accessToken, contactVerify.Item1.EstateId, contactVerify.Item2.MerchantId, CancellationToken.None);
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse? merchant = getMerchantResult.Data;
merchant.ShouldNotBeNull();
ContactResponse? contact = merchant.Contacts.First();
@@ -1186,7 +1240,9 @@ public async Task WhenIRemoveTheContractFromMerchantOnTheContractIsRemoved(Strin
await this.TransactionProcessorClient.RemoveContractFromMerchant(accessToken, estateDetails.EstateId, merchant.MerchantId, estateContract.ContractId, CancellationToken.None);
await Retry.For(async () => {
- MerchantResponse? merchantResponse = await this.TransactionProcessorClient.GetMerchant(accessToken, estateDetails.EstateId, merchant.MerchantId, CancellationToken.None);
+ Result? getMerchantResult = await this.TransactionProcessorClient.GetMerchant(accessToken, estateDetails.EstateId, merchant.MerchantId, CancellationToken.None);
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse? merchantResponse = getMerchantResult.Data;
merchantResponse.ShouldNotBeNull();
MerchantContractResponse? contractResponse = merchantResponse.Contracts.SingleOrDefault(c => c.ContractId == estateContract.ContractId);
@@ -1205,7 +1261,9 @@ public async Task WhenIRemoveTheOperatorFromMerchantOnTheOperatorIsRemoved(Strin
await this.TransactionProcessorClient.RemoveOperatorFromMerchant(accessToken, estateDetails.EstateId, merchant.MerchantId, operatorId, CancellationToken.None);
await Retry.For(async () => {
- MerchantResponse? merchantResponse = await this.TransactionProcessorClient.GetMerchant(accessToken, estateDetails.EstateId, merchant.MerchantId, CancellationToken.None);
+ var getMerchantResult = await this.TransactionProcessorClient.GetMerchant(accessToken, estateDetails.EstateId, merchant.MerchantId, CancellationToken.None);
+ getMerchantResult.IsSuccess.ShouldBeTrue();
+ MerchantResponse? merchantResponse = getMerchantResult.Data;
merchantResponse.ShouldNotBeNull();
MerchantOperatorResponse? operatorResponse = merchantResponse.Operators.SingleOrDefault(c => c.OperatorId == operatorId);
diff --git a/TransactionProcessor.IntegrationTests/Common/TestingContext.cs b/TransactionProcessor.IntegrationTests/Common/TestingContext.cs
index 75c1163c..00f488f6 100644
--- a/TransactionProcessor.IntegrationTests/Common/TestingContext.cs
+++ b/TransactionProcessor.IntegrationTests/Common/TestingContext.cs
@@ -204,12 +204,14 @@ public async Task GetVoucherByTransactionNumber(String estat
GetVoucherResponse voucher = null;
await Retry.For(async () => {
- voucher = await this.DockerHelper.TransactionProcessorClient.GetVoucherByTransactionId(this.AccessToken,
+ var getVoucherByTransactionIdResult = await this.DockerHelper.TransactionProcessorClient.GetVoucherByTransactionId(this.AccessToken,
estate.EstateId,
transactionResponse.TransactionId,
CancellationToken.None);
+ getVoucherByTransactionIdResult.IsSuccess.ShouldBeTrue();
+ voucher = getVoucherByTransactionIdResult.Data;
- });
+ });
return voucher;
}
}
diff --git a/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs b/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs
index e330ca8d..8d654026 100644
--- a/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs
+++ b/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
+using SecurityService.DataTransferObjects.Responses;
+using SimpleResults;
using TransactionProcessor.DataTransferObjects.Requests.Contract;
using TransactionProcessor.DataTransferObjects.Requests.Merchant;
using TransactionProcessor.DataTransferObjects.Requests.Operator;
@@ -424,7 +426,11 @@ public async Task GivenIHaveATokenToAccessTheEstateManagementResource(DataTable
String clientId = ReqnrollTableHelper.GetStringRowValue(firstRow, "ClientId");
ClientDetails clientDetails = this.TestingContext.GetClientDetails(clientId);
- this.TestingContext.AccessToken = await this.SecurityServiceSteps.GetClientToken(clientDetails.ClientId, clientDetails.ClientSecret, CancellationToken.None);
+ //this.TestingContext.AccessToken = await this.SecurityServiceSteps.GetClientToken(clientDetails.ClientId, clientDetails.ClientSecret, CancellationToken.None);
+ var token = await this.TestingContext.DockerHelper.SecurityServiceClient.GetToken(clientDetails.ClientId, clientDetails.ClientSecret, CancellationToken.None);
+ token.IsSuccess.ShouldBeTrue();
+ this.TestingContext.AccessToken = token.Data.AccessToken;
+
}
[When(@"I create the following security users")]
@@ -476,10 +482,13 @@ public async Task GivenIAmLoggedInAsWithPasswordForEstate(String username,
EstateDetails estateDetails = this.TestingContext.GetEstateDetails(estateName);
ClientDetails clientDetails = this.TestingContext.GetClientDetails(clientId);
- String tokenResponse = await this.SecurityServiceSteps
- .GetPasswordToken(clientId, clientDetails.ClientSecret, username, password, CancellationToken.None).ConfigureAwait(false);
-
- estateDetails.SetEstateUserToken(tokenResponse);
+ //String tokenResponse = await this.SecurityServiceSteps
+ // .GetPasswordToken(clientId, clientDetails.ClientSecret, username, password, CancellationToken.None).ConfigureAwait(false);
+ Result token = await this.TestingContext.DockerHelper.SecurityServiceClient.GetToken(username, password, clientId, clientDetails.ClientSecret,
+ CancellationToken.None);
+ token.IsSuccess.ShouldBeTrue();
+ this.TestingContext.AccessToken = token.Data.AccessToken;
+ estateDetails.SetEstateUserToken(token.Data.AccessToken);
}
[When("I remove the operator {string} from estate {string} the operator is removed")]
diff --git a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj
index 7179f21e..a8ff1b62 100644
--- a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj
+++ b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj
@@ -7,7 +7,7 @@
-
+
@@ -17,7 +17,7 @@
-
+
diff --git a/TransactionProcessor.ProjectionEngine.Tests/ProjectionHandlerTests.cs b/TransactionProcessor.ProjectionEngine.Tests/ProjectionHandlerTests.cs
index 76c0b89f..3971f62c 100644
--- a/TransactionProcessor.ProjectionEngine.Tests/ProjectionHandlerTests.cs
+++ b/TransactionProcessor.ProjectionEngine.Tests/ProjectionHandlerTests.cs
@@ -61,7 +61,7 @@ public async Task ProjectionHandler_Handle_StateNotFoundInRepository_EventHandle
projection.Setup(p => p.ShouldIHandleEvent(It.IsAny())).Returns(true);
projection.Setup(p =>
p.Handle(It.IsAny(), It.IsAny(), It.IsAny()))
- .ReturnsAsync(Result.Success(state));
+ .ReturnsAsync(state);
repo.Setup(r => r.Load(It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(state));
var result = await ph.Handle(TestData.MerchantCreatedEvent, CancellationToken.None);
result.IsSuccess.ShouldBeTrue();
@@ -99,7 +99,7 @@ public async Task ProjectionHandler_Handle_StateFoundInRepository_ChangesMade_Ev
MerchantBalanceState newState = new MerchantBalanceState();
newState = newState.HandleMerchantCreated(TestData.MerchantCreatedEvent);
projection.Setup(p => p.ShouldIHandleEvent(It.IsAny())).Returns(true);
- projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(newState));
+ projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(newState);
repo.Setup(r => r.Load(It.IsAny(), It.IsAny())).ReturnsAsync(state);
repo.Setup(r => r.Save(It.IsAny(),It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(state));
@@ -121,7 +121,7 @@ public async Task ProjectionHandler_Handle_LoadFails_FailedResult()
MerchantBalanceState newState = new MerchantBalanceState();
newState = newState.HandleMerchantCreated(TestData.MerchantCreatedEvent);
projection.Setup(p => p.ShouldIHandleEvent(It.IsAny())).Returns(true);
- projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(newState));
+ projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(newState);
repo.Setup(r => r.Load(It.IsAny(), It.IsAny())).ReturnsAsync(Result.Failure());
//repo.Setup(r => r.Save(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(state));
@@ -143,7 +143,7 @@ public async Task ProjectionHandler_Handle_SaveFails_FailedResult()
MerchantBalanceState newState = new MerchantBalanceState();
newState = newState.HandleMerchantCreated(TestData.MerchantCreatedEvent);
projection.Setup(p => p.ShouldIHandleEvent(It.IsAny())).Returns(true);
- projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(newState));
+ projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(newState);
repo.Setup(r => r.Load(It.IsAny(), It.IsAny())).ReturnsAsync(state);
repo.Setup(r => r.Save(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Failure());
@@ -165,7 +165,7 @@ public async Task ProjectionHandler_Handle_DispatchFails_FailedResult()
MerchantBalanceState newState = new MerchantBalanceState();
newState = newState.HandleMerchantCreated(TestData.MerchantCreatedEvent);
projection.Setup(p => p.ShouldIHandleEvent(It.IsAny())).Returns(true);
- projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(newState));
+ projection.Setup(p => p.Handle(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(newState);
repo.Setup(r => r.Load(It.IsAny(), It.IsAny())).ReturnsAsync(state);
repo.Setup(r => r.Save(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(state));
diff --git a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj
index aef62ae9..8c951d09 100644
--- a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj
+++ b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs b/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs
index 7971355a..8dd961e4 100644
--- a/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs
+++ b/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs
@@ -1177,7 +1177,10 @@ public async Task DisableContractProductTransactionFee(ContractDomainEve
CancellationToken cancellationToken) {
EstateManagementGenericContext context = await this.GetContextFromDomainEvent(domainEvent, cancellationToken);
- ContractProductTransactionFee transactionFee = await context.LoadContractProductTransactionFee(domainEvent, cancellationToken);
+ Result loadContractProductTransactionFeeResult = await context.LoadContractProductTransactionFee(domainEvent, cancellationToken);
+ // TODO: Check the result value
+
+ ContractProductTransactionFee transactionFee = loadContractProductTransactionFeeResult.Data;
transactionFee.IsEnabled = false;
diff --git a/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj b/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj
index cfe63118..e895454a 100644
--- a/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj
+++ b/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj
@@ -15,8 +15,8 @@
-
-
+
+
diff --git a/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj b/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj
index 67faa2ad..b76a945f 100644
--- a/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj
+++ b/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs b/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs
index 1385e2e6..c3fb6adc 100644
--- a/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs
+++ b/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs
@@ -11,6 +11,7 @@
using TransactionProcessor.Models.Estate;
using TransactionProcessor.Models.Merchant;
using Contract = TransactionProcessor.Models.Contract.Contract;
+using ContractProductTransactionFee = TransactionProcessor.DataTransferObjects.Responses.Contract.ContractProductTransactionFee;
using ProductType = TransactionProcessor.DataTransferObjects.Responses.Contract.ProductType;
namespace TransactionProcessor.Tests.Factories
@@ -31,8 +32,9 @@ public void ModelFactory_Contract_ContractOnly_IsConverted()
{
Contract contractModel = TestData.ContractModel;
- ContractResponse contractResponse = ModelFactory.ConvertFrom(contractModel);
-
+ Result result= ModelFactory.ConvertFrom(contractModel);
+ result.IsSuccess.ShouldBeTrue();
+ ContractResponse contractResponse= result.Data;
contractResponse.ShouldNotBeNull();
contractResponse.OperatorId.ShouldBe(contractModel.OperatorId);
contractResponse.OperatorName.ShouldBe(contractModel.OperatorName);
@@ -46,8 +48,9 @@ public void ModelFactory_Contract_ContractWithProducts_IsConverted()
{
Contract contractModel = TestData.ContractModelWithProducts;
- ContractResponse contractResponse = ModelFactory.ConvertFrom(contractModel);
-
+ Result result = ModelFactory.ConvertFrom(contractModel);
+ result.IsSuccess.ShouldBeTrue();
+ ContractResponse contractResponse = result.Data;
contractResponse.ShouldNotBeNull();
contractResponse.OperatorId.ShouldBe(contractModel.OperatorId);
contractResponse.ContractId.ShouldBe(contractModel.ContractId);
@@ -94,8 +97,9 @@ public void ModelFactory_MerchantList_IsConverted()
TestData.MerchantModelWithAddressesContactsDevicesAndOperatorsAndContracts()
};
- List merchantResponseList = ModelFactory.ConvertFrom(merchantModelList);
-
+ Result> merchantResponseListResult = ModelFactory.ConvertFrom(merchantModelList);
+ merchantResponseListResult.IsSuccess.ShouldBeTrue();
+ List merchantResponseList = merchantResponseListResult.Data;
merchantResponseList.ShouldNotBeNull();
merchantResponseList.ShouldNotBeEmpty();
merchantResponseList.Count.ShouldBe(merchantModelList.Count);
@@ -105,8 +109,9 @@ public void ModelFactory_MerchantList_IsConverted()
public void ModelFactory_MerchantList_NullList_IsConverted() {
List merchantModelList = null;
- List merchantResponseList = ModelFactory.ConvertFrom(merchantModelList);
-
+ Result> merchantResponseListResult = ModelFactory.ConvertFrom(merchantModelList);
+ merchantResponseListResult.IsSuccess.ShouldBeTrue();
+ List merchantResponseList = merchantResponseListResult.Data;
merchantResponseList.ShouldNotBeNull();
merchantResponseList.ShouldBeEmpty();
}
@@ -118,7 +123,7 @@ public void ModelFactory_MerchantList_NullModelInList_IsConverted()
null
};
- var result = ModelFactory.ConvertFrom(merchantModelList);
+ Result> result = ModelFactory.ConvertFrom(merchantModelList);
result.IsFailed.ShouldBeTrue();
}
@@ -127,7 +132,9 @@ public void ModelFactory_Contract_ContractWithProductsAndFees_IsConverted()
{
Contract contractModel = TestData.ContractModelWithProductsAndTransactionFees;
- ContractResponse contractResponse = ModelFactory.ConvertFrom(contractModel);
+ Result result = ModelFactory.ConvertFrom(contractModel);
+ result.IsSuccess.ShouldBeTrue();
+ ContractResponse contractResponse = result.Data;
contractResponse.ShouldNotBeNull();
contractResponse.OperatorId.ShouldBe(contractModel.OperatorId);
@@ -189,8 +196,9 @@ public void ModelFactory_ProcessLogonTransactionResponseModel_IsConverted()
{
ProcessLogonTransactionResponse processLogonTransactionResponseModel = TestData.ProcessLogonTransactionResponseModel;
- SerialisedMessage logonTransactionResponse = ModelFactory.ConvertFrom(processLogonTransactionResponseModel);
-
+ Result logonTransactionResult = ModelFactory.ConvertFrom(processLogonTransactionResponseModel);
+ logonTransactionResult.IsSuccess.ShouldBeTrue();
+ SerialisedMessage logonTransactionResponse = logonTransactionResult.Data;
logonTransactionResponse.ShouldNotBeNull();
logonTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameEstateId);
logonTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameMerchantId);
@@ -205,9 +213,9 @@ public void ModelFactory_ProcessLogonTransactionResponseModel_NullInput_IsConver
{
ProcessLogonTransactionResponse processLogonTransactionResponseModel = null;
- SerialisedMessage logonTransactionResponse = ModelFactory.ConvertFrom(processLogonTransactionResponseModel);
-
- logonTransactionResponse.ShouldBeNull();
+ Result logonTransactionResult = ModelFactory.ConvertFrom(processLogonTransactionResponseModel);
+ logonTransactionResult.IsFailed.ShouldBeTrue();
+ logonTransactionResult.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
@@ -215,7 +223,9 @@ public void ModelFactory_ProcessSaleTransactionResponseModel_IsConverted()
{
ProcessSaleTransactionResponse processSaleTransactionResponseModel = TestData.ProcessSaleTransactionResponseModel;
- SerialisedMessage saleTransactionResponse = ModelFactory.ConvertFrom(processSaleTransactionResponseModel);
+ Result saleTransactionResult = ModelFactory.ConvertFrom(processSaleTransactionResponseModel);
+ saleTransactionResult.IsSuccess.ShouldBeTrue();
+ SerialisedMessage saleTransactionResponse = saleTransactionResult.Data;
saleTransactionResponse.ShouldNotBeNull();
saleTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameEstateId);
@@ -231,9 +241,9 @@ public void ModelFactory_ProcessSaleTransactionResponseModel_NullInput_IsConvert
{
ProcessSaleTransactionResponse processSaleTransactionResponseModel = null;
- SerialisedMessage saleTransactionResponse = ModelFactory.ConvertFrom(processSaleTransactionResponseModel);
-
- saleTransactionResponse.ShouldBeNull();
+ Result saleTransactionResult = ModelFactory.ConvertFrom(processSaleTransactionResponseModel);
+ saleTransactionResult.IsFailed.ShouldBeTrue();
+ saleTransactionResult.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
@@ -241,7 +251,9 @@ public void ModelFactory_ProcessReconciliationTransactionResponse_IsConverted()
{
ProcessReconciliationTransactionResponse processReconciliationTransactionResponseModel = TestData.ProcessReconciliationTransactionResponseModel;
- SerialisedMessage processReconciliationTransactionResponse = ModelFactory.ConvertFrom(processReconciliationTransactionResponseModel);
+ Result reconciliationTransactionResult = ModelFactory.ConvertFrom(processReconciliationTransactionResponseModel);
+ reconciliationTransactionResult.IsSuccess.ShouldBeTrue();
+ SerialisedMessage processReconciliationTransactionResponse = reconciliationTransactionResult.Data;
processReconciliationTransactionResponse.ShouldNotBeNull();
processReconciliationTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameEstateId);
@@ -256,10 +268,10 @@ public void ModelFactory_ProcessReconciliationTransactionResponse_IsConverted()
public void ModelFactory_ProcessReconciliationTransactionResponse_NullInput_IsConverted()
{
ProcessReconciliationTransactionResponse processReconciliationTransactionResponseModel = null;
-
- SerialisedMessage processReconciliationTransactionResponse = ModelFactory.ConvertFrom(processReconciliationTransactionResponseModel);
- processReconciliationTransactionResponse.ShouldBeNull();
+ Result reconciliationTransactionResult = ModelFactory.ConvertFrom(processReconciliationTransactionResponseModel);
+ reconciliationTransactionResult.IsFailed.ShouldBeTrue();
+ reconciliationTransactionResult.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
@@ -289,7 +301,9 @@ public void ModelFactory_ConvertFrom_VoucherModel_IsConverted()
{
Voucher model = TestData.GetVoucherAggregateWithRecipientMobile().GetVoucher();
- GetVoucherResponse dto = ModelFactory.ConvertFrom(model);
+ Result result = ModelFactory.ConvertFrom(model);
+ result.IsSuccess.ShouldBeTrue();
+ GetVoucherResponse dto =result.Data;
dto.ShouldNotBeNull();
dto.TransactionId.ShouldBe(model.TransactionId);
dto.IssuedDateTime.ShouldBe(model.IssuedDateTime);
@@ -310,17 +324,19 @@ public void ModelFactory_ConvertFrom_VoucherModel_IsConverted()
public void ModelFactory_ConvertFrom_VoucherModel_NullInput_IsConverted()
{
Voucher model = null;
- GetVoucherResponse dto = ModelFactory.ConvertFrom(model);
+ Result result = ModelFactory.ConvertFrom(model);
- dto.ShouldBeNull();
+ result.IsFailed.ShouldBeTrue();
+ result.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
public void ModelFactory_ConvertFrom_RedeemVoucherResponse_IsConverted()
{
RedeemVoucherResponse model = TestData.RedeemVoucherResponse;
- DataTransferObjects.RedeemVoucherResponse dto = ModelFactory.ConvertFrom(model);
-
+ Result result = ModelFactory.ConvertFrom(model);
+ result.IsSuccess.ShouldBeTrue();
+ DataTransferObjects.RedeemVoucherResponse dto = result.Data;
dto.ShouldNotBeNull();
dto.ExpiryDate.ShouldBe(model.ExpiryDate);
dto.VoucherCode.ShouldBe(model.VoucherCode);
@@ -331,16 +347,17 @@ public void ModelFactory_ConvertFrom_RedeemVoucherResponse_IsConverted()
public void ModelFactory_ConvertFrom_RedeemVoucherResponse_NullInput_IsConverted()
{
RedeemVoucherResponse model = null;
- DataTransferObjects.RedeemVoucherResponse dto = ModelFactory.ConvertFrom(model);
-
- dto.ShouldBeNull();
+ Result result = ModelFactory.ConvertFrom(model);
+ result.IsFailed.ShouldBeTrue();
+ result.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
public void ModelFactory_ConvertFrom_Operator_ModelConverted()
{
- OperatorResponse operatorResponse = ModelFactory.ConvertFrom(TestData.OperatorModel);
-
+ Result result = ModelFactory.ConvertFrom(TestData.OperatorModel);
+ result.IsSuccess.ShouldBeTrue();
+ OperatorResponse operatorResponse = result.Data;
operatorResponse.ShouldNotBeNull();
operatorResponse.OperatorId.ShouldBe(TestData.OperatorId);
operatorResponse.RequireCustomTerminalNumber.ShouldBe(TestData.RequireCustomTerminalNumber);
@@ -353,9 +370,9 @@ public void ModelFactory_ConvertFrom_OperatorModelIsNull_ModelConverted()
{
TransactionProcessor.Models.Operator.Operator operatorModel = null;
- OperatorResponse operatorResponse = ModelFactory.ConvertFrom(operatorModel);
-
- operatorResponse.ShouldBeNull();
+ Result operatorResponseResult = ModelFactory.ConvertFrom(operatorModel);
+ operatorResponseResult.IsFailed.ShouldBeTrue();
+ operatorResponseResult.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
@@ -365,7 +382,9 @@ public void ModelFactory_ConvertFrom_OperatorList_ModelConverted()
TestData.OperatorModel
};
- List operatorResponses = ModelFactory.ConvertFrom(operatorList);
+ Result> operatorResponseResult = ModelFactory.ConvertFrom(operatorList);
+ operatorResponseResult.IsSuccess.ShouldBeTrue();
+ List operatorResponses = operatorResponseResult.Data;
operatorResponses.ShouldNotBeNull();
operatorResponses.ShouldNotBeEmpty();
operatorResponses.Count.ShouldBe(operatorList.Count);
@@ -385,8 +404,9 @@ public void ModelFactory_ConvertFrom_NullOperatorList_ModelConverted()
{
List operatorList = null;
- List operatorResponses = ModelFactory.ConvertFrom(operatorList);
- operatorResponses.ShouldBeEmpty();
+ Result> operatorResponseResult = ModelFactory.ConvertFrom(operatorList);
+ operatorResponseResult.IsSuccess.ShouldBeTrue();
+ operatorResponseResult.Data.ShouldBeEmpty();
}
@@ -395,8 +415,9 @@ public void ModelFactory_ConvertFrom_EmptyOperatorList_ModelConverted()
{
List operatorList = new List();
- List operatorResponses = ModelFactory.ConvertFrom(operatorList);
- operatorResponses.ShouldBeEmpty();
+ Result> operatorResponseResult = ModelFactory.ConvertFrom(operatorList);
+ operatorResponseResult.IsSuccess.ShouldBeTrue();
+ operatorResponseResult.Data.ShouldBeEmpty();
}
@@ -407,7 +428,7 @@ public void ModelFactory_ConvertFrom_NullModelInList_ModelConverted()
null
};
- var result = ModelFactory.ConvertFrom(operatorList);
+ Result> result = ModelFactory.ConvertFrom(operatorList);
result.IsFailed.ShouldBeTrue();
}
@@ -417,9 +438,10 @@ public void ModelFactory_Estate_NullInput_IsConverted()
{
Estate estateModel = null;
- EstateResponse estateResponse = ModelFactory.ConvertFrom(estateModel);
+ Result estateResponseResult = ModelFactory.ConvertFrom(estateModel);
- estateResponse.ShouldBeNull();
+ estateResponseResult.IsFailed.ShouldBeTrue();
+ estateResponseResult.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
@@ -427,8 +449,9 @@ public void ModelFactory_Estate_WithNoOperatorsOrSecurityUsers_IsConverted()
{
Estate estateModel = TestData.EstateModel;
- EstateResponse estateResponse = ModelFactory.ConvertFrom(estateModel);
-
+ Result result = ModelFactory.ConvertFrom(estateModel);
+ result.IsSuccess.ShouldBeTrue();
+ EstateResponse estateResponse= result.Data;
estateResponse.ShouldNotBeNull();
estateResponse.EstateId.ShouldBe(estateModel.EstateId);
estateResponse.EstateName.ShouldBe(estateModel.Name);
@@ -439,8 +462,9 @@ public void ModelFactory_Estate_WithOperators_IsConverted()
{
Estate estateModel = TestData.EstateModelWithOperators;
- EstateResponse estateResponse = ModelFactory.ConvertFrom(estateModel);
-
+ Result result = ModelFactory.ConvertFrom(estateModel);
+ result.IsSuccess.ShouldBeTrue();
+ EstateResponse estateResponse = result.Data;
estateResponse.ShouldNotBeNull();
estateResponse.EstateId.ShouldBe(estateModel.EstateId);
estateResponse.EstateName.ShouldBe(estateModel.Name);
@@ -454,8 +478,9 @@ public void ModelFactory_Estate_WithSecurityUsers_IsConverted()
{
Estate estateModel = TestData.EstateModelWithSecurityUsers;
- EstateResponse estateResponse = ModelFactory.ConvertFrom(estateModel);
-
+ Result result = ModelFactory.ConvertFrom(estateModel);
+ result.IsSuccess.ShouldBeTrue();
+ EstateResponse estateResponse = result.Data;
estateResponse.ShouldNotBeNull();
estateResponse.EstateId.ShouldBe(estateModel.EstateId);
estateResponse.EstateName.ShouldBe(estateModel.Name);
@@ -469,8 +494,9 @@ public void ModelFactory_Estate_WithOperatorsAndSecurityUsers_IsConverted()
{
Estate estateModel = TestData.EstateModelWithOperatorsAndSecurityUsers;
- EstateResponse estateResponse = ModelFactory.ConvertFrom(estateModel);
-
+ Result result = ModelFactory.ConvertFrom(estateModel);
+ result.IsSuccess.ShouldBeTrue();
+ EstateResponse estateResponse = result.Data;
estateResponse.ShouldNotBeNull();
estateResponse.EstateId.ShouldBe(estateModel.EstateId);
estateResponse.EstateName.ShouldBe(estateModel.Name);
@@ -489,8 +515,9 @@ public void ModelFactory_Merchant_IsConverted(Models.Merchant.SettlementSchedule
{
Merchant merchantModel = TestData.MerchantModelWithAddressesContactsDevicesAndOperatorsAndContracts(settlementSchedule);
- MerchantResponse merchantResponse = ModelFactory.ConvertFrom(merchantModel);
-
+ Result result = ModelFactory.ConvertFrom(merchantModel);
+ result.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchantResponse = result.Data;
merchantResponse.ShouldNotBeNull();
merchantResponse.MerchantId.ShouldBe(merchantModel.MerchantId);
merchantResponse.MerchantName.ShouldBe(merchantModel.MerchantName);
@@ -520,9 +547,9 @@ public void ModelFactory_Merchant_NullInput_IsConverted()
{
Merchant merchantModel = null;
- MerchantResponse merchantResponse = ModelFactory.ConvertFrom(merchantModel);
-
- merchantResponse.ShouldBeNull();
+ Result result = ModelFactory.ConvertFrom(merchantModel);
+ result.IsFailed.ShouldBeTrue();
+ result.Status.ShouldBe(ResultStatus.Invalid);
}
[Fact]
@@ -530,7 +557,9 @@ public void ModelFactory_Merchant_NullAddresses_IsConverted()
{
Merchant merchantModel = TestData.MerchantModelWithNullAddresses;
- MerchantResponse merchantResponse = ModelFactory.ConvertFrom(merchantModel);
+ Result result = ModelFactory.ConvertFrom(merchantModel);
+ result.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchantResponse = result.Data;
merchantResponse.ShouldNotBeNull();
merchantResponse.MerchantId.ShouldBe(merchantModel.MerchantId);
@@ -563,7 +592,9 @@ public void ModelFactory_Merchant_NullContacts_IsConverted()
{
Merchant merchantModel = TestData.MerchantModelWithNullContacts;
- MerchantResponse merchantResponse = ModelFactory.ConvertFrom(merchantModel);
+ Result result = ModelFactory.ConvertFrom(merchantModel);
+ result.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchantResponse = result.Data;
merchantResponse.ShouldNotBeNull();
merchantResponse.MerchantId.ShouldBe(merchantModel.MerchantId);
@@ -601,7 +632,9 @@ public void ModelFactory_Merchant_NullDevices_IsConverted()
{
Merchant merchantModel = TestData.MerchantModelWithNullDevices;
- MerchantResponse merchantResponse = ModelFactory.ConvertFrom(merchantModel);
+ Result result = ModelFactory.ConvertFrom(merchantModel);
+ result.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchantResponse = result.Data;
merchantResponse.ShouldNotBeNull();
merchantResponse.MerchantId.ShouldBe(merchantModel.MerchantId);
@@ -641,7 +674,9 @@ public void ModelFactory_Merchant_NullOperators_IsConverted()
{
Merchant merchantModel = TestData.MerchantModelWithNullOperators;
- MerchantResponse merchantResponse = ModelFactory.ConvertFrom(merchantModel);
+ Result result = ModelFactory.ConvertFrom(merchantModel);
+ result.IsSuccess.ShouldBeTrue();
+ MerchantResponse merchantResponse = result.Data;
merchantResponse.ShouldNotBeNull();
merchantResponse.MerchantId.ShouldBe(merchantModel.MerchantId);
@@ -667,7 +702,7 @@ public void ModelFactory_Merchant_NullOperators_IsConverted()
contactResponse.ContactPhoneNumber.ShouldBe(merchantModel.Contacts.Single().ContactPhoneNumber);
merchantResponse.Devices.ShouldHaveSingleItem();
- var device = merchantResponse.Devices.Single();
+ KeyValuePair device = merchantResponse.Devices.Single();
device.Key.ShouldBe(merchantModel.Devices.Single().DeviceId);
device.Value.ShouldBe(merchantModel.Devices.Single().DeviceIdentifier);
@@ -679,8 +714,9 @@ public void ModelFactory_TransactionFeeList_IsConverted()
{
List transactionFeeModelList = TestData.ProductTransactionFees;
- List transactionFeeResponseList = ModelFactory.ConvertFrom(transactionFeeModelList);
-
+ Result> result = ModelFactory.ConvertFrom(transactionFeeModelList);
+ result.IsSuccess.ShouldBeTrue();
+ List transactionFeeResponseList = result.Data;
transactionFeeResponseList.ShouldNotBeNull();
transactionFeeResponseList.ShouldNotBeEmpty();
transactionFeeResponseList.Count.ShouldBe(transactionFeeModelList.Count);
diff --git a/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj b/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj
index c8cab36a..7b453c05 100644
--- a/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj
+++ b/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj
@@ -7,7 +7,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/TransactionProcessor/Controllers/ContractController.cs b/TransactionProcessor/Controllers/ContractController.cs
index 2dd3d842..f1b11356 100644
--- a/TransactionProcessor/Controllers/ContractController.cs
+++ b/TransactionProcessor/Controllers/ContractController.cs
@@ -50,8 +50,10 @@ internal ClaimsPrincipal GetUser() {
private Result StandardSecurityChecks(Guid estateId) {
// Get the Estate Id claim from the user
- Claim estateIdClaim = ClaimsHelper.GetUserClaim(GetUser(), "EstateId", estateId.ToString());
-
+ Result estateIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "EstateId", estateId.ToString());
+ if (estateIdClaimResult.IsFailed)
+ return Result.Forbidden("User estate id claim is not valid");
+ Claim estateIdClaim = estateIdClaimResult.Data;
string estateRoleName = Environment.GetEnvironmentVariable("EstateRoleName");
if (ClaimsHelper.IsUserRolesValid(GetUser(), new[] { string.IsNullOrEmpty(estateRoleName) ? "Estate" : estateRoleName }) == false) {
return Result.Forbidden("User role is not valid");
diff --git a/TransactionProcessor/Controllers/EstateController.cs b/TransactionProcessor/Controllers/EstateController.cs
index 6176c9bc..8e2881ad 100644
--- a/TransactionProcessor/Controllers/EstateController.cs
+++ b/TransactionProcessor/Controllers/EstateController.cs
@@ -99,7 +99,10 @@ public async Task GetEstate([FromRoute] Guid estateId,
CancellationToken cancellationToken)
{
// Get the Estate Id claim from the user
- Claim estateIdClaim = ClaimsHelper.GetUserClaim(GetUser(), "EstateId", estateId.ToString());
+ Result estateIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "EstateId", estateId.ToString());
+ if (estateIdClaimResult.IsFailed)
+ return Result.Forbidden("User estate id claim is not valid").ToActionResultX();
+ Claim estateIdClaim = estateIdClaimResult.Data;
string estateRoleName = Environment.GetEnvironmentVariable("EstateRoleName");
if (ClaimsHelper.IsUserRolesValid(GetUser(), new[] { string.IsNullOrEmpty(estateRoleName) ? "Estate" : estateRoleName }) == false)
@@ -129,7 +132,10 @@ public async Task GetEstates([FromRoute] Guid estateId,
CancellationToken cancellationToken)
{
// Get the Estate Id claim from the user
- Claim estateIdClaim = ClaimsHelper.GetUserClaim(GetUser(), "EstateId", estateId.ToString());
+ Result estateIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "EstateId", estateId.ToString());
+ if (estateIdClaimResult.IsFailed)
+ return Result.Forbidden("User estate id claim is not valid").ToActionResultX();
+ Claim estateIdClaim = estateIdClaimResult.Data;
string estateRoleName = Environment.GetEnvironmentVariable("EstateRoleName");
if (ClaimsHelper.IsUserRolesValid(GetUser(), new[] { string.IsNullOrEmpty(estateRoleName) ? "Estate" : estateRoleName }) == false)
diff --git a/TransactionProcessor/Controllers/MerchantController.cs b/TransactionProcessor/Controllers/MerchantController.cs
index 955c3cc9..dfe26db2 100644
--- a/TransactionProcessor/Controllers/MerchantController.cs
+++ b/TransactionProcessor/Controllers/MerchantController.cs
@@ -7,6 +7,7 @@
using TransactionProcessor.DataTransferObjects.Requests.Merchant;
using TransactionProcessor.DataTransferObjects.Responses.Merchant;
using TransactionProcessor.Factories;
+using TransactionProcessor.Models.Contract;
namespace TransactionProcessor.Controllers;
@@ -74,14 +75,23 @@ private Result PerformSecurityChecks(Guid estateId,Guid merchantId) {
{
// Estate user
// Get the Estate Id claim from the user
- estateIdClaim = ClaimsHelper.GetUserClaim(this.User, "EstateId");
+ Result estateIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "EstateId");
+ if (estateIdClaimResult.IsFailed)
+ return Result.Forbidden("User estate id claim is not valid");
+ estateIdClaim = estateIdClaimResult.Data;
}
if (this.User.IsInRole(merchantRoleName))
{
// Get the merchant Id claim from the user
- estateIdClaim = ClaimsHelper.GetUserClaim(this.User, "EstateId");
- merchantIdClaim = ClaimsHelper.GetUserClaim(this.User, "MerchantId");
+ Result estateIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "EstateId");
+ if (estateIdClaimResult.IsFailed)
+ return Result.Forbidden("User estate id claim is not valid");
+ estateIdClaim = estateIdClaimResult.Data;
+ Result merchantIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "MerchantId");
+ if (estateIdClaimResult.IsFailed)
+ return Result.Forbidden("User merchant id claim is not valid");
+ merchantIdClaim = merchantIdClaimResult.Data;
}
if (ClaimsHelper.ValidateRouteParameter(estateId, estateIdClaim) == false) {
@@ -224,7 +234,10 @@ internal ClaimsPrincipal GetUser()
private bool PerformStandardChecks(Guid estateId)
{
// Get the Estate Id claim from the user
- Claim estateIdClaim = ClaimsHelper.GetUserClaim(GetUser(), "EstateId", estateId.ToString());
+ Result estateIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "EstateId",estateId.ToString());
+ if (estateIdClaimResult.IsFailed)
+ return false; // TODO: Shoudl this be a result?
+ Claim estateIdClaim = estateIdClaimResult.Data;
string estateRoleName = Environment.GetEnvironmentVariable("EstateRoleName");
if (ClaimsHelper.IsUserRolesValid(GetUser(), new[] { string.IsNullOrEmpty(estateRoleName) ? "Estate" : estateRoleName }) == false)
@@ -486,8 +499,10 @@ private bool PerformMerchantUserChecks(Guid estateId, Guid merchantId)
return false;
}
- Claim merchantIdClaim = ClaimsHelper.GetUserClaim(GetUser(), "MerchantId");
-
+ Result getMerchantIdClaimResult = ClaimsHelper.GetUserClaim(GetUser(), "MerchantId");
+ if (getMerchantIdClaimResult.IsFailed)
+ return false; // TODO: Shoudl this be a result?
+ Claim merchantIdClaim = getMerchantIdClaimResult.Data;
if (ClaimsHelper.ValidateRouteParameter(merchantId, merchantIdClaim) == false)
{
return false;
@@ -654,8 +669,10 @@ public async Task GetTransactionFeesForProduct([FromRoute] Guid e
MerchantQueries.GetTransactionFeesForProductQuery query = new(estateId, merchantId, contractId, productId);
- List transactionFees = await Mediator.Send(query, cancellationToken);
-
+ Result> transactionFeesResult = await Mediator.Send(query, cancellationToken);
+ if (transactionFeesResult.IsFailed)
+ return transactionFeesResult.ToActionResultX();
+ List transactionFees = transactionFeesResult.Data;
return ModelFactory.ConvertFrom(transactionFees).ToActionResultX();
}
diff --git a/TransactionProcessor/Controllers/OperatorController.cs b/TransactionProcessor/Controllers/OperatorController.cs
index 65c70777..e40f50b7 100644
--- a/TransactionProcessor/Controllers/OperatorController.cs
+++ b/TransactionProcessor/Controllers/OperatorController.cs
@@ -15,6 +15,7 @@
using TransactionProcessor.BusinessLogic.Requests;
using TransactionProcessor.DataTransferObjects.Requests.Operator;
using TransactionProcessor.Factories;
+using TransactionProcessor.Models.Operator;
namespace TransactionProcessor.Controllers;
@@ -98,8 +99,11 @@ public async Task GetOperator([FromRoute] Guid estateId,
OperatorQueries.GetOperatorQuery query = new(estateId, operatorId);
// Route the command
- Models.Operator.Operator @operator = await Mediator.Send(query, cancellationToken);
+ Result getOperatorResult = await Mediator.Send(query, cancellationToken);
+ if (getOperatorResult.IsFailed)
+ return getOperatorResult.ToActionResultX();
+ Models.Operator.Operator @operator = getOperatorResult.Data;
return ModelFactory.ConvertFrom(@operator).ToActionResultX();
}
@@ -112,8 +116,11 @@ public async Task GetOperators([FromRoute] Guid estateId,
OperatorQueries.GetOperatorsQuery query = new(estateId);
// Route the command
- List @operatorList = await Mediator.Send(query, cancellationToken);
+ Result> getOperatorResult = await Mediator.Send(query, cancellationToken);
+ if (getOperatorResult.IsFailed)
+ return getOperatorResult.ToActionResultX();
+ List @operatorList = getOperatorResult.Data;
return ModelFactory.ConvertFrom(@operatorList).ToActionResultX();
}
diff --git a/TransactionProcessor/TransactionProcessor.csproj b/TransactionProcessor/TransactionProcessor.csproj
index 23d5e93e..cd2042e5 100644
--- a/TransactionProcessor/TransactionProcessor.csproj
+++ b/TransactionProcessor/TransactionProcessor.csproj
@@ -10,7 +10,7 @@
-
+
@@ -34,11 +34,11 @@
-
-
-
+
+
+
-
+