From 946d11e6f6ce676d8a07df7db686ab14ada84f48 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 8 Apr 2026 14:43:16 +0000
Subject: [PATCH 1/3] Initial plan
From 29fd4478164d541c85384c4eebb4373793129f94 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 8 Apr 2026 14:49:35 +0000
Subject: [PATCH 2/3] Fix: Suppress false-positive hardcoded password Codacy
warning in MetadataContants.cs
Agent-Logs-Url: https://github.com/TransactionProcessing/TransactionProcessor/sessions/426e71ca-8c0c-412d-a644-5ddcd6555380
Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com>
---
TransactionProcessor.DataTransferObjects/MetadataContants.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/TransactionProcessor.DataTransferObjects/MetadataContants.cs b/TransactionProcessor.DataTransferObjects/MetadataContants.cs
index 910bfec2..f548a50e 100644
--- a/TransactionProcessor.DataTransferObjects/MetadataContants.cs
+++ b/TransactionProcessor.DataTransferObjects/MetadataContants.cs
@@ -14,11 +14,13 @@ public static class MetadataContants
///
/// The key name estate identifier
///
+ [SuppressMessage("Security", "S2068:Passwords should not be hardcoded", Justification = "Not a password - this is a metadata key name constant")]
public static readonly String KeyNameEstateId = "estate_id";
///
/// The key name merchant identifier
///
+ [SuppressMessage("Security", "S2068:Passwords should not be hardcoded", Justification = "Not a password - this is a metadata key name constant")]
public static readonly String KeyNameMerchantId = "merchant_id";
#endregion
From 1353c87137ffef0772526c8299ae12697fddcf1f Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 8 Apr 2026 15:01:12 +0000
Subject: [PATCH 3/3] Fix: rename KeyName* to EstateId/MerchantIdMetadataName
to resolve Codacy false-positive
Agent-Logs-Url: https://github.com/TransactionProcessing/TransactionProcessor/sessions/2108597f-605c-4395-892c-b35c16175802
Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com>
---
.../MetadataContants.cs | 10 ++++----
.../SpecflowExtensions.cs | 4 ++--
.../Factories/ModelFactoryTests.cs | 24 +++++++++----------
.../HandlerTests/TransactionHandlersTests.cs | 4 ++--
.../Factories/ModelFactory.cs | 12 +++++-----
.../Handlers/TransactionHandlers.cs | 4 ++--
6 files changed, 28 insertions(+), 30 deletions(-)
diff --git a/TransactionProcessor.DataTransferObjects/MetadataContants.cs b/TransactionProcessor.DataTransferObjects/MetadataContants.cs
index f548a50e..7cec284c 100644
--- a/TransactionProcessor.DataTransferObjects/MetadataContants.cs
+++ b/TransactionProcessor.DataTransferObjects/MetadataContants.cs
@@ -12,16 +12,14 @@ public static class MetadataContants
#region Others
///
- /// The key name estate identifier
+ /// The estate identifier metadata name
///
- [SuppressMessage("Security", "S2068:Passwords should not be hardcoded", Justification = "Not a password - this is a metadata key name constant")]
- public static readonly String KeyNameEstateId = "estate_id";
+ public static readonly String EstateIdMetadataName = "estate_id";
///
- /// The key name merchant identifier
+ /// The merchant identifier metadata name
///
- [SuppressMessage("Security", "S2068:Passwords should not be hardcoded", Justification = "Not a password - this is a metadata key name constant")]
- public static readonly String KeyNameMerchantId = "merchant_id";
+ public static readonly String MerchantIdMetadataName = "merchant_id";
#endregion
}
diff --git a/TransactionProcessor.IntegrationTesting.Helpers/SpecflowExtensions.cs b/TransactionProcessor.IntegrationTesting.Helpers/SpecflowExtensions.cs
index 3b114867..06d76906 100644
--- a/TransactionProcessor.IntegrationTesting.Helpers/SpecflowExtensions.cs
+++ b/TransactionProcessor.IntegrationTesting.Helpers/SpecflowExtensions.cs
@@ -605,8 +605,8 @@ public static List ToAutomaticDepositRequests(this DataTableRows tableRo
}
SerialisedMessage serialisedMessage = new SerialisedMessage();
- serialisedMessage.Metadata.Add(MetadataContants.KeyNameEstateId, estateDetails.EstateId.ToString());
- serialisedMessage.Metadata.Add(MetadataContants.KeyNameMerchantId, merchantId.ToString());
+ serialisedMessage.Metadata.Add(MetadataContants.EstateIdMetadataName, estateDetails.EstateId.ToString());
+ serialisedMessage.Metadata.Add(MetadataContants.MerchantIdMetadataName, merchantId.ToString());
serialisedMessage.SerialisedData = serialisedData;
messages.Add((estateDetails, merchantId, transactionNumber, serialisedMessage));
}
diff --git a/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs b/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs
index 9da9dfae..dc590b70 100644
--- a/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs
+++ b/TransactionProcessor.Tests/Factories/ModelFactoryTests.cs
@@ -187,10 +187,10 @@ public void ModelFactory_ProcessLogonTransactionResponseModel_IsConverted()
SerialisedMessage logonTransactionResponse = ModelFactory.ConvertFrom(processLogonTransactionResponseModel);
logonTransactionResponse.ShouldNotBeNull();
- logonTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameEstateId);
- logonTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameMerchantId);
- String estateId = logonTransactionResponse.Metadata[MetadataContants.KeyNameEstateId];
- String merchantId = logonTransactionResponse.Metadata[MetadataContants.KeyNameMerchantId];
+ logonTransactionResponse.Metadata.ShouldContainKey(MetadataContants.EstateIdMetadataName);
+ logonTransactionResponse.Metadata.ShouldContainKey(MetadataContants.MerchantIdMetadataName);
+ String estateId = logonTransactionResponse.Metadata[MetadataContants.EstateIdMetadataName];
+ String merchantId = logonTransactionResponse.Metadata[MetadataContants.MerchantIdMetadataName];
estateId.ShouldBe(TestData.ProcessLogonTransactionResponseModel.EstateId.ToString());
merchantId.ShouldBe(TestData.ProcessLogonTransactionResponseModel.MerchantId.ToString());
}
@@ -212,10 +212,10 @@ public void ModelFactory_ProcessSaleTransactionResponseModel_IsConverted()
SerialisedMessage saleTransactionResponse = ModelFactory.ConvertFrom(processSaleTransactionResponseModel);
saleTransactionResponse.ShouldNotBeNull();
- saleTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameEstateId);
- saleTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameMerchantId);
- String estateId = saleTransactionResponse.Metadata[MetadataContants.KeyNameEstateId];
- String merchantId = saleTransactionResponse.Metadata[MetadataContants.KeyNameMerchantId];
+ saleTransactionResponse.Metadata.ShouldContainKey(MetadataContants.EstateIdMetadataName);
+ saleTransactionResponse.Metadata.ShouldContainKey(MetadataContants.MerchantIdMetadataName);
+ String estateId = saleTransactionResponse.Metadata[MetadataContants.EstateIdMetadataName];
+ String merchantId = saleTransactionResponse.Metadata[MetadataContants.MerchantIdMetadataName];
estateId.ShouldBe(TestData.ProcessSaleTransactionResponseModel.EstateId.ToString());
merchantId.ShouldBe(TestData.ProcessSaleTransactionResponseModel.MerchantId.ToString());
}
@@ -237,10 +237,10 @@ public void ModelFactory_ProcessReconciliationTransactionResponse_IsConverted()
SerialisedMessage processReconciliationTransactionResponse = ModelFactory.ConvertFrom(processReconciliationTransactionResponseModel);
processReconciliationTransactionResponse.ShouldNotBeNull();
- processReconciliationTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameEstateId);
- processReconciliationTransactionResponse.Metadata.ShouldContainKey(MetadataContants.KeyNameMerchantId);
- String estateId = processReconciliationTransactionResponse.Metadata[MetadataContants.KeyNameEstateId];
- String merchantId = processReconciliationTransactionResponse.Metadata[MetadataContants.KeyNameMerchantId];
+ processReconciliationTransactionResponse.Metadata.ShouldContainKey(MetadataContants.EstateIdMetadataName);
+ processReconciliationTransactionResponse.Metadata.ShouldContainKey(MetadataContants.MerchantIdMetadataName);
+ String estateId = processReconciliationTransactionResponse.Metadata[MetadataContants.EstateIdMetadataName];
+ String merchantId = processReconciliationTransactionResponse.Metadata[MetadataContants.MerchantIdMetadataName];
estateId.ShouldBe(TestData.ProcessSaleTransactionResponseModel.EstateId.ToString());
merchantId.ShouldBe(TestData.ProcessSaleTransactionResponseModel.MerchantId.ToString());
}
diff --git a/TransactionProcessor.Tests/HandlerTests/TransactionHandlersTests.cs b/TransactionProcessor.Tests/HandlerTests/TransactionHandlersTests.cs
index 4a77b885..1b8000e0 100644
--- a/TransactionProcessor.Tests/HandlerTests/TransactionHandlersTests.cs
+++ b/TransactionProcessor.Tests/HandlerTests/TransactionHandlersTests.cs
@@ -170,8 +170,8 @@ private static SerialisedMessage CreateSerialisedMessage(Object request)
{
Metadata = new Dictionary
{
- { MetadataContants.KeyNameEstateId, TestData.EstateId.ToString() },
- { MetadataContants.KeyNameMerchantId, TestData.MerchantId.ToString() }
+ { MetadataContants.EstateIdMetadataName, TestData.EstateId.ToString() },
+ { MetadataContants.MerchantIdMetadataName, TestData.MerchantId.ToString() }
},
SerialisedData = JsonConvert.SerializeObject(request)
};
diff --git a/TransactionProcessor/Factories/ModelFactory.cs b/TransactionProcessor/Factories/ModelFactory.cs
index 22dc0397..05c730ac 100644
--- a/TransactionProcessor/Factories/ModelFactory.cs
+++ b/TransactionProcessor/Factories/ModelFactory.cs
@@ -151,8 +151,8 @@ public static SerialisedMessage ConvertFrom(ProcessLogonTransactionResponse proc
{
Metadata = new Dictionary()
{
- {MetadataContants.KeyNameEstateId, logonTransactionResponse.EstateId.ToString()},
- {MetadataContants.KeyNameMerchantId, logonTransactionResponse.MerchantId.ToString()}
+ {MetadataContants.EstateIdMetadataName, logonTransactionResponse.EstateId.ToString()},
+ {MetadataContants.MerchantIdMetadataName, logonTransactionResponse.MerchantId.ToString()}
},
SerialisedData = JsonConvert.SerializeObject(logonTransactionResponse, new JsonSerializerSettings
{
@@ -182,8 +182,8 @@ public static SerialisedMessage ConvertFrom(ProcessSaleTransactionResponse proce
{
Metadata = new Dictionary()
{
- {MetadataContants.KeyNameEstateId, processSaleTransactionResponse.EstateId.ToString()},
- {MetadataContants.KeyNameMerchantId, processSaleTransactionResponse.MerchantId.ToString()}
+ {MetadataContants.EstateIdMetadataName, processSaleTransactionResponse.EstateId.ToString()},
+ {MetadataContants.MerchantIdMetadataName, processSaleTransactionResponse.MerchantId.ToString()}
},
SerialisedData = JsonConvert.SerializeObject(saleTransactionResponse, new JsonSerializerSettings
{
@@ -212,8 +212,8 @@ public static SerialisedMessage ConvertFrom(ProcessReconciliationTransactionResp
{
Metadata = new Dictionary()
{
- {MetadataContants.KeyNameEstateId, processReconciliationTransactionResponse.EstateId.ToString()},
- {MetadataContants.KeyNameMerchantId, processReconciliationTransactionResponse.MerchantId.ToString()}
+ {MetadataContants.EstateIdMetadataName, processReconciliationTransactionResponse.EstateId.ToString()},
+ {MetadataContants.MerchantIdMetadataName, processReconciliationTransactionResponse.MerchantId.ToString()}
},
SerialisedData = JsonConvert.SerializeObject(reconciliationTransactionResponse, new JsonSerializerSettings
{
diff --git a/TransactionProcessor/Handlers/TransactionHandlers.cs b/TransactionProcessor/Handlers/TransactionHandlers.cs
index cac6e7b6..9470a35d 100644
--- a/TransactionProcessor/Handlers/TransactionHandlers.cs
+++ b/TransactionProcessor/Handlers/TransactionHandlers.cs
@@ -23,8 +23,8 @@ public static async Task PerformTransaction(IMediator mediator, HttpCon
{
DateTime transactionReceivedDateTime = DateTime.Now;
- Guid estateId = Guid.Parse(transactionRequest.Metadata[MetadataContants.KeyNameEstateId]);
- Guid merchantId = Guid.Parse(transactionRequest.Metadata[MetadataContants.KeyNameMerchantId]);
+ Guid estateId = Guid.Parse(transactionRequest.Metadata[MetadataContants.EstateIdMetadataName]);
+ Guid merchantId = Guid.Parse(transactionRequest.Metadata[MetadataContants.MerchantIdMetadataName]);
Result deserialiseResult = DeserializeTransactionRequest(transactionRequest.SerialisedData);
if (deserialiseResult.IsFailed || deserialiseResult.Data == null)