diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index cb3340ffdb..1bc9d50acb 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -5,7 +5,7 @@
-
+
@@ -34,11 +34,10 @@
-
-
+
+
-
@@ -94,4 +93,4 @@
-
+
\ No newline at end of file
diff --git a/src/Particular.LicensingComponent.Contracts/AuditServiceMetadata.cs b/src/Particular.LicensingComponent.Contracts/AuditServiceMetadata.cs
index e2536c6cec..df0ce40187 100644
--- a/src/Particular.LicensingComponent.Contracts/AuditServiceMetadata.cs
+++ b/src/Particular.LicensingComponent.Contracts/AuditServiceMetadata.cs
@@ -1,5 +1,3 @@
namespace Particular.LicensingComponent.Contracts;
-public record AuditServiceMetadata(Dictionary Versions, Dictionary Transports)
-{
-}
\ No newline at end of file
+public record AuditServiceMetadata(Dictionary Versions, Dictionary Transports);
\ No newline at end of file
diff --git a/src/Particular.LicensingComponent.Contracts/BrokerMetadata.cs b/src/Particular.LicensingComponent.Contracts/BrokerMetadata.cs
index 79e82f6163..75b393ef57 100644
--- a/src/Particular.LicensingComponent.Contracts/BrokerMetadata.cs
+++ b/src/Particular.LicensingComponent.Contracts/BrokerMetadata.cs
@@ -1,5 +1,3 @@
namespace Particular.LicensingComponent.Contracts;
-public record BrokerMetadata(string? ScopeType, Dictionary Data)
-{
-}
\ No newline at end of file
+public record BrokerMetadata(string? ScopeType, Dictionary Data);
\ No newline at end of file
diff --git a/src/Particular.LicensingComponent.UnitTests/AuditQuery_Tests.cs b/src/Particular.LicensingComponent.UnitTests/AuditQuery_Tests.cs
index 123af9230d..7bb790195e 100644
--- a/src/Particular.LicensingComponent.UnitTests/AuditQuery_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/AuditQuery_Tests.cs
@@ -39,11 +39,11 @@ public async Task Should_return_known_endpoints_if_any()
//Assert
Assert.That(endpoints, Is.Not.Null, "Endpoints should be found");
Assert.That(endpoints.Count, Is.EqualTo(2), "Invalid number of on known endpoints");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(endpoints.Any(a => a.Name == "Endpoint1"), Is.True, "Should have found Endpoint1");
Assert.That(endpoints.Any(a => a.Name == "Endpoint2"), Is.True, "Should have found Endpoint2");
- });
+ }
}
[Test]
@@ -58,20 +58,20 @@ public async Task Should_return_audit_remotes()
//Assert
Assert.That(remotes, Is.Not.Null, "Remotes should be found");
Assert.That(remotes, Has.Count.EqualTo(1), "Invalid number of remotes");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(remotes[0].ApiUri, Is.EqualTo("http://localhost:44444/api/"), "Invalid ApiUri on remote");
Assert.That(remotes[0].VersionString, Is.EqualTo("5.1.0"), "Invalid VersionString on remote");
Assert.That(remotes[0].Retention, Is.EqualTo(new TimeSpan(7, 0, 0, 0)), "Invalid Retention on remote");
Assert.That(remotes[0].Queues, Is.Not.Null, "Queues should be reported on remote");
- });
+ }
Assert.That(remotes[0].Queues, Has.Count.EqualTo(2), "Invalid number of queues reported on remote");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(remotes[0].Queues, Does.Contain("audit"), "Should have foind audit queue");
Assert.That(remotes[0].Queues, Does.Contain("audit.log"), "Should have found audit.log queue");
- });
+ }
}
[Test]
@@ -85,11 +85,11 @@ public async Task Should_return_successful_audit_connection_if_instances_exist_a
//Assert
Assert.That(connectionSettingsResult, Is.Not.Null, "connectionSettingsResult should be returned");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(connectionSettingsResult.ConnectionSuccessful, Is.True, "Connection status should be successful");
Assert.That(connectionSettingsResult.ConnectionErrorMessages.Count, Is.EqualTo(0), "Unexpected ConnectionErrorMessages");
- });
+ }
Approver.Verify(connectionSettingsResult.Diagnostics);
}
@@ -107,11 +107,11 @@ public async Task Should_return_diagnostics_and_no_errors_when_no_remotes_define
//Assert
Assert.That(connectionSettingsResult, Is.Not.Null, "connectionSettingsResult should be returned");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(connectionSettingsResult.ConnectionSuccessful, Is.True, "Connection status should be successful");
Assert.That(connectionSettingsResult.ConnectionErrorMessages.Count, Is.EqualTo(0), "Unexpected ConnectionErrorMessages");
- });
+ }
Approver.Verify(connectionSettingsResult.Diagnostics);
}
@@ -132,11 +132,11 @@ public async Task Should_always_return_diagnostics_and_relevant_errors_when_inva
//Assert
Assert.That(connectionSettingsResult, Is.Not.Null, "connectionSettingsResult should be returned");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(connectionSettingsResult.ConnectionSuccessful, Is.False, "Connection status should not be successful");
Assert.That(connectionSettingsResult.ConnectionErrorMessages.Count, Is.Not.EqualTo(0), "Expected ConnectionErrorMessages");
- });
+ }
Approver.Verify(connectionSettingsResult.Diagnostics, scenario: $"status_{remoteStatus}.version_{remoteVersion?.Replace(".", "") ?? "null"}.retention_{retensionPeriod[0]}");
}
diff --git a/src/Particular.LicensingComponent.UnitTests/AuditThroughputCollectorHostedService_Tests.cs b/src/Particular.LicensingComponent.UnitTests/AuditThroughputCollectorHostedService_Tests.cs
index 4ac7b5bb05..88a22d2cfd 100644
--- a/src/Particular.LicensingComponent.UnitTests/AuditThroughputCollectorHostedService_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/AuditThroughputCollectorHostedService_Tests.cs
@@ -188,19 +188,19 @@ await Task.Run(async () =>
// Assert
Assert.That(foundEndpoint, Is.Not.Null, $"Expected to find endpoint {endpointName}");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(foundEndpoint.Id.Name, Is.EqualTo(endpointName), $"Expected name to be {endpointName}");
Assert.That(foundEndpointThroughput, Is.Not.Null, "Expected endpoint throughput");
- });
+ }
Assert.That(foundEndpointThroughput.ContainsKey(endpointName), Is.True, $"Expected throughput for {endpointName}");
Assert.That(throughputData.Length, Is.EqualTo(1), $"Expected 1 throughput data for {endpointName}");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(throughputData[0].ContainsKey(throughputDate), Is.True, $"Expected throughput for {throughputDate}");
Assert.That(throughputData[0][throughputDate], Is.EqualTo(throughputCount), $"Expected throughput for {throughputDate} to be {throughputCount}");
- });
+ }
}
class AuditQuery_NoAuditRemotes : IAuditQuery
diff --git a/src/Particular.LicensingComponent.UnitTests/BrokerThroughputCollectorHostedServiceTests.cs b/src/Particular.LicensingComponent.UnitTests/BrokerThroughputCollectorHostedServiceTests.cs
index 93c91a24fd..2b5506a498 100644
--- a/src/Particular.LicensingComponent.UnitTests/BrokerThroughputCollectorHostedServiceTests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/BrokerThroughputCollectorHostedServiceTests.cs
@@ -98,11 +98,11 @@ await Task.Run(async () =>
} while (!token.IsCancellationRequested);
});
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(mockedBrokerThroughputQueryThatThrowsExceptions.GetQueueNamesCalls, Is.GreaterThan(1));
Assert.That(mockedBrokerThroughputQueryThatThrowsExceptions.GetGetThroughputPerDay, Is.GreaterThan(1));
- });
+ }
}
[Test]
diff --git a/src/Particular.LicensingComponent.UnitTests/Infrastructure/ThroughputCollectorTestFixture.cs b/src/Particular.LicensingComponent.UnitTests/Infrastructure/ThroughputCollectorTestFixture.cs
index d528a1afc9..5352aa5855 100644
--- a/src/Particular.LicensingComponent.UnitTests/Infrastructure/ThroughputCollectorTestFixture.cs
+++ b/src/Particular.LicensingComponent.UnitTests/Infrastructure/ThroughputCollectorTestFixture.cs
@@ -33,8 +33,6 @@ public virtual Task Setup()
protected ThroughputTestsConfiguration configuration = new();
[AttributeUsage(AttributeTargets.Method)]
- public class UseNonBrokerTransportAttribute : Attribute
- {
- }
+ public class UseNonBrokerTransportAttribute : Attribute;
}
}
\ No newline at end of file
diff --git a/src/Particular.LicensingComponent.UnitTests/MonitoringService_Tests.cs b/src/Particular.LicensingComponent.UnitTests/MonitoringService_Tests.cs
index 56c9c08ad4..c59a7b63c9 100644
--- a/src/Particular.LicensingComponent.UnitTests/MonitoringService_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/MonitoringService_Tests.cs
@@ -47,11 +47,11 @@ public async Task Should_record_new_endpoint_and_throughput()
// Assert
Assert.That(foundEndpoint, Is.Not.Null, "Expected to find Endpoint1");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(foundEndpoint.Id.Name, Is.EqualTo("Endpoint1"), "Expected name to be Endpoint1");
Assert.That(foundEndpoint.EndpointIndicators, Is.Not.Null, "Expected to find endpoint indicators");
- });
+ }
Assert.That(foundEndpoint.EndpointIndicators, Does.Contain(EndpointIndicator.KnownEndpoint.ToString()),
"Expected KnownEndpoint indicator");
@@ -59,7 +59,7 @@ public async Task Should_record_new_endpoint_and_throughput()
Assert.That(foundEndpointThroughput.ContainsKey("Endpoint1"), Is.True, "Expected throughput for Endpoint1");
Assert.That(throughputData.Length, Is.EqualTo(1), "Expected 1 throughput data for Endpoint1");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(throughputData[0].ThroughputSource, Is.EqualTo(ThroughputSource.Monitoring),
"Expected ThroughputSource to be Monitoring for Endpoint1");
@@ -67,7 +67,7 @@ public async Task Should_record_new_endpoint_and_throughput()
$"Expected throughput for {message.StartDateTime.Date} for Endpoint1");
Assert.That(throughputData[0][DateOnly.FromDateTime(message.EndDateTime.Date)], Is.EqualTo(15),
$"Expected throughput for {message.StartDateTime.Date} to be 15 for Endpoint1");
- });
+ }
}
[Test]
@@ -113,12 +113,12 @@ public async Task Should_return_successful_monitoring_connection_and_diagnostics
// Assert
Assert.That(connectionSettingsResult, Is.Not.Null, "connectionSettingsResult should be returned");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(connectionSettingsResult.ConnectionSuccessful, Is.True, "Connection status should be successful");
Assert.That(connectionSettingsResult.ConnectionErrorMessages.Count, Is.EqualTo(0),
"Unexpected ConnectionErrorMessages");
- });
+ }
Assert.That(connectionSettingsResult.Diagnostics, Is.Not.Null, "Expected diagnostic");
Assert.That(
@@ -143,13 +143,13 @@ public async Task Should_return_error_monitoring_connection_and_diagnostics_if_n
// Assert
Assert.That(connectionSettingsResult, Is.Not.Null, "connectionSettingsResult should be returned");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(connectionSettingsResult.ConnectionSuccessful, Is.False,
"Connection status should be unsuccessful");
Assert.That(connectionSettingsResult.ConnectionErrorMessages.Count, Is.EqualTo(0),
"Unexpected ConnectionErrorMessages");
- });
+ }
Assert.That(connectionSettingsResult.Diagnostics, Is.Not.Null, "Expected diagnostic");
Assert.That(
diff --git a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_GenerationStatus_Tests.cs b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_GenerationStatus_Tests.cs
index 701c4d4e3c..96173bddb8 100644
--- a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_GenerationStatus_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_GenerationStatus_Tests.cs
@@ -28,11 +28,11 @@ await DataStore.CreateBuilder()
var reportGenerationState = await ThroughputCollector.GetReportGenerationState(default);
// Assert
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(reportGenerationState.ReportCanBeGenerated, Is.True);
Assert.That(reportGenerationState.Reason, Is.EqualTo(""));
- });
+ }
}
@@ -48,11 +48,11 @@ await DataStore.CreateBuilder()
var reportGenerationState = await ThroughputCollector.GetReportGenerationState(default);
// Assert
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(reportGenerationState.ReportCanBeGenerated, Is.True);
Assert.That(reportGenerationState.Reason, Is.EqualTo(""));
- });
+ }
}
[Test]
@@ -69,11 +69,11 @@ await DataStore.CreateBuilder()
var reportGenerationState = await ThroughputCollector.GetReportGenerationState(default);
// Assert
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(reportGenerationState.ReportCanBeGenerated, Is.False);
Assert.That(reportGenerationState.Reason, Does.Contain("one day"), "Report generation failure reason does not contain 'one day'");
- });
+ }
Assert.That(reportGenerationState.Reason, Does.Contain("broker"), "Report generation failure reason does not contain 'broker'");
}
@@ -90,11 +90,11 @@ await DataStore.CreateBuilder().AddEndpoint()
var reportGenerationState = await ThroughputCollector.GetReportGenerationState(default);
// Assert
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(reportGenerationState.ReportCanBeGenerated, Is.False);
Assert.That(reportGenerationState.Reason, Does.Contain("one day"), "Report generation failure reason does not contain 'one day'");
- });
+ }
Assert.That(reportGenerationState.Reason, Does.Contain("broker"), "Report generation failure reason does not contain 'broker'");
}
}
\ No newline at end of file
diff --git a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Dates_Tests.cs b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Dates_Tests.cs
index 80e183d138..096fed9bfe 100644
--- a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Dates_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Dates_Tests.cs
@@ -48,12 +48,12 @@ await DataStore.CreateBuilder()
var reportEndDate = new DateTimeOffset(maxDate.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc));
Assert.That(report, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.Queues.Count, Is.EqualTo(3));
Assert.That(report.ReportData.StartTime, Is.EqualTo(minDateInReport), $"Incorrect StartTime for report");
Assert.That(report.ReportData.EndTime, Is.EqualTo(reportEndDate), $"Incorrect StartTime for report");
Assert.That(report.ReportData.ReportDuration, Is.EqualTo(reportEndDate - minDateInReport), $"Incorrect ReportDuration for report");
- });
+ }
}
}
\ No newline at end of file
diff --git a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_EnvironmentInformation_Tests.cs b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_EnvironmentInformation_Tests.cs
index 5e556f9b83..c79c987081 100644
--- a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_EnvironmentInformation_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_EnvironmentInformation_Tests.cs
@@ -32,12 +32,12 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.EnvironmentInformation, Is.Not.Null, $"Environment information missing from the report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData, Is.Not.Null, $"Environment data missing from the report");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData.ContainsKey(EnvironmentDataType.AuditEnabled.ToString()), Is.True, $"AuditEnabled missing from Environment data");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData[EnvironmentDataType.AuditEnabled.ToString()], Is.EqualTo("False"), $"AuditEnabled should be False");
- });
+ }
}
[Test]
@@ -63,12 +63,12 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.EnvironmentInformation, Is.Not.Null, $"Environment information missing from the report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData, Is.Not.Null, $"Environment data missing from the report");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData.ContainsKey(EnvironmentDataType.AuditEnabled.ToString()), Is.True, $"AuditEnabled missing from Environment data");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData[EnvironmentDataType.AuditEnabled.ToString()], Is.EqualTo("True"), $"AuditEnabled should be True");
- });
+ }
}
[Test]
@@ -87,12 +87,12 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.EnvironmentInformation, Is.Not.Null, $"Environment information missing from the report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData, Is.Not.Null, $"Environment data missing from the report");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData.ContainsKey(EnvironmentDataType.MonitoringEnabled.ToString()), Is.True, $"MonitoringEnabled missing from Environment data");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData[EnvironmentDataType.MonitoringEnabled.ToString()], Is.EqualTo("False"), $"MonitoringEnabled should be False");
- });
+ }
}
[Test]
@@ -118,12 +118,12 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.EnvironmentInformation, Is.Not.Null, $"Environment information missing from the report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData, Is.Not.Null, $"Environment data missing from the report");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData.ContainsKey(EnvironmentDataType.MonitoringEnabled.ToString()), Is.True, $"MonitoringEnabled missing from Environment data");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData[EnvironmentDataType.MonitoringEnabled.ToString()], Is.EqualTo("True"), $"MonitoringEnabled should be True");
- });
+ }
}
[Test]
@@ -150,12 +150,12 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.EnvironmentInformation, Is.Not.Null, $"Environment information missing from the report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData, Is.Not.Null, $"Environment data missing from the report");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData.ContainsKey(EnvironmentDataType.ServicePulseVersion.ToString()), Is.True, $"ServicePulseVersion missing from Environment data");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData[EnvironmentDataType.ServicePulseVersion.ToString()], Is.EqualTo(spVersion), $"ServicePulseVersion should be {spVersion}");
- });
+ }
}
[Test]
@@ -183,14 +183,14 @@ await DataStore.CreateBuilder()
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.EnvironmentInformation, Is.Not.Null, $"Environment information missing from the report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData, Is.Not.Null, $"Environment data missing from the report");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData.ContainsKey(EnvironmentDataType.BrokerVersion.ToString()), Is.True, $"Missing EnvironmentData.Version from report");
Assert.That(report.ReportData.EnvironmentInformation.EnvironmentData[EnvironmentDataType.BrokerVersion.ToString()], Is.EqualTo(expectedBrokerVersion), $"Incorrect EnvironmentData.Version on report");
Assert.That(report.ReportData.EnvironmentInformation.AuditServicesData.Versions, Is.EquivalentTo(expectedAuditVersionSummary), $"Invalid AuditInstance version summary on report");
Assert.That(report.ReportData.EnvironmentInformation.AuditServicesData.Transports, Is.EquivalentTo(expectedAuditTransportSummary), $"Invalid AuditInstance transport summary on report");
- });
+ }
Assert.That(report.ReportData.ScopeType, Is.Not.Null, $"Missing ScopeType from report");
Assert.That(report.ReportData.ScopeType, Is.EqualTo(expectedScopeType), $"Invalid ScopeType on report");
diff --git a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Masking_Tests.cs b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Masking_Tests.cs
index 79d0a2aa21..e3bdb7db7a 100644
--- a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Masking_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Masking_Tests.cs
@@ -35,14 +35,14 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.TotalQueues, Is.EqualTo(3), $"Invalid TotalQueues on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint1"), Is.Null, $"QueueName not masked on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "REDACTED1"), Is.Not.Null, $"QueueName not masked on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint2"), Is.Not.Null, $"QueueName Endpoint2 not found on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint3"), Is.Not.Null, $"QueueName Endpoint2 not found on report");
- });
+ }
}
[Test]
@@ -60,13 +60,13 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.TotalQueues, Is.EqualTo(3), $"Invalid TotalQueues on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName.Contains("REDACTED")), Is.Null, $"QueueNames should not be masked on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint1"), Is.Not.Null, $"QueueName Endpoint1 not found on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint2"), Is.Not.Null, $"QueueName Endpoint2 not found on report");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint3"), Is.Not.Null, $"QueueName Endpoint2 not found on report");
- });
+ }
}
}
\ No newline at end of file
diff --git a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Throughput_Tests.cs b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Throughput_Tests.cs
index d0d169f764..6603abcad0 100644
--- a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Throughput_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_Report_Throughput_Tests.cs
@@ -72,13 +72,13 @@ await DataStore.CreateBuilder()
// Assert
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.Queues.Count, Is.EqualTo(4), $"Incorrect number of endpoints in throughput report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint1")?.DailyThroughputFromBroker?.Length, Is.EqualTo(2), $"Daily throughput should be included for Endpoint1");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint2")?.DailyThroughputFromBroker?.Length, Is.EqualTo(2), $"Daily throughput should be included for Endpoint2");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint3")?.DailyThroughputFromBroker?.Length, Is.EqualTo(2), $"Daily throughput should be included for Endpoint3");
Assert.That(report.ReportData.Queues.FirstOrDefault(w => w.QueueName == "Endpoint4")?.DailyThroughputFromBroker?.Length, Is.EqualTo(2), $"Daily throughput should be included for Endpoint4");
- });
+ }
}
[TestCase(ThroughputSource.Audit)]
@@ -138,18 +138,18 @@ await DataStore.CreateBuilder()
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.Queues.Count, Is.EqualTo(3));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.Queues.First(w => w.QueueName == "Endpoint1").Throughput, Is.EqualTo(55), $"Incorrect Throughput recorded for Endpoint1");
Assert.That(report.ReportData.Queues.First(w => w.QueueName == "Endpoint2").Throughput, Is.EqualTo(65), $"Incorrect Throughput recorded for Endpoint2");
Assert.That(report.ReportData.Queues.First(w => w.QueueName == "Endpoint3").Throughput, Is.EqualTo(75), $"Incorrect Throughput recorded for Endpoint3");
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.TotalThroughput, Is.EqualTo(195), $"Incorrect TotalThroughput recorded");
Assert.That(report.ReportData.TotalQueues, Is.EqualTo(3), $"Incorrect TotalQueues recorded");
- });
+ }
}
[Test]
@@ -176,18 +176,18 @@ await DataStore.CreateBuilder()
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.Queues.Count, Is.EqualTo(3));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.Queues.First(w => w.QueueName == "Endpoint1").Throughput, Is.EqualTo(65), $"Incorrect Throughput recorded for Endpoint1");
Assert.That(report.ReportData.Queues.First(w => w.QueueName == "Endpoint2").Throughput, Is.EqualTo(65), $"Incorrect Throughput recorded for Endpoint2");
Assert.That(report.ReportData.Queues.First(w => w.QueueName == "Endpoint3").Throughput, Is.EqualTo(57), $"Incorrect Throughput recorded for Endpoint3");
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.TotalThroughput, Is.EqualTo(187), $"Incorrect TotalThroughput recorded");
Assert.That(report.ReportData.TotalQueues, Is.EqualTo(3), $"Incorrect TotalQueues recorded");
- });
+ }
}
[Test]
@@ -202,13 +202,13 @@ public async Task Should_return_correct_throughput_in_report_when_endpoint_has_n
// Assert
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.Queues.Count, Is.EqualTo(1), "Invalid number of endpoints in throughput report");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.Queues[0].Throughput, Is.EqualTo(0), $"Incorrect Throughput recorded for {report.ReportData.Queues[0].QueueName}");
Assert.That(report.ReportData.TotalThroughput, Is.EqualTo(0), $"Incorrect TotalThroughput recorded");
Assert.That(report.ReportData.TotalQueues, Is.EqualTo(1), $"Incorrect TotalQueues recorded");
- });
+ }
}
[Test]
@@ -230,7 +230,7 @@ await DataStore.CreateBuilder()
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.Queues.Count, Is.EqualTo(1));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
//we want to see the name for the endpoint if one exists, not the broker sanitized name
Assert.That(report.ReportData.Queues[0].QueueName, Is.EqualTo("Endpoint1_"), $"Incorrect Name for Endpoint1");
@@ -240,7 +240,7 @@ await DataStore.CreateBuilder()
Assert.That(report.ReportData.TotalThroughput, Is.EqualTo(75), $"Incorrect TotalThroughput recorded");
Assert.That(report.ReportData.TotalQueues, Is.EqualTo(1), $"Incorrect TotalQueues recorded");
- });
+ }
}
[TestCase(ThroughputSource.Audit)]
@@ -264,11 +264,11 @@ await DataStore.CreateBuilder()
Assert.That(report, Is.Not.Null);
Assert.That(report.ReportData.Queues.Count, Is.EqualTo(1));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(report.ReportData.TotalThroughput, Is.EqualTo(75), $"Incorrect TotalThroughput recorded");
Assert.That(report.ReportData.TotalQueues, Is.EqualTo(1), $"Incorrect TotalQueues recorded");
- });
+ }
}
[Test]
diff --git a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_ThroughputSummary_Tests.cs b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_ThroughputSummary_Tests.cs
index f30b9a24bf..9f7f44b0a9 100644
--- a/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_ThroughputSummary_Tests.cs
+++ b/src/Particular.LicensingComponent.UnitTests/ThroughputCollector/ThroughputCollector_ThroughputSummary_Tests.cs
@@ -99,12 +99,12 @@ await DataStore.CreateBuilder()
Assert.That(summary, Is.Not.Null);
Assert.That(summary, Has.Count.EqualTo(3), $"Incorrect number of endpoints in throughput summary");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(summary.Single(w => w.Name == "Endpoint1").MaxDailyThroughput, Is.EqualTo(55), $"Incorrect MaxDailyThroughput recorded for Endpoint1");
Assert.That(summary.Single(w => w.Name == "Endpoint2").MaxDailyThroughput, Is.EqualTo(65), $"Incorrect MaxDailyThroughput recorded for Endpoint2");
Assert.That(summary.Single(w => w.Name == "Endpoint3").MaxDailyThroughput, Is.EqualTo(75), $"Incorrect MaxDailyThroughput recorded for Endpoint3");
- });
+ }
}
[Test]
@@ -131,12 +131,12 @@ await DataStore.CreateBuilder()
Assert.That(summary, Is.Not.Null);
Assert.That(summary, Has.Count.EqualTo(3));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(summary.First(w => w.Name == "Endpoint1").MaxDailyThroughput, Is.EqualTo(65), $"Incorrect MaxDailyThroughput recorded for Endpoint1");
Assert.That(summary.First(w => w.Name == "Endpoint2").MaxDailyThroughput, Is.EqualTo(65), $"Incorrect MaxDailyThroughput recorded for Endpoint2");
Assert.That(summary.First(w => w.Name == "Endpoint3").MaxDailyThroughput, Is.EqualTo(57), $"Incorrect MaxDailyThroughput recorded for Endpoint3");
- });
+ }
}
[Test]
@@ -169,11 +169,11 @@ await DataStore.CreateBuilder()
Assert.That(summary, Is.Not.Null);
Assert.That(summary, Has.Count.EqualTo(2));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(summary.First(w => w.Name == "Endpoint1").MaxMonthlyThroughput, Is.EqualTo(250), $"Incorrect MaxDailyThroughput recorded for Endpoint1");
Assert.That(summary.First(w => w.Name == "Endpoint2").MaxMonthlyThroughput, Is.EqualTo(165), $"Incorrect MaxDailyThroughput recorded for Endpoint2");
- });
+ }
}
[Test]
@@ -210,13 +210,13 @@ await DataStore.CreateBuilder()
Assert.That(summary, Is.Not.Null);
Assert.That(summary, Has.Count.EqualTo(1));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
//we want to see the name for the endpoint if one exists, not the broker sanitized name
Assert.That(summary[0].Name, Is.EqualTo("Endpoint1_"), $"Incorrect Name for Endpoint1");
//even though the names are different, we should have matched on the sanitized name and hence displayed max throughput from the 2 endpoints
Assert.That(summary[0].MaxDailyThroughput, Is.EqualTo(75), $"Incorrect MaxDailyThroughput recorded for Endpoint1");
- });
+ }
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTesting/EndpointConfigurationExtensions.cs b/src/ServiceControl.AcceptanceTesting/EndpointConfigurationExtensions.cs
index bc7935a031..8998e768d7 100644
--- a/src/ServiceControl.AcceptanceTesting/EndpointConfigurationExtensions.cs
+++ b/src/ServiceControl.AcceptanceTesting/EndpointConfigurationExtensions.cs
@@ -6,7 +6,6 @@
using System.Reflection;
using System.Threading.Tasks;
using InfrastructureConfig;
- using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.AcceptanceTesting.Support;
@@ -62,19 +61,6 @@ public static async Task DefinePersistence(this EndpointConfiguration config, Ru
runDescriptor.OnTestCompleted(_ => persistenceConfiguration.Cleanup());
}
- public static void RegisterComponentsAndInheritanceHierarchy(this EndpointConfiguration builder, RunDescriptor runDescriptor) => builder.RegisterComponents(services => { RegisterInheritanceHierarchyOfContextOnContainer(runDescriptor, services); });
-
- static void RegisterInheritanceHierarchyOfContextOnContainer(RunDescriptor runDescriptor,
- IServiceCollection services)
- {
- var type = runDescriptor.ScenarioContext.GetType();
- while (type != typeof(object))
- {
- services.AddSingleton(type, runDescriptor.ScenarioContext);
- type = type.BaseType;
- }
- }
-
public static void NoImmediateRetries(this EndpointConfiguration configuration)
=> configuration.Recoverability().Immediate(x => x.NumberOfRetries(0));
diff --git a/src/ServiceControl.AcceptanceTesting/EndpointTemplates/DefaultServerBase.cs b/src/ServiceControl.AcceptanceTesting/EndpointTemplates/DefaultServerBase.cs
index 68361944bd..a045a88345 100644
--- a/src/ServiceControl.AcceptanceTesting/EndpointTemplates/DefaultServerBase.cs
+++ b/src/ServiceControl.AcceptanceTesting/EndpointTemplates/DefaultServerBase.cs
@@ -30,7 +30,6 @@ public virtual async Task GetConfiguration(RunDescriptor
await endpointTestExecutionConfiguration.Configure(endpointCustomizations.EndpointName, endpointConfiguration, runDescriptor.Settings, endpointCustomizations.PublisherMetadata);
runDescriptor.OnTestCompleted(_ => endpointTestExecutionConfiguration.Cleanup());
- endpointConfiguration.RegisterComponentsAndInheritanceHierarchy(runDescriptor);
await endpointConfiguration.DefinePersistence(runDescriptor, endpointCustomizations);
endpointConfiguration.UseSerialization();
diff --git a/src/ServiceControl.AcceptanceTesting/NServiceBusAcceptanceTest.cs b/src/ServiceControl.AcceptanceTesting/NServiceBusAcceptanceTest.cs
index 21fe3d4287..79cda757ca 100644
--- a/src/ServiceControl.AcceptanceTesting/NServiceBusAcceptanceTest.cs
+++ b/src/ServiceControl.AcceptanceTesting/NServiceBusAcceptanceTest.cs
@@ -17,10 +17,7 @@
public abstract partial class NServiceBusAcceptanceTest
{
[SetUp]
- public void SetUp()
- {
- LogManager.Use(); // Ensures that every test the log manager is 'reset' as log manager can otherwise point to disposed resources. For example, when a test uses NServiceBus hosting
-
+ public void SetUp() =>
Conventions.EndpointNamingConvention = t =>
{
var classAndEndpoint = t.FullName.Split('.').Last();
@@ -37,7 +34,6 @@ public void SetUp()
return testName + "." + endpointBuilder;
};
- }
[TearDown]
public void TearDown()
diff --git a/src/ServiceControl.AcceptanceTesting/ServiceControl.AcceptanceTesting.csproj b/src/ServiceControl.AcceptanceTesting/ServiceControl.AcceptanceTesting.csproj
index 2f7909ed54..e39a6ed6b1 100644
--- a/src/ServiceControl.AcceptanceTesting/ServiceControl.AcceptanceTesting.csproj
+++ b/src/ServiceControl.AcceptanceTesting/ServiceControl.AcceptanceTesting.csproj
@@ -16,7 +16,6 @@
-
diff --git a/src/ServiceControl.AcceptanceTesting/TraceIncomingBehavior.cs b/src/ServiceControl.AcceptanceTesting/TraceIncomingBehavior.cs
index 207d1de37d..493eb1b32e 100644
--- a/src/ServiceControl.AcceptanceTesting/TraceIncomingBehavior.cs
+++ b/src/ServiceControl.AcceptanceTesting/TraceIncomingBehavior.cs
@@ -8,16 +8,11 @@ namespace ServiceControl.AcceptanceTesting
using NServiceBus.Pipeline;
using NServiceBus.Settings;
- public class TraceIncomingBehavior : IBehavior
+ public class TraceIncomingBehavior(IReadOnlySettings settings) : IBehavior
{
- public TraceIncomingBehavior(ScenarioContext scenarioContext, IReadOnlySettings settings)
- {
- this.scenarioContext = scenarioContext;
- this.settings = settings;
- }
-
public Task Invoke(IIncomingLogicalMessageContext context, Func next)
{
+ var scenarioContext = settings.Get();
scenarioContext.Logs.Enqueue(new ScenarioContext.LogItem
{
Endpoint = settings.EndpointName(),
@@ -28,15 +23,6 @@ public Task Invoke(IIncomingLogicalMessageContext context, Func
+ public class TraceOutgoingBehavior(IReadOnlySettings settings) : IBehavior
{
- public TraceOutgoingBehavior(ScenarioContext scenarioContext, IReadOnlySettings settings)
- {
- this.scenarioContext = scenarioContext;
- this.settings = settings;
- }
-
public Task Invoke(IOutgoingLogicalMessageContext context, Func next)
{
+ var scenarioContext = settings.Get();
scenarioContext.Logs.Enqueue(new ScenarioContext.LogItem
{
Endpoint = settings.EndpointName(),
@@ -28,15 +23,6 @@ public Task Invoke(IOutgoingLogicalMessageContext context, Func Task.CompletedTask;
}
+ [Handler]
public class MyMessageHandler(Context scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
@@ -259,6 +260,7 @@ class SendMessageAtStart : FeatureStartupTask
protected override Task OnStop(IMessageSession session, CancellationToken cancellationToken = default) => Task.CompletedTask;
}
+ [Handler]
public class MyMessageHandler(Context scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests.RavenDB/Recoverability/MessageFailures/When_a_message_fails_to_import.cs b/src/ServiceControl.AcceptanceTests.RavenDB/Recoverability/MessageFailures/When_a_message_fails_to_import.cs
index bcc703e4ff..dbcae68e42 100644
--- a/src/ServiceControl.AcceptanceTests.RavenDB/Recoverability/MessageFailures/When_a_message_fails_to_import.cs
+++ b/src/ServiceControl.AcceptanceTests.RavenDB/Recoverability/MessageFailures/When_a_message_fails_to_import.cs
@@ -67,11 +67,11 @@ public async Task It_can_be_reimported()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(runResult.ErrorForwarded, Is.True);
Assert.That(runResult.MessageFailedEventPublished, Is.True);
- });
+ }
}
class MessageFailedHandler(MyContext scenarioContext) : IDomainHandler
@@ -101,6 +101,7 @@ public class ErrorLogSpy : EndpointConfigurationBuilder
{
public ErrorLogSpy() => EndpointSetup();
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext) : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context)
@@ -131,6 +132,7 @@ public Receiver() =>
recoverability.Delayed(x => x.NumberOfRetries(0));
});
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests.RavenDB/StartupModeTests.cs b/src/ServiceControl.AcceptanceTests.RavenDB/StartupModeTests.cs
index 02f868009a..6e284f6a56 100644
--- a/src/ServiceControl.AcceptanceTests.RavenDB/StartupModeTests.cs
+++ b/src/ServiceControl.AcceptanceTests.RavenDB/StartupModeTests.cs
@@ -5,15 +5,12 @@
using System.Threading.Tasks;
using Hosting.Commands;
using Microsoft.Extensions.Hosting;
- using Microsoft.Extensions.Logging.Abstractions;
- using NServiceBus;
using NUnit.Framework;
using Particular.ServiceControl.Hosting;
using Persistence;
using ServiceBus.Management.Infrastructure.Settings;
using ServiceControl.AcceptanceTesting.InfrastructureConfig;
-
class StartupModeTests : AcceptanceTest
{
Settings settings;
@@ -56,21 +53,6 @@ public async Task CanRunMaintenanceMode()
[Test]
public async Task CanRunImportFailedMessagesMode()
- => await new TestableImportFailedErrorsCommand().Execute(new HostArguments(Array.Empty()), settings);
-
- class TestableImportFailedErrorsCommand() : ImportFailedErrorsCommand()
- {
- protected override EndpointConfiguration CreateEndpointConfiguration(Settings settings)
- {
- var configuration = base.CreateEndpointConfiguration(settings);
-
- //HINT: we want to exclude this assembly to prevent loading features that are part of the acceptance testing framework
- var thisAssembly = new[] { typeof(StartupModeTests).Assembly.GetName().Name };
-
- configuration.AssemblyScanner().ExcludeAssemblies(thisAssembly);
-
- return configuration;
- }
- }
+ => await new ImportFailedErrorsCommand().Execute(new HostArguments([]), settings);
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_custom_check_fails.cs b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_custom_check_fails.cs
index fb261e8ffd..c14988cd2d 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_custom_check_fails.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_custom_check_fails.cs
@@ -32,12 +32,12 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(entry.Severity, Is.EqualTo(Severity.Error), "Failed custom checks should be treated as error");
Assert.That(entry.RelatedTo.Any(item => item == "/customcheck/MyCustomCheckId"), Is.True);
Assert.That(entry.RelatedTo.Any(item => item.StartsWith($"/endpoint/{Conventions.EndpointNamingConvention(typeof(EndpointWithFailingCustomCheck))}")), Is.True);
- });
+ }
}
public class MyContext : ScenarioContext;
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_periodic_custom_check_fails.cs b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_periodic_custom_check_fails.cs
index f6ee080c59..f4f1acaff5 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_periodic_custom_check_fails.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_a_periodic_custom_check_fails.cs
@@ -38,12 +38,12 @@ public async Task Should_result_in_a_custom_check_failed_event()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(entry.Severity, Is.EqualTo(Severity.Error), "Failed custom checks should be treated as error");
Assert.That(entry.RelatedTo.Any(item => item == "/customcheck/MyCustomCheckId"), Is.True);
Assert.That(entry.RelatedTo.Any(item => item.StartsWith($"/endpoint/{Conventions.EndpointNamingConvention(typeof(WithCustomCheck))}")), Is.True);
- });
+ }
}
[Test]
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_critical_storage_threshold_reached.cs b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_critical_storage_threshold_reached.cs
index 40358da9ad..dbf20f87da 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_critical_storage_threshold_reached.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_critical_storage_threshold_reached.cs
@@ -16,20 +16,17 @@
class When_critical_storage_threshold_reached : AcceptanceTest
{
[SetUp]
- public void SetupIngestion()
- {
+ public void SetupIngestion() =>
SetSettings = s =>
{
s.TimeToRestartErrorIngestionAfterFailure = TimeSpan.FromSeconds(1);
s.DisableHealthChecks = false;
};
- }
RavenPersisterSettings PersisterSettings => (RavenPersisterSettings)Settings.PersisterSpecificSettings;
[Test]
- public async Task Should_stop_ingestion()
- {
+ public async Task Should_stop_ingestion() =>
await Define()
.WithEndpoint(b => b
.When(context =>
@@ -42,15 +39,14 @@ await Define()
return Task.CompletedTask;
})
.When(context =>
- {
- return context.Logs.ToArray().Any(i =>
- i.Message.StartsWith(ErrorIngestion.LogMessages.StoppedInfrastructure));
- }, (bus, c) => bus.SendLocal(new MyMessage())
+ {
+ return context.Logs.ToArray().Any(i =>
+ i.Message.StartsWith(ErrorIngestion.LogMessages.StoppedInfrastructure));
+ }, (bus, c) => bus.SendLocal(new MyMessage())
)
.DoNotFailOnErrorMessages())
.Done(async c => await this.TryGetSingle("/api/errors") == false)
.Run();
- }
[Test]
public async Task Should_stop_ingestion_and_resume_when_more_space_is_available()
@@ -76,10 +72,7 @@ await Define()
return ingestionShutdown;
},
- (bus, c) =>
- {
- return bus.SendLocal(new MyMessage());
- })
+ (bus, c) => bus.SendLocal(new MyMessage()))
.When(c => ingestionShutdown, (session, context) =>
{
PersisterSettings.MinimumStorageLeftRequiredForIngestion = 0;
@@ -88,8 +81,6 @@ await Define()
.DoNotFailOnErrorMessages())
.Done(async c => await this.TryGetSingle("/api/errors"))
.Run();
-
-
}
public class Sender : EndpointConfigurationBuilder
@@ -101,17 +92,13 @@ public Sender() =>
c.NoRetries();
});
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
- public Task Handle(MyMessage message, IMessageHandlerContext context)
- {
- throw new ApplicationException("Big Error!");
- }
+ public Task Handle(MyMessage message, IMessageHandlerContext context) => throw new ApplicationException("Big Error!");
}
}
- public class MyMessage : ICommand
- {
- }
+ public class MyMessage : ICommand;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_custom_check_events_are_triggered.cs b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_custom_check_events_are_triggered.cs
index 01e03450cc..4259e56e52 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_custom_check_events_are_triggered.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_custom_check_events_are_triggered.cs
@@ -31,16 +31,14 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(entry.Severity, Is.EqualTo(Severity.Error), "Failed custom checks should be treated as error");
Assert.That(entry.RelatedTo.Any(item => item == "/customcheck/EventuallyFailingCustomCheck"), Is.True);
- });
+ }
}
- public class MyContext : ScenarioContext
- {
- }
+ public class MyContext : ScenarioContext;
public class EndpointWithCustomCheck : EndpointConfigurationBuilder
{
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_email_notifications_are_enabled.cs b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_email_notifications_are_enabled.cs
index 99472bb501..35c56ed7d9 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_email_notifications_are_enabled.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/CustomChecks/When_email_notifications_are_enabled.cs
@@ -50,14 +50,14 @@ await Define(c =>
var emailText = await File.ReadAllLinesAsync(emails[0]);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(emailText[0], Is.EqualTo("X-Sender: YouServiceControl@particular.net"));
Assert.That(emailText[1], Is.EqualTo("X-Receiver: WhoeverMightBeConcerned@particular.net"));
Assert.That(emailText[3], Is.EqualTo("From: YouServiceControl@particular.net"));
Assert.That(emailText[4], Is.EqualTo("To: WhoeverMightBeConcerned@particular.net"));
Assert.That(emailText[6], Is.EqualTo("Subject: [Particular.ServiceControl] health check failed"));
- });
+ }
}
class SetupNotificationSettings(IErrorMessageDataStore errorMessageDataStore) : IHostedService
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_fails.cs b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_fails.cs
index e4fd5e617f..df22f1f83a 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_fails.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_fails.cs
@@ -75,6 +75,7 @@ public ExternalProcessor() =>
publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME);
});
+ [Handler]
public class CustomCheckFailedHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(CustomCheckFailed message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_succeeds.cs b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_succeeds.cs
index 7c4e08ac52..93634225b7 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_succeeds.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_a_custom_check_succeeds.cs
@@ -70,6 +70,7 @@ public ExternalProcessor() =>
publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME);
});
+ [Handler]
public class CustomCheckSucceededHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(CustomCheckSucceeded message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_is_restored.cs b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_is_restored.cs
index 68335bc42a..84d35b7092 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_is_restored.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_is_restored.cs
@@ -67,6 +67,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(MessageFailed).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(HeartbeatRestored message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_loss_is_detected.cs b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_loss_is_detected.cs
index df7dadf9f8..1238822be9 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_loss_is_detected.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/ExternalIntegration/When_heartbeat_loss_is_detected.cs
@@ -69,6 +69,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(MessageFailed).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(HeartbeatStopped message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_critical_error_is_triggered.cs b/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_critical_error_is_triggered.cs
index ff54669f25..90e66ec00d 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_critical_error_is_triggered.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_critical_error_is_triggered.cs
@@ -43,11 +43,11 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(entry.RelatedTo.Any(item => item == "/customcheck/ServiceControl Primary Instance"), Is.True, "Event log entry should be related to the Primary instance health Custom Check");
Assert.That(entry.RelatedTo.Any(item => item.StartsWith("/endpoint/Particular.ServiceControl")), Is.True, "Event log entry should be related to the ServiceControl endpoint");
- });
+ }
}
public class MyContext : ScenarioContext
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_custom_check_fails.cs b/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_custom_check_fails.cs
index 42cd740f21..a91dc56c84 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_custom_check_fails.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/InternalCustomChecks/When_a_custom_check_fails.cs
@@ -51,16 +51,14 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(entry.Severity, Is.EqualTo(Severity.Error), "Failed custom checks should be treated as error");
Assert.That(entry.RelatedTo.Any(item => item == "/customcheck/MyCustomCheckId"), Is.True);
Assert.That(entry.RelatedTo.Any(item => item.StartsWith("/endpoint/Particular.ServiceControl")), Is.True);
- });
+ }
}
- public class MyContext : ScenarioContext
- {
- }
+ public class MyContext : ScenarioContext;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/When_a_failed_message_from_unmonitored_endpoint_is_imported.cs b/src/ServiceControl.AcceptanceTests/Monitoring/When_a_failed_message_from_unmonitored_endpoint_is_imported.cs
index 16001e392f..dcfb2ececa 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/When_a_failed_message_from_unmonitored_endpoint_is_imported.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/When_a_failed_message_from_unmonitored_endpoint_is_imported.cs
@@ -65,6 +65,7 @@ public Receiver() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MyMessageHandler(MyContext testContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_is_removed.cs b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_is_removed.cs
index 0c0ba6a88c..f23d7d6760 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_is_removed.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_is_removed.cs
@@ -28,11 +28,11 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(response.IsSuccessStatusCode, Is.True);
Assert.That(response.Content.Headers.Allow.Contains("DELETE"), Is.True);
- });
+ }
}
[Test]
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_starts_up.cs b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_starts_up.cs
index f60472145f..41f3c5641d 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_starts_up.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_starts_up.cs
@@ -31,11 +31,11 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(entry.Severity, Is.EqualTo(Severity.Info), "Endpoint startup should be treated as info");
Assert.That(entry.RelatedTo.Any(item => item == "/host/" + hostIdentifier), Is.True);
- });
+ }
}
static readonly Guid hostIdentifier = Guid.NewGuid();
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_with_heartbeat_plugin_starts_up.cs b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_with_heartbeat_plugin_starts_up.cs
index 0290332a39..ed69a55865 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_with_heartbeat_plugin_starts_up.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_endpoint_with_heartbeat_plugin_starts_up.cs
@@ -30,11 +30,11 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(endpoint.Monitored, Is.True);
Assert.That(endpoint.IsSendingHeartbeats, Is.True);
- });
+ }
}
[Test]
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_unmonitored_endpoint_is_marked_as_monitored.cs b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_unmonitored_endpoint_is_marked_as_monitored.cs
index ac8b4bbd72..73f8e53e51 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/When_an_unmonitored_endpoint_is_marked_as_monitored.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/When_an_unmonitored_endpoint_is_marked_as_monitored.cs
@@ -74,12 +74,12 @@ await Define()
var myEndpoint = endpoints.FirstOrDefault(e => e.Name == EndpointName);
Assert.That(myEndpoint, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(myEndpoint.Monitored, Is.True);
Assert.That(myEndpoint.MonitorHeartbeat, Is.True);
Assert.That(myEndpoint.IsSendingHeartbeats, Is.False);
- });
+ }
}
enum State
diff --git a/src/ServiceControl.AcceptanceTests/Monitoring/When_unmonitored_endpoint_starts_to_sends_heartbeats.cs b/src/ServiceControl.AcceptanceTests/Monitoring/When_unmonitored_endpoint_starts_to_sends_heartbeats.cs
index 1476656f47..83d8bd77aa 100644
--- a/src/ServiceControl.AcceptanceTests/Monitoring/When_unmonitored_endpoint_starts_to_sends_heartbeats.cs
+++ b/src/ServiceControl.AcceptanceTests/Monitoring/When_unmonitored_endpoint_starts_to_sends_heartbeats.cs
@@ -52,11 +52,11 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(endpoint.MonitorHeartbeat, Is.False);
Assert.That(endpoint.Monitored, Is.False);
- });
+ }
await Define()
.WithEndpoint()
@@ -70,12 +70,12 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(endpoint.MonitorHeartbeat, Is.True, "Should have heartbeat monitoring on");
Assert.That(endpoint.Monitored, Is.True, "Should be flagged as monitored");
Assert.That(endpoint.IsSendingHeartbeats, Is.True, "Should be emitting heartbeats");
- });
+ }
}
public class MyContext : ScenarioContext;
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/ExternalIntegrationAcceptanceTest.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/ExternalIntegrationAcceptanceTest.cs
index d717d22c7f..675169486e 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/ExternalIntegrationAcceptanceTest.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/ExternalIntegrationAcceptanceTest.cs
@@ -24,6 +24,7 @@ public ErrorSender() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class AHandler : IHandleMessages
{
public Task Handle(AMessage message, IMessageHandlerContext context) => Task.CompletedTask;
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_edit_is_resolved_by_retry.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_edit_is_resolved_by_retry.cs
index 6441e3a5b1..bbe93e6e09 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_edit_is_resolved_by_retry.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_edit_is_resolved_by_retry.cs
@@ -98,7 +98,7 @@ public async Task Should_publish_notification()
return true;
}).Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.ResolvedMessageId, Is.EqualTo(context.EditedMessageFailureId));
Assert.That(context.EditedMessageEditOf, Is.EqualTo(context.OriginalMessageFailureId));
@@ -107,7 +107,7 @@ public async Task Should_publish_notification()
Assert.That(context.MessageFailedFailedMessageIds, Has.Some.EqualTo(context.OriginalMessageFailureId));
Assert.That(context.RetryFailedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
Assert.That(context.MessageFailedFailedMessageIds, Has.Some.EqualTo(context.EditedMessageFailureId));
- });
+ }
}
@@ -131,7 +131,7 @@ public class MessageReceiver : EndpointConfigurationBuilder
{
public MessageReceiver() => EndpointSetup(c => c.NoRetries());
-
+ [Handler]
public class EditMessageResolutionHandler(EditMessageResolutionContext testContext)
: IHandleMessages, IHandleMessages, IHandleMessages, IHandleMessages
{
@@ -183,9 +183,7 @@ public Task Handle(MessageEditedAndRetried message, IMessageHandlerContext conte
}
}
- public class EditResolutionMessage : IMessage
- {
- }
+ public class EditResolutionMessage : IMessage;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_archived.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_archived.cs
index f902d9485a..7fd796b0d5 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_archived.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_archived.cs
@@ -63,6 +63,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(FailedMessagesArchived).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(Context testContext) : IHandleMessages
{
public Task Handle(FailedMessagesArchived message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_by_retry.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_by_retry.cs
index cce8c03e3f..cac3956868 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_by_retry.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_by_retry.cs
@@ -61,6 +61,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(FailedMessagesArchived).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(Context testContext) : IHandleMessages
{
public Task Handle(MessageFailureResolvedByRetry message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_manually.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_manually.cs
index 49aea81ae0..35edfbea62 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_manually.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_resolved_manually.cs
@@ -72,6 +72,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(MessageFailureResolvedManually).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(Context testContext) : IHandleMessages
{
public Task Handle(MessageFailureResolvedManually message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_unarchived.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_unarchived.cs
index b2b24b2460..ea3998e399 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_unarchived.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_message_is_unarchived.cs
@@ -81,6 +81,7 @@ public ExternalProcessor()
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
}
+ [Handler]
public class FailureHandler(Context testContext) : IHandleMessages
{
public Task Handle(FailedMessagesUnArchived message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_msg_is_resolved_by_edit.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_msg_is_resolved_by_edit.cs
index a34a0e3c50..68d49c0b68 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_msg_is_resolved_by_edit.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_msg_is_resolved_by_edit.cs
@@ -86,16 +86,16 @@ public async Task Should_publish_notification()
return true;
}).Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.EditedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
Assert.That(context.EditedMessageEditOf, Is.EqualTo(context.OriginalMessageFailureId));
Assert.That(context.FailedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
- });
+ }
}
- class EditMessageResolutionContext : ScenarioContext
+ internal class EditMessageResolutionContext : ScenarioContext
{
public bool OriginalMessageHandled { get; set; }
public bool EditedMessage { get; set; }
@@ -109,11 +109,12 @@ class EditMessageResolutionContext : ScenarioContext
public bool MessageFailedHandled { get; set; }
}
- class MessageReceiver : EndpointConfigurationBuilder
+ public class MessageReceiver : EndpointConfigurationBuilder
{
public MessageReceiver() => EndpointSetup(c => c.NoRetries());
- class EditMessageResolutionHandler(EditMessageResolutionContext testContext) : IHandleMessages,
+ [Handler]
+ public class EditMessageResolutionHandler(EditMessageResolutionContext testContext) : IHandleMessages,
IHandleMessages,
IHandleMessages
{
@@ -146,7 +147,7 @@ public Task Handle(MessageFailed message, IMessageHandlerContext context)
}
}
- class EditResolutionMessage : IMessage
+ internal class EditResolutionMessage : IMessage
{
public bool HasBeenEdited { get; init; }
}
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_group_is_archived.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_group_is_archived.cs
index 89535b6be2..e965aa6111 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_group_is_archived.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_group_is_archived.cs
@@ -78,6 +78,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(FailedMessagesArchived).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(Context testContext) : IHandleMessages
{
public Task Handle(FailedMessagesArchived message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_message_has_failed_detected.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_message_has_failed_detected.cs
index 6fe1140291..b07036890c 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_message_has_failed_detected.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_message_has_failed_detected.cs
@@ -46,14 +46,14 @@ public async Task Should_publish_notification()
var deserializedEvent = JsonSerializer.Deserialize(context.Event);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(deserializedEvent.FailureDetails.Exception.Message, Is.EqualTo("Faulty message"));
//These are important so check it they are set
Assert.That(deserializedEvent.MessageDetails.MessageId, Is.Not.Null);
Assert.That(deserializedEvent.SendingEndpoint.Name, Is.Not.Null);
Assert.That(deserializedEvent.ProcessingEndpoint.Name, Is.Not.Null);
- });
+ }
}
public class FailingReceiver : EndpointConfigurationBuilder
@@ -63,6 +63,7 @@ public FailingReceiver()
EndpointSetup(c => { c.Recoverability().Immediate(s => s.NumberOfRetries(2)).Delayed(s => s.NumberOfRetries(0)); });
}
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context) => throw new Exception(message.Body);
@@ -78,6 +79,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(MessageFailed).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(MessageFailed message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_reedit_solves_a_failed_msg.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_reedit_solves_a_failed_msg.cs
index 0738fcae18..d2cad9f0e2 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_reedit_solves_a_failed_msg.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_reedit_solves_a_failed_msg.cs
@@ -118,7 +118,7 @@ public async Task Should_publish_notification()
return true;
}).Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.FailedMessageFailedMessageIds.Count, Is.EqualTo(2));
Assert.That(context.FailedMessageFailedMessageIds, Is.Unique);
@@ -130,7 +130,7 @@ public async Task Should_publish_notification()
Assert.That(context.RetryFailedMessageIds, Has.Some.EqualTo(context.OriginalMessageFailureId));
Assert.That(context.EditedMessageEditOf2, Is.EqualTo(context.SecondMessageFailureId));
Assert.That(context.RetryFailedMessageIds, Has.Some.EqualTo(context.SecondMessageFailureId));
- });
+ }
}
@@ -156,7 +156,7 @@ public class MessageReceiver : EndpointConfigurationBuilder
{
public MessageReceiver() => EndpointSetup(c => c.NoRetries());
-
+ [Handler]
public class EditMessageResolutionHandler(EditMessageResolutionContext testContext)
: IHandleMessages, IHandleMessages, IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_encountered_an_error.cs b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_encountered_an_error.cs
index c4401d3d3d..ef2d140575 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_encountered_an_error.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_encountered_an_error.cs
@@ -28,6 +28,8 @@ public async Task Should_restart_dispatch_thread()
{
var externalProcessorSubscribed = false;
+ CustomizeHostBuilder = builder => builder.Services.AddSingleton();
+
CustomConfiguration = config =>
{
config.OnEndpointSubscribed((s, ctx) =>
@@ -37,8 +39,6 @@ public async Task Should_restart_dispatch_thread()
externalProcessorSubscribed = true;
}
});
-
- config.RegisterComponents(services => services.AddSingleton());
};
ExecuteWhen(() => externalProcessorSubscribed, domainEvents => domainEvents.Raise(new EndpointFailedToHeartbeat
@@ -66,11 +66,11 @@ public async Task Should_restart_dispatch_thread()
.Done(c => c.NotificationDelivered)
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.NotificationDelivered, Is.True);
Assert.That(context.Failed, Is.True);
- });
+ }
}
class FaultyPublisher(MyContext context) : IEventPublisher
@@ -103,6 +103,7 @@ public ExternalProcessor() =>
routing.RouteToEndpoint(typeof(MessageFailed).Assembly, Settings.DEFAULT_INSTANCE_NAME);
}, publisherMetadata => { publisherMetadata.RegisterPublisherFor(Settings.DEFAULT_INSTANCE_NAME); });
+ [Handler]
public class FailureHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(HeartbeatStopped message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_ServiceControl_has_started.cs b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_ServiceControl_has_started.cs
index 89bd314e1d..89681785ee 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_ServiceControl_has_started.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_ServiceControl_has_started.cs
@@ -30,8 +30,6 @@ await Define()
Assert.That(classifiers, Does.Contain(AddressOfFailingEndpointClassifier.Id), "AddressOfFailingEndpointClassifier was not found");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_archived.cs b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_archived.cs
index 119fba6195..799726d724 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_archived.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_archived.cs
@@ -234,6 +234,7 @@ public Receiver() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_retried.cs b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_retried.cs
index 1add0d0844..3b01b993e7 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_retried.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_group_is_retried.cs
@@ -83,11 +83,11 @@ await Define()
})
.Run(cancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(messageToBeArchived.Status, Is.EqualTo(FailedMessageStatus.Archived), "Non retried message should be archived");
Assert.That(messageToBeRetriedAsPartOfGroupRetry.Status, Is.EqualTo(FailedMessageStatus.Resolved), "Retried Message should not be set to Archived when group is retried");
- });
+ }
}
public class Receiver : EndpointConfigurationBuilder
@@ -99,6 +99,7 @@ public Receiver() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_message_fails_twice_with_different_exceptions.cs b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_message_fails_twice_with_different_exceptions.cs
index bf4d5c713c..3668a8b7f4 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_message_fails_twice_with_different_exceptions.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_a_message_fails_twice_with_different_exceptions.cs
@@ -56,11 +56,11 @@ await Define()
})
.Run(cancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(originalMessage, Is.Not.Null, "Original message was not received");
Assert.That(retriedMessage, Is.Not.Null, "Retried message was not received");
- });
+ }
Assert.That(originalMessage.FailureGroups, Is.Not.Null, "The original message has no failure groups");
Assert.That(retriedMessage.FailureGroups, Is.Not.Null, "The retried message has no failure groups");
@@ -68,13 +68,13 @@ await Define()
var originalExceptionAndStackTraceFailureGroupIds = originalMessage.FailureGroups.Where(x => x.Type == ExceptionTypeAndStackTraceFailureClassifier.Id).Select(x => x.Id).ToArray();
var retriedExceptionAndStackTraceFailureGroupIds = retriedMessage.FailureGroups.Where(x => x.Type == ExceptionTypeAndStackTraceFailureClassifier.Id).Select(x => x.Id).ToArray();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(originalExceptionAndStackTraceFailureGroupIds.Any(), Is.True, "The original message was not classified");
Assert.That(retriedExceptionAndStackTraceFailureGroupIds.Any(), Is.True, "The retried message was not classified");
Assert.That(retriedMessage.FailureGroups.Single(x => x.Type == MessageTypeFailureClassifier.Id).Id, Is.EqualTo(originalMessage.FailureGroups.Single(x => x.Type == MessageTypeFailureClassifier.Id).Id), $"{MessageTypeFailureClassifier.Id} FailureGroup Ids changed");
- });
+ }
foreach (var failureId in originalExceptionAndStackTraceFailureGroupIds)
{
@@ -87,6 +87,7 @@ public class MeowReceiver : EndpointConfigurationBuilder
{
public MeowReceiver() => EndpointSetup(c => { c.NoDelayedRetries(); });
+ [Handler]
public class FailingMessageHandler(MeowContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_message_groups_are_sorted_by_a_web_api_call.cs b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_message_groups_are_sorted_by_a_web_api_call.cs
index ac6e0b85e5..ed87bf8420 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_message_groups_are_sorted_by_a_web_api_call.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_message_groups_are_sorted_by_a_web_api_call.cs
@@ -21,12 +21,12 @@ public async Task All_messages_in_group_should_be_sorted_by_time_sent()
{
var errors = await SortTest("time_sent");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors[0].MessageId, Does.StartWith("1"));
Assert.That(errors[1].MessageId, Does.StartWith("2"));
Assert.That(errors[2].MessageId, Does.StartWith("3"));
- });
+ }
}
[Test]
@@ -34,12 +34,12 @@ public async Task All_messages_in_group_should_be_sorted_by_message_type()
{
var errors = await SortTest("message_type");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors[0].MessageId, Does.StartWith("1"));
Assert.That(errors[1].MessageId, Does.StartWith("2"));
Assert.That(errors[2].MessageId, Does.StartWith("3"));
- });
+ }
}
async Task> SortTest(string sortProperty)
@@ -126,8 +126,6 @@ OutgoingMessage CreateTransportMessage(int i)
}
}
- public class MyContext : ScenarioContext
- {
- }
+ public class MyContext : ScenarioContext;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_messages_have_failed.cs b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_messages_have_failed.cs
index 6467843835..c523d8111d 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_messages_have_failed.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_messages_have_failed.cs
@@ -68,45 +68,46 @@ public async Task Should_be_grouped()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(exceptionTypeAndStackTraceGroups.Count, Is.EqualTo(2), "There should be 2 Exception Type and Stack Trace Groups");
Assert.That(messageTypeGroups.Count, Is.EqualTo(2), "There should be 2 Message Type Groups");
- });
+ }
defaultGroups.ForEach(g => Console.WriteLine(JsonSerializer.Serialize(g)));
Assert.That(exceptionTypeAndStackTraceGroups.Select(g => g.Id).Except(defaultGroups.Select(g => g.Id)), Is.Empty, "/api/recoverability/groups did not retrieve Exception Type and Stack Trace Group");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(messageTypeGroups.Select(g => g.Id).ToArray(), Does.Contain(DeterministicGuid.MakeId(MessageTypeFailureClassifier.Id, typeof(MyMessageA).FullName).ToString()));
Assert.That(failedMessageA.UniqueMessageId, Is.EqualTo(context.UniqueMessageIdA));
Assert.That(failedMessageA.FailureGroups, Is.Not.Empty, "MyMessageA should have failure groups");
- });
- Assert.Multiple(() =>
+ }
+ using (Assert.EnterMultipleScope())
{
Assert.That(failedMessageA.FailureGroups.Count(g => g.Type == ExceptionTypeAndStackTraceFailureClassifier.Id), Is.EqualTo(1), $"{ExceptionTypeAndStackTraceFailureClassifier.Id} FailureGroup was not created");
Assert.That(failedMessageA.FailureGroups.Count(g => g.Type == MessageTypeFailureClassifier.Id), Is.EqualTo(1), $"{MessageTypeFailureClassifier.Id} FailureGroup was not created");
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(messageTypeGroups.Select(g => g.Id).ToArray(), Does.Contain(DeterministicGuid.MakeId(MessageTypeFailureClassifier.Id, typeof(MyMessageB).FullName).ToString()));
Assert.That(failedMessageB.UniqueMessageId, Is.EqualTo(context.UniqueMessageIdB));
Assert.That(failedMessageB.FailureGroups, Is.Not.Empty, "MyMessageB should have failure groups");
- });
- Assert.Multiple(() =>
+ }
+ using (Assert.EnterMultipleScope())
{
Assert.That(failedMessageB.FailureGroups.Count(g => g.Type == ExceptionTypeAndStackTraceFailureClassifier.Id), Is.EqualTo(1), $"{ExceptionTypeAndStackTraceFailureClassifier.Id} FailureGroup was not created");
Assert.That(failedMessageB.FailureGroups.Count(g => g.Type == MessageTypeFailureClassifier.Id), Is.EqualTo(1), $"{MessageTypeFailureClassifier.Id} FailureGroup was not created");
- });
+ }
}
public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup(c => { c.NoRetries(); });
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings) :
IHandleMessages,
IHandleMessages
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_two_similar_messages_have_failed.cs b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_two_similar_messages_have_failed.cs
index ec49bc0613..61829e7e3a 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_two_similar_messages_have_failed.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/Groups/When_two_similar_messages_have_failed.cs
@@ -66,26 +66,26 @@ await Define()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(exceptionTypeAndStackTraceGroups, Is.Not.Null, "Exception Type And Stack Trace Group should be created");
Assert.That(messageTypeGroups, Is.Not.Null, "Message Type Group should be created");
Assert.That(firstFailure, Is.Not.Null, "The first failure message should be created");
Assert.That(secondFailure, Is.Not.Null, "The second failure message should be created");
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(exceptionTypeAndStackTraceGroups.Count, Is.EqualTo(1), "There should only be one Exception Type And Stack Trace Group");
Assert.That(messageTypeGroups.Count, Is.EqualTo(1), "There should only be one Message Type Group");
- });
+ }
var failureGroup = exceptionTypeAndStackTraceGroups.First();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failureGroup.Count, Is.EqualTo(2), "Exception Type And Stack Trace Group should have both messages in it");
Assert.That(messageTypeGroups.First().Count, Is.EqualTo(2), "Message Type Group should have both messages in it");
- });
+ }
var failureTimes = firstFailure.ProcessingAttempts
.Union(secondFailure.ProcessingAttempts)
@@ -93,17 +93,18 @@ await Define()
.Select(x => x.FailureDetails.TimeOfFailure)
.ToList();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failureGroup.First, Is.EqualTo(failureTimes.Min()), "Failure Group should start when the earliest failure occurred");
Assert.That(failureGroup.Last, Is.EqualTo(failureTimes.Max()), "Failure Group should end when the latest failure occurred");
- });
+ }
}
public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup(c => { c.NoRetries(); });
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/ErrorImportPerformanceTests.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/ErrorImportPerformanceTests.cs
index 80ff46269c..72fe25eff0 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/ErrorImportPerformanceTests.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/ErrorImportPerformanceTests.cs
@@ -43,6 +43,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup(c => c.Recoverability().Delayed(s => s.NumberOfRetries(0)));
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context) => throw new Exception("Simulated exception");
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_failed_message_is_pending_retry.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_failed_message_is_pending_retry.cs
index 169039b832..9d1e7ff00f 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_failed_message_is_pending_retry.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_failed_message_is_pending_retry.cs
@@ -75,6 +75,7 @@ class SendMessageAtStart : FeatureStartupTask
protected override Task OnStop(IMessageSession session, CancellationToken cancellationToken = default) => Task.CompletedTask;
}
+ [Handler]
public class MyMessageHandler(Context scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_invalid_id_is_sent_to_retry.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_invalid_id_is_sent_to_retry.cs
index 77077df68c..068f7b0dda 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_invalid_id_is_sent_to_retry.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_invalid_id_is_sent_to_retry.cs
@@ -51,6 +51,7 @@ public FailureEndpoint() =>
c.NoRetries();
});
+ [Handler]
public class MessageThatWillFailHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
@@ -78,8 +79,6 @@ public class MyContext : ScenarioContext
}
- public class MessageThatWillFail : ICommand
- {
- }
+ public class MessageThatWillFail : ICommand;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_message_has_failed.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_message_has_failed.cs
index 9b9537e7a8..fed08d7135 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_message_has_failed.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_message_has_failed.cs
@@ -48,7 +48,7 @@ public async Task Should_be_imported_and_accessible_via_the_rest_api()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failedMessage.UniqueMessageId, Is.EqualTo(context.UniqueMessageId));
@@ -57,7 +57,7 @@ public async Task Should_be_imported_and_accessible_via_the_rest_api()
"The returned message should match the processed one");
Assert.That(failedMessage.Status, Is.EqualTo(FailedMessageStatus.Unresolved), "Status should be set to unresolved");
Assert.That(failedMessage.ProcessingAttempts.Count, Is.EqualTo(1), "Failed count should be 1");
- });
+ }
Assert.That(failedMessage.ProcessingAttempts.Single().FailureDetails.Exception.Message, Is.EqualTo("Simulated exception"),
"Exception message should be captured");
}
@@ -139,13 +139,13 @@ public async Task Should_be_listed_in_the_error_list()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
// The message Ids may contain a \ if they are from older versions.
Assert.That(failure.MessageId.Replace(@"\", "-"), Is.EqualTo(context.MessageId), "The returned message should match the processed one");
Assert.That(failure.Status, Is.EqualTo(FailedMessageStatus.Unresolved), "Status of new messages should be failed");
Assert.That(failure.NumberOfProcessingAttempts, Is.EqualTo(1), "One attempt should be stored");
- });
+ }
}
[Test]
@@ -164,13 +164,13 @@ public async Task Should_be_listed_in_the_messages_list(CancellationToken cancel
})
.Run(cancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failure.Id, Is.EqualTo(context.UniqueMessageId), "The unique id should be returned");
Assert.That(failure.Status, Is.EqualTo(MessageStatus.Failed), "Status of new messages should be failed");
Assert.That(failure.SendingEndpoint.Name, Is.EqualTo(context.EndpointNameOfReceivingEndpoint));
Assert.That(failure.ReceivingEndpoint.Name, Is.EqualTo(context.EndpointNameOfReceivingEndpoint));
- });
+ }
}
[Test]
@@ -188,13 +188,13 @@ public async Task Should_add_an_event_log_item()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(entry.Severity, Is.EqualTo(Severity.Error), "Failures should be treated as errors");
Assert.That(entry.Description, Does.Contain("exception"), "For failed messages, the description should contain the exception information");
Assert.That(entry.RelatedTo.Any(item => item == "/message/" + context.UniqueMessageId), Is.True, "Should contain the api url to retrieve additional details about the failed message");
Assert.That(entry.RelatedTo.Any(item => item == "/endpoint/" + context.EndpointNameOfReceivingEndpoint), Is.True, "Should contain the api url to retrieve additional details about the endpoint where the message failed");
- });
+ }
}
[Test]
@@ -349,6 +349,7 @@ public Receiver() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MyMessageHandler(
MyContext testContext,
IReadOnlySettings settings,
@@ -375,6 +376,7 @@ public ReceiverWithCustomSerializer() =>
c.UseSerialization();
});
+ [Handler]
public class MyMessageHandler(
MyContext testContext,
IReadOnlySettings settings,
@@ -429,6 +431,7 @@ public FailingEndpoint() =>
c.NoRetries();
});
+ [Handler]
public class MyMessageHandler(QueueSearchContext queueSearchContext) : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_queue_and_timeframe.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_queue_and_timeframe.cs
index 490774404c..1b435a9f1b 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_queue_and_timeframe.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_queue_and_timeframe.cs
@@ -67,6 +67,7 @@ public Failing() =>
c.NoOutbox();
});
+ [Handler]
public class MyMessageHandler(
Context scenarioContext,
IReadOnlySettings settings,
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_selection.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_selection.cs
index f4af037187..ec46f77dad 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_selection.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_resolved_by_selection.cs
@@ -59,6 +59,7 @@ public FailingEndpoint() =>
c.NoOutbox();
});
+ [Handler]
public class MyMessageHandler(
Context scenarioContext,
IReadOnlySettings settings,
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_again.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_again.cs
index 39c67297e9..9232262b09 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_again.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_again.cs
@@ -55,6 +55,7 @@ public FailingEndpoint() =>
c.NoOutbox();
});
+ [Handler]
public class MyMessageHandler(
Context scenarioContext,
IReadOnlySettings settings,
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_by_queue_and_timeframe.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_by_queue_and_timeframe.cs
index bc6a946bb8..5e5a38396f 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_by_queue_and_timeframe.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_pending_retry_is_retried_by_queue_and_timeframe.cs
@@ -58,6 +58,7 @@ public Failing() =>
c.NoOutbox();
});
+ [Handler]
public class MyMessageHandler(
Context scenarioContext,
IReadOnlySettings settings,
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_fails_to_be_sent.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_fails_to_be_sent.cs
index bb3c331e94..e0cf79a6fa 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_fails_to_be_sent.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_fails_to_be_sent.cs
@@ -64,17 +64,17 @@ await Define()
})
.Run(cancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(decomissionedFailure, Is.Not.Null);
Assert.That(successfullyRetried, Is.Not.Null);
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(decomissionedFailure.Status, Is.EqualTo(FailedMessageStatus.Unresolved));
Assert.That(successfullyRetried.Status, Is.EqualTo(FailedMessageStatus.Resolved));
- });
+ }
}
public class FailureEndpoint : EndpointConfigurationBuilder
@@ -87,6 +87,7 @@ public FailureEndpoint() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MessageThatWillFailHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_fails.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_fails.cs
index 96601bb247..11480f1947 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_fails.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_fails.cs
@@ -107,6 +107,7 @@ public FailureEndpoint() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_is_successful.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_is_successful.cs
index 39bf10d17d..2df42f9017 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_is_successful.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_retry_for_a_failed_message_is_successful.cs
@@ -49,11 +49,11 @@ await Define()
})
.Run(cancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failure.Status, Is.EqualTo(FailedMessageStatus.Resolved));
Assert.That(eventLogItems.Any(item => item.Description.Equals("Failed message resolved by retry") && item.RelatedTo.Contains("/message/" + failure.UniqueMessageId)), Is.True);
- });
+ }
}
[Test]
@@ -208,6 +208,7 @@ public FailureEndpoint() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MyMessageHandler(
MyContext scenarioContext,
IReadOnlySettings settings,
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_all_messages_are_retried.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_all_messages_are_retried.cs
index c8d10f4647..f194b25fc8 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_all_messages_are_retried.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_all_messages_are_retried.cs
@@ -83,11 +83,11 @@ await Define()
})
.Run(cancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(messageToBeArchived.Status, Is.EqualTo(FailedMessageStatus.Archived), "Non retried message should be archived");
Assert.That(messageToBeRetriedAsPartOfRetryAll.Status, Is.EqualTo(FailedMessageStatus.Resolved), "Retried Message should not be set to Archived when group is retried");
- });
+ }
}
public class Receiver : EndpointConfigurationBuilder
@@ -99,6 +99,7 @@ public Receiver() =>
c.ReportSuccessfulRetriesToServiceControl();
});
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_an_event_with_multiple_subscribers_fails.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_an_event_with_multiple_subscribers_fails.cs
index 0dcf0dbd37..7c5b724be7 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_an_event_with_multiple_subscribers_fails.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_an_event_with_multiple_subscribers_fails.cs
@@ -33,11 +33,11 @@ await Define()
var subscriber1FailedMessage = failedMessages.SingleOrDefault(msg => msg.QueueAddress.Contains("subscriber1"));
var subscriber2FailedMessage = failedMessages.SingleOrDefault(msg => msg.QueueAddress.Contains("subscriber2"));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(subscriber1FailedMessage, Is.Not.Null, "Subscriber1 did not report failed message");
Assert.That(subscriber2FailedMessage, Is.Not.Null, "Subscriber2 did not report failed message");
- });
+ }
Assert.That(subscriber2FailedMessage, Is.Not.SameAs(subscriber1FailedMessage), "There should be two distinct failed messages");
}
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_errors_with_same_uniqueid_are_imported.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_errors_with_same_uniqueid_are_imported.cs
index e777f23e93..dc725480c0 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_errors_with_same_uniqueid_are_imported.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_errors_with_same_uniqueid_are_imported.cs
@@ -24,15 +24,15 @@ public async Task The_import_should_deduplicate_on_TimeOfFailure()
{
var criticalErrorExecuted = false;
- SetSettings = settings => { settings.MaximumConcurrencyLevel = 10; };
+ SetSettings = settings => settings.MaximumConcurrencyLevel = 10;
+ CustomizeHostBuilder = builder => builder.Services.AddSingleton();
CustomConfiguration = config =>
{
- config.DefineCriticalErrorAction((_, __) =>
+ config.DefineCriticalErrorAction((_, _) =>
{
criticalErrorExecuted = true;
return Task.CompletedTask;
});
- config.RegisterComponents(services => services.AddSingleton());
};
FailedMessage failure = null;
@@ -55,18 +55,18 @@ public async Task The_import_should_deduplicate_on_TimeOfFailure()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(criticalErrorExecuted, Is.False);
Assert.That(failure, Is.Not.Null);
- });
+ }
var attempts = failure.ProcessingAttempts;
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(attempts, Has.Count.EqualTo(2));
Assert.That(attempts.Select(a => a.AttemptedAt), Is.EquivalentTo(context.FailureTimes));
- });
+ }
}
class CounterEnricher(MyContext testContext) : IEnrichImportedErrorMessages
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_is_imported.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_is_imported.cs
index 07fbf69e09..3eac7a53a4 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_is_imported.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_is_imported.cs
@@ -50,7 +50,7 @@ public async Task Should_be_accessible_via_the_rest_api()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failedMessage.MessageId, Is.EqualTo(context.MessageId));
Assert.That(failedMessage.Status, Is.EqualTo(MessageStatus.Failed));
@@ -72,16 +72,16 @@ public async Task Should_be_accessible_via_the_rest_api()
Assert.That(failedMessage.ProcessingTime, Is.EqualTo(TimeSpan.Zero), "Processing time should not be calculated");
Assert.That(failedMessage.CriticalTime, Is.EqualTo(TimeSpan.Zero), "Critical time should be not calculated");
Assert.That(failedMessage.MessageIntent, Is.EqualTo(MessageIntent.Send), "Message intent should be set");
- });
+ }
var bodyAsString = Encoding.UTF8.GetString(body);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(bodyAsString, Does.Contain(Payload), bodyAsString);
Assert.That(failedMessage.BodySize, Is.EqualTo(body.Length));
Assert.That(failedMessage.Headers.Any(h => h.Key == Headers.MessageId), Is.True);
- });
+ }
}
public class Sender : EndpointConfigurationBuilder
@@ -104,6 +104,7 @@ public Receiver() =>
recoverability.Delayed(x => x.NumberOfRetries(0));
});
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_searched_by_body_content.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_searched_by_body_content.cs
index 6494f729c0..6ed34157e2 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_searched_by_body_content.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_failed_message_searched_by_body_content.cs
@@ -75,11 +75,11 @@ public async Task Should_not_be_found_when_fulltext_search_disabled()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.MessageIngested, Is.True);
Assert.That(context.MessageFound, Is.False);
- });
+ }
}
public class Sender : EndpointConfigurationBuilder
@@ -97,6 +97,7 @@ public class Receiver : EndpointConfigurationBuilder
public Receiver() =>
EndpointSetup(c => c.NoRetries());
+ [Handler]
public class MyMessageHandler(MyContext scenarioContext) : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_fails_a_retry_with_a_redirect.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_fails_a_retry_with_a_redirect.cs
index 462583791d..b50c2c5bf6 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_fails_a_retry_with_a_redirect.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_fails_a_retry_with_a_redirect.cs
@@ -59,20 +59,21 @@ await Define()
Assert.That(failedMessages, Is.Not.Null);
Assert.That(failedMessages, Is.Not.Empty);
- Assert.That(failedMessages.Count, Is.EqualTo(1));
+ Assert.That(failedMessages, Has.Count.EqualTo(1));
var failedMessageView = failedMessages.Single();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failedMessageView.NumberOfProcessingAttempts, Is.EqualTo(2));
Assert.That(failedMessageView.Status, Is.EqualTo(FailedMessageStatus.Unresolved));
- });
+ }
}
- class OriginalEndpoint : EndpointConfigurationBuilder
+ public class OriginalEndpoint : EndpointConfigurationBuilder
{
public OriginalEndpoint() => EndpointSetup(c => c.NoRetries());
+ [Handler]
public class MessageToRetryHandler(
Context scenarioContext,
IReadOnlySettings settings,
@@ -88,10 +89,11 @@ public Task Handle(MessageToRetry message, IMessageHandlerContext context)
}
}
- class NewEndpoint : EndpointConfigurationBuilder
+ public class NewEndpoint : EndpointConfigurationBuilder
{
public NewEndpoint() => EndpointSetup(c => { c.NoRetries(); });
+ [Handler]
public class MessageToRetryHandler(Context testContext) : IHandleMessages
{
public Task Handle(MessageToRetry message, IMessageHandlerContext context)
@@ -102,7 +104,7 @@ public Task Handle(MessageToRetry message, IMessageHandlerContext context)
}
}
- class Context : ScenarioContext
+ internal class Context : ScenarioContext
{
public string FromAddress { get; set; }
public string ToAddress { get; set; }
@@ -110,6 +112,6 @@ class Context : ScenarioContext
public bool ProcessedAgain { get; set; }
}
- class MessageToRetry : ICommand;
+ internal class MessageToRetry : ICommand;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_is_retried.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_is_retried.cs
index 5d17bd1370..d373dcee4d 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_is_retried.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_message_is_retried.cs
@@ -56,6 +56,7 @@ public class FromEndpoint : EndpointConfigurationBuilder
{
public FromEndpoint() => EndpointSetup(c => { c.NoRetries(); });
+ [Handler]
public class MessageToRetryHandler(
Context testContext,
IReadOnlySettings settings,
@@ -75,6 +76,7 @@ public class ToNewEndpoint : EndpointConfigurationBuilder
{
public ToNewEndpoint() => EndpointSetup();
+ [Handler]
public class MessageToRetryHandler(Context testContext) : IHandleMessages
{
public Task Handle(MessageToRetry message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_changed.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_changed.cs
index 2e6f63d2a2..3eea0b3a38 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_changed.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_changed.cs
@@ -44,13 +44,13 @@ public async Task Should_be_successfully_updated()
var response = context.Response;
Assert.That(response.Count, Is.EqualTo(1), "Expected only 1 redirect");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(response[0].message_redirect_id, Is.EqualTo(messageRedirectId), "Message Redirect Id mismatch");
Assert.That(response[0].from_physical_address, Is.EqualTo(redirect.fromphysicaladdress), "From physical address mismatch");
Assert.That(response[0].to_physical_address, Is.EqualTo(newTo), "To physical address mismatch");
Assert.That(response[0].last_modified, Is.GreaterThan(context.CreatedAt), "Last modified was not updated");
- });
+ }
}
[Test]
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_created.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_created.cs
index 16a6e66e55..2698b984fb 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_created.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_created.cs
@@ -34,13 +34,13 @@ await Define()
}).Run();
Assert.That(response.Count, Is.EqualTo(1), "Expected 1 redirect to be created");
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(response[0].message_redirect_id, Is.EqualTo(DeterministicGuid.MakeId(redirect.fromphysicaladdress)), "Message Redirect Id mismatch");
Assert.That(response[0].from_physical_address, Is.EqualTo(redirect.fromphysicaladdress), "From physical address mismatch");
Assert.That(response[0].to_physical_address, Is.EqualTo(redirect.tophysicaladdress), "To physical address mismatch");
Assert.That(response[0].last_modified, Is.GreaterThan(DateTime.MinValue), "Last modified was not set");
- });
+ }
}
[Test]
@@ -154,8 +154,6 @@ await Define()
}).Run();
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_removed.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_removed.cs
index d2ab82b30f..3d75f73e08 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_removed.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_a_redirect_is_removed.cs
@@ -37,8 +37,6 @@ await Define()
Assert.That(response, Is.Empty, "Expected no redirects after delete");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_no_redirects_have_been_created.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_no_redirects_have_been_created.cs
index a4667e5653..0562e43916 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_no_redirects_have_been_created.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageRedirects/When_no_redirects_have_been_created.cs
@@ -25,8 +25,6 @@ await Define()
Assert.That(response, Is.Empty, "Expected 0 redirects to be created");
}
- public class Context : ScenarioContext
- {
- }
+ public class Context : ScenarioContext;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_and_succeeds_with_a_reply.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_and_succeeds_with_a_reply.cs
index c68194ebc5..5b87a5aaf9 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_and_succeeds_with_a_reply.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_and_succeeds_with_a_reply.cs
@@ -48,22 +48,18 @@ public async Task The_reply_should_go_to_the_correct_endpoint(CancellationToken
Assert.That(context.ReplyHandledBy, Is.EqualTo("Originating Endpoint"), "Reply handled by incorrect endpoint");
}
- class OriginalMessage : IMessage
- {
- }
+ internal class OriginalMessage : IMessage;
- class ReplyMessage : IMessage
- {
- }
+ internal class ReplyMessage : IMessage;
- class RetryReplyContext : ScenarioContext
+ internal class RetryReplyContext : ScenarioContext
{
public bool RetryIssued { get; set; }
public string UniqueMessageId { get; set; }
public string ReplyHandledBy { get; set; }
}
- class Originator : EndpointConfigurationBuilder
+ public class Originator : EndpointConfigurationBuilder
{
public Originator() => EndpointSetup(c =>
{
@@ -71,6 +67,7 @@ public Originator() => EndpointSetup(c =>
routing.RouteToEndpoint(typeof(OriginalMessage), typeof(Receiver));
});
+ [Handler]
public class ReplyMessageHandler(RetryReplyContext testContext) : IHandleMessages
{
public Task Handle(ReplyMessage message, IMessageHandlerContext context)
@@ -81,10 +78,11 @@ public Task Handle(ReplyMessage message, IMessageHandlerContext context)
}
}
- class Receiver : EndpointConfigurationBuilder
+ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup(c => c.NoRetries());
+ [Handler]
public class OriginalMessageHandler(RetryReplyContext testContext, IReadOnlySettings settings)
: IHandleMessages
{
@@ -103,6 +101,7 @@ public Task Handle(OriginalMessage message, IMessageHandlerContext context)
}
}
+ [Handler]
public class ReplyMessageHandler(RetryReplyContext testContext) : IHandleMessages
{
public Task Handle(ReplyMessage message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_with_a_replyTo_header.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_with_a_replyTo_header.cs
index cd054953a6..d8c122bc02 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_with_a_replyTo_header.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_is_retried_with_a_replyTo_header.cs
@@ -37,9 +37,7 @@ public async Task The_header_should_not_be_changed()
Assert.That(context.ReceivedReplyToAddress, Is.EqualTo(context.ReplyToAddress));
}
- class OriginalMessage : IMessage
- {
- }
+ class OriginalMessage : IMessage;
class ReplyToContext : ScenarioContext
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_without_a_correlationid_header_is_retried.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_without_a_correlationid_header_is_retried.cs
index 1426e3133d..ded8d350fb 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_without_a_correlationid_header_is_retried.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_message_without_a_correlationid_header_is_retried.cs
@@ -47,26 +47,25 @@ public async Task The_successful_retry_should_succeed()
Assert.That(context.RetryHandled, Is.True, "Retry not handled correctly");
}
- class MyMessage : IMessage
- {
- }
+ internal class MyMessage : IMessage;
- class MyContext : ScenarioContext
+ internal class MyContext : ScenarioContext
{
public string UniqueMessageId { get; set; }
public bool RetryIssued { get; set; }
public bool RetryHandled { get; set; }
}
- class Receiver : EndpointConfigurationBuilder
+ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() =>
EndpointSetup(c =>
{
c.NoRetries();
- c.RegisterComponents(services => services.AddSingleton());
+ c.RegisterMessageMutator(new CorrelationIdRemover());
});
+ [Handler]
public class MyMessageHandler(MyContext testContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_native_integration_message_is_retried.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_native_integration_message_is_retried.cs
index c3cfea7d08..e96f1479aa 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_a_native_integration_message_is_retried.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_a_native_integration_message_is_retried.cs
@@ -34,11 +34,11 @@ public async Task Should_not_corrupt_headers()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.Headers.ContainsKey(Headers.MessageIntent), Is.False, "Should not add the intent header");
Assert.That(context.Headers.ContainsKey("NServiceBus.NonDurableMessage"), Is.False, "Should not add the non-durable header");
- });
+ }
}
class TestContext : ScenarioContext
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs
index d668ba2a6d..8b68a22c8e 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs
@@ -104,7 +104,7 @@ public async Task A_new_message_failure_is_created()
var editedMessageBody = JsonSerializer.Deserialize(context.EditedMessageFailure.ProcessingAttempts.Last().MessageMetadata["MsgFullText"].ToString());
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.OriginalMessageFailure.Id, Is.Not.EqualTo(context.EditedMessageFailure.Id));
Assert.That(context.OriginalMessageFailure.UniqueMessageId, Is.Not.EqualTo(context.EditedMessageFailure.UniqueMessageId));
@@ -118,10 +118,10 @@ public async Task A_new_message_failure_is_created()
Assert.That(context.MessageFailedIds, Is.Unique);
Assert.That(context.MessageFailedIds, Has.Some.EqualTo(context.OriginalMessageFailureId));
Assert.That(context.MessageFailedIds, Has.Some.EqualTo(context.EditedMessageFailureId));
- });
+ }
}
- class EditMessageFailureContext : ScenarioContext
+ internal class EditMessageFailureContext : ScenarioContext
{
public bool OriginalMessageHandled { get; set; }
public bool EditedMessage { get; set; }
@@ -136,11 +136,12 @@ class EditMessageFailureContext : ScenarioContext
public List MessageFailedIds { get; } = [];
}
- class FailingEditedMessageReceiver : EndpointConfigurationBuilder
+ public class FailingEditedMessageReceiver : EndpointConfigurationBuilder
{
public FailingEditedMessageReceiver() => EndpointSetup(c => { c.NoRetries(); });
- class FailingMessageHandler(EditMessageFailureContext testContext)
+ [Handler]
+ public class FailingMessageHandler(EditMessageFailureContext testContext)
: IHandleMessages, IHandleMessages
{
public Task Handle(FailingMessage message, IMessageHandlerContext context)
@@ -169,7 +170,7 @@ public Task Handle(ServiceControl.Contracts.MessageFailed message, IMessageHandl
}
}
- class FailingMessage : IMessage
+ internal class FailingMessage : IMessage
{
public bool HasBeenEdited { get; init; }
public string MessageInternalId { get; init; }
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_body.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_body.cs
index 8a9c636eee..950045b524 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_body.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_body.cs
@@ -63,16 +63,16 @@ public async Task A_new_message_with_edited_body_is_sent()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.EditedMessageProperty, Is.EqualTo("StarWars rocks"));
Assert.That(context.EditedMessageId, Is.Not.EqualTo(context.OriginalMessageId));
Assert.That(context.OriginalMessageFailure.Status, Is.EqualTo(FailedMessageStatus.Resolved));
Assert.That(context.EditedMessageHeaders, Has.No.Member("NServiceBus.ExceptionInfo.StackTrace"));
- });
+ }
}
- class EditedMessageReceiver : EndpointConfigurationBuilder
+ public class EditedMessageReceiver : EndpointConfigurationBuilder
{
public EditedMessageReceiver() =>
EndpointSetup(c =>
@@ -80,7 +80,8 @@ public EditedMessageReceiver() =>
c.NoRetries();
});
- class EditedMessageHandler(EditMessageContext testContext, IReadOnlySettings settings)
+ [Handler]
+ public class EditedMessageHandler(EditMessageContext testContext, IReadOnlySettings settings)
: IHandleMessages
{
public Task Handle(EditMessage message, IMessageHandlerContext context)
@@ -101,7 +102,7 @@ public Task Handle(EditMessage message, IMessageHandlerContext context)
}
}
- class EditMessageContext : ScenarioContext
+ internal class EditMessageContext : ScenarioContext
{
public bool EditedMessage { get; set; }
public string UniqueMessageId { get; set; }
@@ -112,7 +113,7 @@ class EditMessageContext : ScenarioContext
public HashSet EditedMessageHeaders { get; set; }
}
- class EditMessage : IMessage
+ internal class EditMessage : IMessage
{
public string SomeProperty { get; set; }
}
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_headers.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_headers.cs
index 113d45a820..f6d7acd270 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_headers.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_editing_message_headers.cs
@@ -62,16 +62,16 @@ public async Task A_new_message_with_edited_headers_is_sent()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.EditedMessageId, Is.Not.EqualTo(context.OriginalMessageId));
Assert.That(context.OriginalMessageFailure.Status, Is.EqualTo(FailedMessageStatus.Resolved));
Assert.That(context.EditedMessageHeaders["AcceptanceTest.NewHeader"], Is.EqualTo("42"));
Assert.That(context.EditedMessageHeaders["ServiceControl.EditOf"], Is.EqualTo(context.UniqueMessageId));
- });
+ }
}
- class EditedMessageReceiver : EndpointConfigurationBuilder
+ public class EditedMessageReceiver : EndpointConfigurationBuilder
{
public EditedMessageReceiver() =>
EndpointSetup(c =>
@@ -79,7 +79,8 @@ public EditedMessageReceiver() =>
c.NoRetries();
});
- class EditedMessageHandler(EditMessageContext testContext, IReadOnlySettings settings)
+ [Handler]
+ public class EditedMessageHandler(EditMessageContext testContext, IReadOnlySettings settings)
: IHandleMessages
{
public Task Handle(EditMessage message, IMessageHandlerContext context)
@@ -99,7 +100,7 @@ public Task Handle(EditMessage message, IMessageHandlerContext context)
}
}
- class EditMessageContext : ScenarioContext
+ internal class EditMessageContext : ScenarioContext
{
public bool EditedMessage { get; set; }
public string UniqueMessageId { get; set; }
@@ -109,6 +110,6 @@ class EditMessageContext : ScenarioContext
public FailedMessage OriginalMessageFailure { get; set; }
}
- class EditMessage : IMessage;
+ internal class EditMessage : IMessage;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_retry_is_confirmed.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_retry_is_confirmed.cs
index 9e5f187aaf..e1a494e723 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_retry_is_confirmed.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_retry_is_confirmed.cs
@@ -54,14 +54,14 @@ public async Task Should_mark_message_as_successfully_resolved()
Assert.That(context.MessagesView.Count, Is.EqualTo(1));
var failedMessage = context.MessagesView.Single();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(failedMessage.Status, Is.EqualTo(FailedMessageStatus.Resolved));
Assert.That(failedMessage.NumberOfProcessingAttempts, Is.EqualTo(1));
- });
+ }
}
- class Context : ScenarioContext, ISequenceContext
+ internal class Context : ScenarioContext, ISequenceContext
{
public bool ThrowOnHandler { get; set; } = true;
public bool ReceivedRetry { get; set; }
@@ -69,11 +69,12 @@ class Context : ScenarioContext, ISequenceContext
public List MessagesView { get; set; }
}
- class RetryingEndpoint : EndpointConfigurationBuilder
+ public class RetryingEndpoint : EndpointConfigurationBuilder
{
public RetryingEndpoint() => EndpointSetup(c => c.NoRetries());
- class RetryMessageHandler(Context testContext) : IHandleMessages
+ [Handler]
+ public class RetryMessageHandler(Context testContext) : IHandleMessages
{
public Task Handle(RetryMessage message, IMessageHandlerContext context)
{
@@ -89,6 +90,6 @@ public Task Handle(RetryMessage message, IMessageHandlerContext context)
}
}
- class RetryMessage : IMessage;
+ internal class RetryMessage : IMessage;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_single_message_fails_in_batch.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_single_message_fails_in_batch.cs
index a89013e2d4..1e90dac10b 100644
--- a/src/ServiceControl.AcceptanceTests/Recoverability/When_single_message_fails_in_batch.cs
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_single_message_fails_in_batch.cs
@@ -24,14 +24,11 @@ class When_single_message_fails_in_batch : AcceptanceTest
public async Task Should_import_all_messages()
{
//Make sure the error import attempt fails
- CustomConfiguration = config => { config.RegisterComponents(services => services.AddSingleton()); };
+ CustomizeHostBuilder = builder => builder.Services.AddSingleton();
var maximumConcurrencyLevel = 5;
- SetSettings = settings =>
- {
- settings.MaximumConcurrencyLevel = maximumConcurrencyLevel;
- };
+ SetSettings = settings => settings.MaximumConcurrencyLevel = maximumConcurrencyLevel;
await Define(ctx =>
{
diff --git a/src/ServiceControl.AcceptanceTests/RootControllerTests.cs b/src/ServiceControl.AcceptanceTests/RootControllerTests.cs
index a9f1f61898..3d99e89cdb 100644
--- a/src/ServiceControl.AcceptanceTests/RootControllerTests.cs
+++ b/src/ServiceControl.AcceptanceTests/RootControllerTests.cs
@@ -47,14 +47,14 @@ public async Task Should_gather_remote_data()
var config1Str = config1.ToString();
var config2Str = config2.ToString();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(config1Str, Is.EqualTo(config2Str));
Assert.That(config1["api_uri"].GetValue(), Is.EqualTo(baseAddress));
Assert.That(config1["status"].GetValue(), Is.EqualTo("online"));
Assert.That(config1["version"].GetValue(), Does.Match(@"^\d+\.\d+\.\d+(-[\w\d\.\-]+)?$"));
- });
+ }
Assert.That(config1Str, Contains.Substring(serviceName));
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs b/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs
index a25a453d6f..1e06bafb7c 100644
--- a/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs
@@ -85,8 +85,6 @@ public async Task Should_return_expected_exposed_headers()
CorsAssertions.AssertExposedHeaders(response, "ETag", "Last-Modified", "Link", "Total-Count", "X-Particular-Version");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs b/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs
index 6afcb8ff35..c3d1f0cd9d 100644
--- a/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs
@@ -65,8 +65,6 @@ public async Task Preflight_request_should_not_return_cors_headers()
CorsAssertions.AssertCorsDisabled(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs b/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs
index acdd0842b5..6332d7db27 100644
--- a/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs
@@ -66,8 +66,6 @@ public async Task Preflight_request_should_return_correct_cors_headers()
CorsAssertions.AssertAllowedMethods(response, "POST", "GET", "PUT", "DELETE", "OPTIONS", "PATCH", "HEAD");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs b/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs
index bd1a974c93..a5f9a99c65 100644
--- a/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs
@@ -128,8 +128,6 @@ public async Task Preflight_request_should_not_allow_disallowed_origin()
CorsAssertions.AssertOriginNotAllowed(response, disallowedOrigin);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs
index 132e3d7c6e..a407c1b591 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs
@@ -48,8 +48,6 @@ public async Task Headers_should_be_ignored_when_disabled()
sentXForwardedHost: "example.com");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs
index e886f667e4..665b5a8cbd 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs
@@ -37,8 +37,6 @@ public async Task Headers_should_be_applied_when_trust_all_proxies()
expectedRemoteIp: "203.0.113.50");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs
index 4623ba4869..f88f46296b 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs
@@ -51,8 +51,6 @@ public async Task Headers_should_be_applied_when_caller_matches_known_network()
Assert.That(requestInfo.Configuration.KnownNetworks, Does.Contain("127.0.0.0/8").Or.Contain("::1/128"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs
index 44676d9bbd..741e69459f 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs
@@ -51,8 +51,6 @@ public async Task Headers_should_be_applied_when_caller_matches_known_proxy()
Assert.That(requestInfo.Configuration.KnownProxies, Does.Contain("127.0.0.1").Or.Contain("::1"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs
index 6a8d1ff104..b1deffd508 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs
@@ -43,8 +43,6 @@ public async Task Original_values_should_be_returned_when_trust_all_proxies()
expectedOriginalClientIp: "203.0.113.50");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs
index cbc0db8df5..c8a6917737 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs
@@ -57,8 +57,6 @@ public async Task Only_rightmost_values_should_be_processed_when_forward_limit_i
expectedRemainingForwardedHost: "example.com");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs
index ee0386b618..83b79819f3 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs
@@ -31,8 +31,6 @@ public async Task Only_scheme_should_be_changed()
ForwardedHeadersAssertions.AssertPartialHeadersApplied(requestInfo, expectedScheme: "https");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs
index 323df5b2ab..dd3dd32dd1 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs
@@ -41,8 +41,6 @@ public async Task Original_client_ip_should_be_returned_when_trust_all_proxies()
expectedHost: "example.com");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs
index ee8e57ed5f..81c7bc20c9 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs
@@ -52,8 +52,6 @@ public async Task Only_last_proxy_ip_should_be_processed_when_forward_limit_is_o
expectedRemainingForwardedFor: "203.0.113.50,10.0.0.1");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs
index 0b5c6b7e3a..5c09add6cf 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs
@@ -33,8 +33,6 @@ public async Task Request_values_should_remain_unchanged()
ForwardedHeadersAssertions.AssertDirectAccessWithNoForwardedHeaders(requestInfo);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs
index 9cdd3db5be..25f4c3f31c 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs
@@ -52,8 +52,6 @@ public async Task Headers_should_be_applied_when_trust_all_proxies_is_explicitly
"TrustAllProxies should be explicitly set to true");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs
index c90101f3c4..ba62f72a51 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs
@@ -56,8 +56,6 @@ public async Task Headers_should_be_ignored_when_caller_not_in_known_networks()
Assert.That(requestInfo.Configuration.KnownNetworks, Does.Contain("192.168.0.0/16"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs
index bef1f36cd9..255d35ab18 100644
--- a/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs
@@ -55,8 +55,6 @@ public async Task Headers_should_be_ignored_when_caller_not_in_known_proxies()
Assert.That(requestInfo.Configuration.KnownProxies, Does.Contain("192.168.1.100"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs b/src/ServiceControl.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs
index 8664dfab92..692f431de4 100644
--- a/src/ServiceControl.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs
@@ -47,8 +47,6 @@ public async Task Should_not_include_hsts_header_in_development_mode()
HttpsAssertions.AssertNoHstsHeader(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs b/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs
index e430d9a32c..49af0e3879 100644
--- a/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs
@@ -39,8 +39,6 @@ public async Task Should_not_redirect_http_requests()
HttpsAssertions.AssertNoHttpsRedirect(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs b/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs
index 32380cb357..81a0a81949 100644
--- a/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs
@@ -40,8 +40,6 @@ public async Task Should_redirect_http_requests_to_https()
HttpsAssertions.AssertHttpsRedirect(response, expectedPort: 443);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs b/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs
index 21dc9bb5b1..fcd8e90742 100644
--- a/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs
@@ -63,8 +63,6 @@ public async Task Should_return_authentication_configuration_as_disabled()
await OpenIdConnectAssertions.AssertAuthConfigurationResponse(response, expectedEnabled: false);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs b/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs
index e19736ff17..4e8d11e9c5 100644
--- a/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs
@@ -200,8 +200,6 @@ public async Task Should_reject_requests_with_wrong_issuer()
OpenIdConnectAssertions.AssertUnauthorized(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_service_pulse_authority_override_is_configured.cs b/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_service_pulse_authority_override_is_configured.cs
index b171ec097b..27d70d157f 100644
--- a/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_service_pulse_authority_override_is_configured.cs
+++ b/src/ServiceControl.AcceptanceTests/Security/OpenIdConnect/When_service_pulse_authority_override_is_configured.cs
@@ -63,8 +63,6 @@ await OpenIdConnectAssertions.AssertAuthConfigurationResponse(
expectedApiScopes: TestApiScopes);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.AcceptanceTests/TestSupport/ContextLoggerExtensions.cs b/src/ServiceControl.AcceptanceTests/TestSupport/ContextLoggerExtensions.cs
deleted file mode 100644
index cd01c38d96..0000000000
--- a/src/ServiceControl.AcceptanceTests/TestSupport/ContextLoggerExtensions.cs
+++ /dev/null
@@ -1,111 +0,0 @@
-namespace ServiceControl.AcceptanceTests
-{
- using System;
- using System.Collections.Concurrent;
- using System.Reflection;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.DependencyInjection.Extensions;
- using Microsoft.Extensions.Logging;
- using NServiceBus.AcceptanceTesting;
-
- static class ContextLoggerExtensions
- {
- public static ILoggingBuilder AddScenarioContextLogging(this ILoggingBuilder builder)
- {
- builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton());
- return builder;
- }
-
- class ContextLoggerProvider : ILoggerProvider
- {
- readonly ConcurrentDictionary loggers = new ConcurrentDictionary();
-
- public void Dispose() => loggers.Clear();
-
- public ILogger CreateLogger(string categoryName)
- {
- try
- {
- return loggers.GetOrAdd(categoryName, name => new ContextLogger(name));
- }
- catch (Exception e)
- {
- Console.WriteLine($"#### Fail to get logger. Exception: {e}");
- throw;
- }
- }
- }
-
- class ContextLogger : ILogger
- {
- readonly string categoryName;
-
- public ContextLogger(string categoryName)
- {
- this.categoryName = categoryName;
- }
-
- ScenarioContext GetContext()
- {
- var propertyInfo = typeof(ScenarioContext).GetProperty("Current", BindingFlags.NonPublic | BindingFlags.Static);
-
- return (ScenarioContext)propertyInfo.GetValue(null);
- }
-
- public void Log(LogLevel logLevel, EventId eventId, TState state,
- Exception exception, Func formatter)
-
- {
- try
- {
- GetContext().Logs.Enqueue(new ScenarioContext.LogItem
- {
- LoggerName = categoryName,
- Message = $"{state}" + (exception == null ? string.Empty : $"\n{exception}"), //HINT: default Microsoft formatter will ignore the exception
- Level = ConvertLogLevel(logLevel)
- });
- }
- catch (Exception e)
- {
- Console.WriteLine($"#### Fail to log message. Exception: {e}");
- }
- }
-
- NServiceBus.Logging.LogLevel ConvertLogLevel(LogLevel level)
- => level switch
- {
- LogLevel.Critical => NServiceBus.Logging.LogLevel.Fatal,
- LogLevel.Trace => NServiceBus.Logging.LogLevel.Debug,
- LogLevel.Debug => NServiceBus.Logging.LogLevel.Debug,
- LogLevel.Information => NServiceBus.Logging.LogLevel.Info,
- LogLevel.Warning => NServiceBus.Logging.LogLevel.Warn,
- LogLevel.Error => NServiceBus.Logging.LogLevel.Error,
- LogLevel.None => NServiceBus.Logging.LogLevel.Debug,
- _ => throw new ArgumentOutOfRangeException(nameof(level), level, null)
- };
-
- public bool IsEnabled(LogLevel logLevel)
- {
- try
- {
- return ConvertLogLevel(logLevel) >= GetContext()?.LogLevel;
- }
- catch (Exception e)
- {
- Console.WriteLine($"#### Fail to log message. Exception: {e}");
- }
-
- return false;
- }
-
- public IDisposable BeginScope(TState state) => NullScope.Instance;
-
- class NullScope : IDisposable
- {
- public void Dispose() { }
-
- public static NullScope Instance { get; } = new NullScope();
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs b/src/ServiceControl.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs
index 39b6bf46e3..f10878310d 100644
--- a/src/ServiceControl.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs
+++ b/src/ServiceControl.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs
@@ -1,10 +1,9 @@
namespace ServiceControl.AcceptanceTests.TestSupport
{
- using System.IO;
using AcceptanceTesting;
- using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.AcceptanceTesting;
+ using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.Configuration.AdvancedExtensibility;
public static class EndpointConfigurationExtensions
@@ -17,21 +16,14 @@ public static void ReportSuccessfulRetriesToServiceControl(this EndpointConfigur
public static void CustomizeServiceControlEndpointTesting(this EndpointConfiguration configuration, ScenarioContext context)
{
configuration.GetSettings().Set("SC.ScenarioContext", context);
- configuration.GetSettings().Set(context);
-
- configuration.RegisterComponents(r =>
- {
- r.AddSingleton(context.GetType(), context);
- r.AddSingleton(typeof(ScenarioContext), context);
- });
+ configuration.RegisterScenarioContext(context);
configuration.Pipeline.Register();
configuration.Pipeline.Register();
configuration.Pipeline.Register(new StampDispatchBehavior(context), "Stamps outgoing messages with session ID");
configuration.Pipeline.Register(new DiscardMessagesBehavior(context), "Discards messages based on session ID");
- var assemblyScanner = configuration.AssemblyScanner();
- assemblyScanner.ExcludeAssemblies(Path.GetFileName(typeof(ServiceControlComponentRunner).Assembly.Location));
+ configuration.AssemblyScanner().Disable = true;
}
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs b/src/ServiceControl.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs
index 657a84244d..7f83ffc593 100644
--- a/src/ServiceControl.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs
+++ b/src/ServiceControl.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs
@@ -21,12 +21,14 @@
using Microsoft.Extensions.Logging;
using NServiceBus;
using NServiceBus.AcceptanceTesting;
+ using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.AcceptanceTesting.Support;
using Particular.ServiceControl;
using Particular.ServiceControl.Hosting;
using RavenDB.Shared;
using ServiceBus.Management.Infrastructure.Settings;
using ServiceControl.Infrastructure;
+ using LogLevel = Microsoft.Extensions.Logging.LogLevel;
public class ServiceControlComponentRunner : ComponentRunner, IAcceptanceTestInfrastructureProvider
{
@@ -122,11 +124,15 @@ async Task InitializeServiceControl(ScenarioContext context)
// Force the DI container to run the dependency resolution check to verify all dependencies can be resolved
EnvironmentName = Environments.Development
});
+
+ hostBuilder.Services.AddScenarioContext(context);
hostBuilder.AddServiceControlAuthentication(settings.OpenIdConnectSettings);
hostBuilder.AddServiceControl(settings, configuration);
hostBuilder.AddServiceControlHttps(settings.HttpsSettings);
hostBuilder.AddServiceControlApi(settings.CorsSettings);
+ // AddServiceControl clears all logging providers, so we need to re-add the context appender after it
+ hostBuilder.Logging.AddContextAppender(context);
hostBuilder.AddServiceControlTesting(settings);
hostBuilderCustomization(hostBuilder);
diff --git a/src/ServiceControl.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs b/src/ServiceControl.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs
index 3e7b59add5..7c5aa29a1b 100644
--- a/src/ServiceControl.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs
+++ b/src/ServiceControl.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs
@@ -13,7 +13,6 @@ public static void AddServiceControlTesting(this WebApplicationBuilder hostBuild
{
// Do not register additional test controllers or hosted services here. Instead, in the test that needs them, use (for example):
// CustomizeHostBuilder = builder => builder.ConfigureServices((hostContext, services) => services.AddHostedService());
- hostBuilder.Logging.AddScenarioContextLogging();
hostBuilder.WebHost.UseTestServer(options => options.BaseAddress = new Uri(settings.RootUrl));
diff --git a/src/ServiceControl.Audit.AcceptanceTests.RavenDB/Auditing/When_critical_storage_threshold_reached.cs b/src/ServiceControl.Audit.AcceptanceTests.RavenDB/Auditing/When_critical_storage_threshold_reached.cs
index a21e82f017..d58a7e93aa 100644
--- a/src/ServiceControl.Audit.AcceptanceTests.RavenDB/Auditing/When_critical_storage_threshold_reached.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests.RavenDB/Auditing/When_critical_storage_threshold_reached.cs
@@ -104,6 +104,7 @@ public class Sender : EndpointConfigurationBuilder
{
public Sender() => EndpointSetup();
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context) => Task.CompletedTask;
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_a_message_fails_to_import.cs b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_a_message_fails_to_import.cs
index fa66b149fb..6f6dd9dab5 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_a_message_fails_to_import.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_a_message_fails_to_import.cs
@@ -78,6 +78,7 @@ public class AuditLogSpy : EndpointConfigurationBuilder
{
public AuditLogSpy() => EndpointSetup();
+ [Handler]
public class MyMessageHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context)
@@ -102,6 +103,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_are_marked_as_system_messages.cs b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_are_marked_as_system_messages.cs
index 797da4c66c..622275a901 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_are_marked_as_system_messages.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_are_marked_as_system_messages.cs
@@ -124,7 +124,7 @@ await Define(ctx =>
Assert.That(auditMessage.IsSystemMessage, Is.False);
}
- class SystemMessageEndpoint : EndpointConfigurationBuilder
+ public class SystemMessageEndpoint : EndpointConfigurationBuilder
{
public SystemMessageEndpoint() => EndpointSetup(c => c.EnableFeature());
@@ -159,7 +159,8 @@ protected override Task AfterDispatch(IMessageSession session, SystemMessageTest
=> session.SendLocal(new DoQueryAllowed());
}
- class MyHandler(SystemMessageTestContext testContext) : IHandleMessages
+ [Handler]
+ public class MyHandler(SystemMessageTestContext testContext) : IHandleMessages
{
public Task Handle(DoQueryAllowed message, IMessageHandlerContext context)
{
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_with_big_bodies_are_ingested.cs b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_with_big_bodies_are_ingested.cs
index eccd459b49..990b705566 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_with_big_bodies_are_ingested.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_messages_with_big_bodies_are_ingested.cs
@@ -137,10 +137,11 @@ await Define()
const int MAX_BODY_SIZE = 20536;
const int MAX_BODY_SIZE_BIGGER_THAN_LOH = 87000;
- class FatMessageEndpoint : EndpointConfigurationBuilder
+ public class FatMessageEndpoint : EndpointConfigurationBuilder
{
public FatMessageEndpoint() => EndpointSetup();
+ [Handler]
public class BigFatMessageHandler(Context testContext) : IHandleMessages
{
public Task Handle(BigFatMessage message, IMessageHandlerContext context)
@@ -151,12 +152,12 @@ public Task Handle(BigFatMessage message, IMessageHandlerContext context)
}
}
- class BigFatMessage : IMessage
+ internal class BigFatMessage : IMessage
{
public byte[] BigFatBody { get; set; }
}
- class Context : ScenarioContext
+ internal class Context : ScenarioContext
{
public string MessageId { get; set; }
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_is_imported.cs b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_is_imported.cs
index 71ef61f5be..298a2c0c73 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_is_imported.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_is_imported.cs
@@ -51,7 +51,7 @@ public async Task Should_be_accessible_via_the_rest_api()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(auditedMessage.MessageId, Is.EqualTo(context.MessageId));
Assert.That(auditedMessage.Status, Is.EqualTo(MessageStatus.Successful));
@@ -74,16 +74,16 @@ public async Task Should_be_accessible_via_the_rest_api()
Assert.That(auditedMessage.CriticalTime, Is.GreaterThan(TimeSpan.Zero), "Critical time should be calculated");
Assert.That(auditedMessage.MessageIntent, Is.EqualTo(MessageIntent.Send), "Message intent should be set");
- });
+ }
var bodyAsString = Encoding.UTF8.GetString(body);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(bodyAsString, Does.Contain(Payload), bodyAsString);
Assert.That(auditedMessage.BodySize, Is.EqualTo(body.Length));
Assert.That(auditedMessage.Headers.Any(h => h.Key == Headers.MessageId), Is.True);
- });
+ }
}
[Test]
@@ -117,11 +117,11 @@ public async Task Should_be_counted()
.Run();
Assert.That(counts, Has.Count.EqualTo(1));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(counts[0].UtcDate, Is.EqualTo(DateTime.UtcNow.Date));
Assert.That(counts[0].Count, Is.EqualTo(1));
- });
+ }
}
public class Sender : EndpointConfigurationBuilder
@@ -138,6 +138,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler(MyContext testContext, IReadOnlySettings settings) : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_body_content.cs b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_body_content.cs
index 35f65801cf..6e0d0ec70e 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_body_content.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_body_content.cs
@@ -74,11 +74,11 @@ public async Task Should_not_be_found_when_fulltext_search_disabled()
})
.Run();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(context.MessageIngested, Is.True);
Assert.That(context.MessageFound, Is.False);
- });
+ }
}
public class Sender : EndpointConfigurationBuilder
@@ -95,6 +95,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
MyContext testContext;
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_messageid.cs b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_messageid.cs
index ab99d5ad09..c1d618f675 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_messageid.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_messageid.cs
@@ -34,6 +34,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler(MyContext testContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_msgid_for_endpoint.cs b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_msgid_for_endpoint.cs
index a15f93f713..ec9f4aebe7 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_msgid_for_endpoint.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Auditing/When_processed_message_searched_by_msgid_for_endpoint.cs
@@ -34,6 +34,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler(MyContext testContext, IReadOnlySettings settings)
: IHandleMessages
{
diff --git a/src/ServiceControl.Audit.AcceptanceTests/ContextLoggerExtensions.cs b/src/ServiceControl.Audit.AcceptanceTests/ContextLoggerExtensions.cs
deleted file mode 100644
index 523f7172d2..0000000000
--- a/src/ServiceControl.Audit.AcceptanceTests/ContextLoggerExtensions.cs
+++ /dev/null
@@ -1,111 +0,0 @@
-namespace ServiceControl.Audit.AcceptanceTests
-{
- using System;
- using System.Collections.Concurrent;
- using System.Reflection;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.DependencyInjection.Extensions;
- using Microsoft.Extensions.Logging;
- using NServiceBus.AcceptanceTesting;
-
- static class ContextLoggerExtensions
- {
- public static ILoggingBuilder AddScenarioContextLogging(this ILoggingBuilder builder)
- {
- builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton());
- return builder;
- }
-
- class ContextLoggerProvider : ILoggerProvider
- {
- readonly ConcurrentDictionary loggers = new ConcurrentDictionary();
-
- public void Dispose() => loggers.Clear();
-
- public ILogger CreateLogger(string categoryName)
- {
- try
- {
- return loggers.GetOrAdd(categoryName, name => new ContextLogger(name));
- }
- catch (Exception e)
- {
- Console.WriteLine($"#### Fail to get logger. Exception: {e}");
- throw;
- }
- }
- }
-
- class ContextLogger : ILogger
- {
- readonly string categoryName;
-
- public ContextLogger(string categoryName)
- {
- this.categoryName = categoryName;
- }
-
- ScenarioContext GetContext()
- {
- var propertyInfo = typeof(ScenarioContext).GetProperty("Current", BindingFlags.NonPublic | BindingFlags.Static);
-
- return (ScenarioContext)propertyInfo.GetValue(null);
- }
-
- public void Log(LogLevel logLevel, EventId eventId, TState state,
- Exception exception, Func formatter)
-
- {
- try
- {
- GetContext().Logs.Enqueue(new ScenarioContext.LogItem
- {
- LoggerName = categoryName,
- Message = $"{state}" + (exception == null ? string.Empty : $"\n{exception}"), //HINT: default Microsoft formatter will ignore the exception
- Level = ConvertLogLevel(logLevel)
- });
- }
- catch (Exception e)
- {
- Console.WriteLine($"#### Fail to log message. Exception: {e}");
- }
- }
-
- NServiceBus.Logging.LogLevel ConvertLogLevel(LogLevel level)
- => level switch
- {
- LogLevel.Critical => NServiceBus.Logging.LogLevel.Fatal,
- LogLevel.Trace => NServiceBus.Logging.LogLevel.Debug,
- LogLevel.Debug => NServiceBus.Logging.LogLevel.Debug,
- LogLevel.Information => NServiceBus.Logging.LogLevel.Info,
- LogLevel.Warning => NServiceBus.Logging.LogLevel.Warn,
- LogLevel.Error => NServiceBus.Logging.LogLevel.Error,
- LogLevel.None => NServiceBus.Logging.LogLevel.Debug,
- _ => throw new ArgumentOutOfRangeException(nameof(level), level, null)
- };
-
- public bool IsEnabled(LogLevel logLevel)
- {
- try
- {
- return ConvertLogLevel(logLevel) >= GetContext()?.LogLevel;
- }
- catch (Exception e)
- {
- Console.WriteLine($"#### Fail to log message. Exception: {e}");
- }
-
- return false;
- }
-
- public IDisposable BeginScope(TState state) => NullScope.Instance;
-
- class NullScope : IDisposable
- {
- public void Dispose() { }
-
- public static NullScope Instance { get; } = new NullScope();
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Monitoring/When_a_new_endpoint_is_detected.cs b/src/ServiceControl.Audit.AcceptanceTests/Monitoring/When_a_new_endpoint_is_detected.cs
index 16a9f7ab08..1b00fe60b5 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Monitoring/When_a_new_endpoint_is_detected.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Monitoring/When_a_new_endpoint_is_detected.cs
@@ -33,6 +33,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context) => Task.CompletedTask;
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_at_old_endpoint_is_detected.cs b/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_at_old_endpoint_is_detected.cs
index 29827d75f1..94b2ab2227 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_at_old_endpoint_is_detected.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_at_old_endpoint_is_detected.cs
@@ -76,6 +76,7 @@ public Receiver() =>
cfg.DisableFeature();
});
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context) => Task.CompletedTask;
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_from_old_SC_is_detected.cs b/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_from_old_SC_is_detected.cs
index 33b6c8a3e0..743fdb608e 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_from_old_SC_is_detected.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_a_successful_retry_from_old_SC_is_detected.cs
@@ -44,6 +44,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context) => Task.CompletedTask;
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_importing_a_message_resolved_by_a_retry.cs b/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_importing_a_message_resolved_by_a_retry.cs
index 19be070566..b839836e8c 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_importing_a_message_resolved_by_a_retry.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Recoverability/When_importing_a_message_resolved_by_a_retry.cs
@@ -52,6 +52,7 @@ public class Receiver : EndpointConfigurationBuilder
{
public Receiver() => EndpointSetup();
+ [Handler]
public class MyMessageHandler : IHandleMessages
{
public Task Handle(MyMessage message, IMessageHandlerContext context) => Task.CompletedTask;
diff --git a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_emitted_by_a_saga_is_audited.cs b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_emitted_by_a_saga_is_audited.cs
index 5ff374bbae..a0a1759d60 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_emitted_by_a_saga_is_audited.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_emitted_by_a_saga_is_audited.cs
@@ -28,17 +28,18 @@ public async Task Info_on_emitted_saga_should_be_available_through_the_http_api(
Assert.That(auditedMessage.OriginatesFromSaga, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(auditedMessage.OriginatesFromSaga.SagaType, Is.EqualTo(typeof(SagaEndpoint.MySaga).FullName));
Assert.That(auditedMessage.OriginatesFromSaga.SagaId, Is.EqualTo(context.SagaId));
- });
+ }
}
public class SagaEndpoint : EndpointConfigurationBuilder
{
public SagaEndpoint() => EndpointSetup();
+ [Saga]
public class MySaga(MyContext testContext) : Saga, IAmStartedByMessages
{
public Task Handle(MessageInitiatingSaga message, IMessageHandlerContext context)
@@ -57,7 +58,8 @@ public class MySagaData : ContainSagaData
public string MessageId { get; set; }
}
- class MessageSentBySagaHandler(MyContext testContext) : IHandleMessages
+ [Handler]
+ public class MessageSentBySagaHandler(MyContext testContext) : IHandleMessages
{
public Task Handle(MessageSentBySaga message, IMessageHandlerContext context)
{
diff --git a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_a_saga_is_audited.cs b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_a_saga_is_audited.cs
index 84cf35a221..7caf4e0ff9 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_a_saga_is_audited.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_a_saga_is_audited.cs
@@ -38,12 +38,12 @@ public async Task Saga_info_should_be_available_through_the_http_api()
Assert.That(auditedMessage, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(auditedMessage.InvokedSagas.Single().SagaType, Is.EqualTo(typeof(SagaEndpoint.MySaga).FullName));
Assert.That(auditedMessage.InvokedSagas.First().SagaId, Is.EqualTo(context.SagaId));
Assert.That(auditedMessage.InvokedSagas.First().ChangeStatus, Is.EqualTo("New"));
- });
+ }
}
public class SagaAuditProcessorFake : EndpointConfigurationBuilder
@@ -62,6 +62,7 @@ public SagaEndpoint() =>
//we need to enable the plugin for it to enrich the audited messages, state changes will go to input queue and just be discarded
EndpointSetup(c => c.AuditSagaStateChanges(Conventions.EndpointNamingConvention(typeof(SagaAuditProcessorFake))));
+ [Saga]
public class MySaga(MyContext testContext) : Saga, IAmStartedByMessages
{
public Task Handle(MessageInitiatingSaga message, IMessageHandlerContext context)
diff --git a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_multiple_sagas_is_audited.cs b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_multiple_sagas_is_audited.cs
index b3f351ce45..17a70079f6 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_multiple_sagas_is_audited.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_hitting_multiple_sagas_is_audited.cs
@@ -37,7 +37,7 @@ public async Task Saga_info_should_be_available_through_the_http_api()
Assert.That(auditedMessage, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(auditedMessage.InvokedSagas.First().SagaType, Is.EqualTo(typeof(SagaEndpoint.MySaga).FullName));
Assert.That(auditedMessage.InvokedSagas.Last().SagaType, Is.EqualTo(typeof(SagaEndpoint.MyOtherSaga).FullName));
@@ -47,7 +47,7 @@ public async Task Saga_info_should_be_available_through_the_http_api()
Assert.That(auditedMessage.InvokedSagas.First().ChangeStatus, Is.EqualTo("New"));
Assert.That(auditedMessage.InvokedSagas.Last().ChangeStatus, Is.EqualTo("Completed"));
- });
+ }
}
public class SagaAuditProcessorFake : EndpointConfigurationBuilder
@@ -66,6 +66,7 @@ public SagaEndpoint() =>
//we need to enable the plugin for it to enrich the audited messages, state changes will go to input queue and just be discarded
EndpointSetup(c => c.AuditSagaStateChanges(Conventions.EndpointNamingConvention(typeof(SagaAuditProcessorFake))));
+ [Saga]
public class MySaga(MyContext testContext)
: Saga, IAmStartedByMessages
{
@@ -85,6 +86,7 @@ public class MySagaData : ContainSagaData
}
}
+ [Saga]
public class MyOtherSaga(MyContext testContext)
: Saga, IAmStartedByMessages
{
diff --git a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_that_is_handled_by_a_saga.cs b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_that_is_handled_by_a_saga.cs
index 90fd284451..0233130732 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_that_is_handled_by_a_saga.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/SagaAudit/When_a_message_that_is_handled_by_a_saga.cs
@@ -60,11 +60,11 @@ static void AssertInitiatedHas2Sagas(IEnumerable messages, MyConte
var value = m.Headers.First(kv => kv.Key == "ServiceControl.SagaStateChange").Value;
var strings = value.Split(';');
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(strings.Any(s => s == context.Saga1Id + ":New"), Is.True);
Assert.That(strings.Any(s => s == context.Saga2Id + ":New"), Is.True);
- });
+ }
}
void AssertStateChange(IEnumerable messages, Guid sagaId, string stateChange)
@@ -89,6 +89,7 @@ public SagasEndpoint() =>
//we need to enable the plugin for it to enrich the audited messages, state changes will go to input queue and just be discarded
EndpointSetup(c => c.AuditSagaStateChanges(Conventions.EndpointNamingConvention(typeof(SagaAuditProcessorFake))));
+ [Saga]
public class Saga1(MyContext testContext) : Saga, IAmStartedByMessages,
IHandleMessages, IHandleMessages
{
@@ -116,6 +117,7 @@ public class Saga1Data : ContainSagaData
}
}
+ [Saga]
public class Saga2(MyContext testContext) : Saga, IAmStartedByMessages,
IHandleMessages, IHandleMessages
{
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs
index 0008eb217c..3526c994aa 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_allows_any_origin.cs
@@ -85,8 +85,6 @@ public async Task Should_return_expected_exposed_headers()
CorsAssertions.AssertExposedHeaders(response, "ETag", "Last-Modified", "Link", "Total-Count", "X-Particular-Version");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs
index 85c96fc146..0dbf96f7c2 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_cors_is_disabled.cs
@@ -65,8 +65,6 @@ public async Task Preflight_request_should_not_return_cors_headers()
CorsAssertions.AssertCorsDisabled(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs
index ef9586a486..4a14a8b801 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_allowed_origin.cs
@@ -66,8 +66,6 @@ public async Task Preflight_request_should_return_correct_cors_headers()
CorsAssertions.AssertAllowedMethods(response, "POST", "GET", "PUT", "DELETE", "OPTIONS", "PATCH", "HEAD");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs
index 2374598124..d077ec88f6 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/Cors/When_request_from_disallowed_origin.cs
@@ -128,8 +128,6 @@ public async Task Preflight_request_should_not_allow_disallowed_origin()
CorsAssertions.AssertOriginNotAllowed(response, disallowedOrigin);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs
index 99c4a9fa9f..92a983e9de 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_disabled.cs
@@ -48,8 +48,6 @@ public async Task Headers_should_be_ignored_when_disabled()
sentXForwardedHost: "example.com");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs
index 5de9cfc68e..34fa3de1c6 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_forwarded_headers_are_sent.cs
@@ -37,8 +37,6 @@ public async Task Headers_should_be_applied_when_trust_all_proxies()
expectedRemoteIp: "203.0.113.50");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs
index 646a8af5b6..39a99b24de 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_networks_are_configured.cs
@@ -51,8 +51,6 @@ public async Task Headers_should_be_applied_when_caller_matches_known_network()
Assert.That(requestInfo.Configuration.KnownNetworks, Does.Contain("127.0.0.0/8").Or.Contain("::1/128"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs
index d622f22e7f..fbf8a2a705 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_known_proxies_are_configured.cs
@@ -51,8 +51,6 @@ public async Task Headers_should_be_applied_when_caller_matches_known_proxy()
Assert.That(requestInfo.Configuration.KnownProxies, Does.Contain("127.0.0.1").Or.Contain("::1"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs
index f37c330052..ea29198632 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent.cs
@@ -43,8 +43,6 @@ public async Task Original_values_should_be_returned_when_trust_all_proxies()
expectedOriginalClientIp: "203.0.113.50");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs
index 1b0f392854..901706f19f 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_multiple_header_values_are_sent_with_known_proxies.cs
@@ -57,8 +57,6 @@ public async Task Only_rightmost_values_should_be_processed_when_forward_limit_i
expectedRemainingForwardedHost: "example.com");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs
index d2f54f4d2d..6b0a38e081 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_only_proto_header_is_sent.cs
@@ -31,8 +31,6 @@ public async Task Only_scheme_should_be_changed()
ForwardedHeadersAssertions.AssertPartialHeadersApplied(requestInfo, expectedScheme: "https");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs
index 607dcb4688..fcf794ebea 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent.cs
@@ -41,8 +41,6 @@ public async Task Original_client_ip_should_be_returned_when_trust_all_proxies()
expectedHost: "example.com");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs
index aed99352e9..a2e9131bcd 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_proxy_chain_headers_are_sent_with_known_proxies.cs
@@ -52,8 +52,6 @@ public async Task Only_last_proxy_ip_should_be_processed_when_forward_limit_is_o
expectedRemainingForwardedFor: "203.0.113.50,10.0.0.1");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs
index 9dcca4daca..c045909aca 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_request_has_no_forwarded_headers.cs
@@ -33,8 +33,6 @@ public async Task Request_values_should_remain_unchanged()
ForwardedHeadersAssertions.AssertDirectAccessWithNoForwardedHeaders(requestInfo);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs
index f6089bdc03..c251cfe8d3 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_trust_all_proxies_is_explicitly_configured.cs
@@ -52,8 +52,6 @@ public async Task Headers_should_be_applied_when_trust_all_proxies_is_explicitly
"TrustAllProxies should be explicitly set to true");
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs
index 419be4db2e..016bfbb706 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_network_sends_headers.cs
@@ -56,8 +56,6 @@ public async Task Headers_should_be_ignored_when_caller_not_in_known_networks()
Assert.That(requestInfo.Configuration.KnownNetworks, Does.Contain("192.168.0.0/16"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs
index 1a18c759dc..84bcc88fb1 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/ForwardedHeaders/When_unknown_proxy_sends_headers.cs
@@ -55,8 +55,6 @@ public async Task Headers_should_be_ignored_when_caller_not_in_known_proxies()
Assert.That(requestInfo.Configuration.KnownProxies, Does.Contain("192.168.1.100"));
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs
index f0a2e50a07..3401c352cc 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_hsts_is_configured_in_development_mode.cs
@@ -47,8 +47,6 @@ public async Task Should_not_include_hsts_header_in_development_mode()
HttpsAssertions.AssertNoHstsHeader(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs
index 5dc6a1c610..30c7b8d61f 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_disabled.cs
@@ -39,8 +39,6 @@ public async Task Should_not_redirect_http_requests()
HttpsAssertions.AssertNoHttpsRedirect(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs
index f35df9a998..47cac5511c 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/Https/When_https_redirect_is_enabled.cs
@@ -40,8 +40,6 @@ public async Task Should_redirect_http_requests_to_https()
HttpsAssertions.AssertHttpsRedirect(response, expectedPort: 443);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs
index 2cbcc12fbc..03d36243f0 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_disabled.cs
@@ -44,8 +44,6 @@ public async Task Should_allow_requests_without_authentication()
OpenIdConnectAssertions.AssertNoAuthenticationRequired(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs b/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs
index 9d57a41316..c07cb16aa9 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/Security/OpenIdConnect/When_authentication_is_enabled.cs
@@ -188,8 +188,6 @@ public async Task Should_allow_anonymous_access_to_root_endpoint()
OpenIdConnectAssertions.AssertNoAuthenticationRequired(response);
}
- class Context : ScenarioContext
- {
- }
+ class Context : ScenarioContext;
}
}
diff --git a/src/ServiceControl.Audit.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs b/src/ServiceControl.Audit.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs
index 7525f93e11..22e514e43f 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/TestSupport/EndpointConfigurationExtensions.cs
@@ -1,10 +1,9 @@
namespace ServiceControl.Audit.AcceptanceTests.TestSupport;
-using System.IO;
using AcceptanceTesting;
-using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.AcceptanceTesting;
+using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.Configuration.AdvancedExtensibility;
static class EndpointConfigurationExtensions
@@ -12,20 +11,13 @@ static class EndpointConfigurationExtensions
public static void CustomizeServiceControlAuditEndpointTesting(this EndpointConfiguration configuration, ScenarioContext context)
{
configuration.GetSettings().Set("SC.ScenarioContext", context);
- configuration.GetSettings().Set(context);
-
- configuration.RegisterComponents(r =>
- {
- r.AddSingleton(context.GetType(), context);
- r.AddSingleton(typeof(ScenarioContext), context);
- });
+ configuration.RegisterScenarioContext(context);
configuration.Pipeline.Register();
configuration.Pipeline.Register();
configuration.Pipeline.Register(new StampDispatchBehavior(context), "Stamps outgoing messages with session ID");
configuration.Pipeline.Register(new DiscardMessagesBehavior(context), "Discards messages based on session ID");
- var assemblyScanner = configuration.AssemblyScanner();
- assemblyScanner.ExcludeAssemblies(Path.GetFileName(typeof(ServiceControlComponentRunner).Assembly.Location));
+ configuration.AssemblyScanner().Disable = true;
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.Audit.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs b/src/ServiceControl.Audit.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs
index efcd99c0f6..dcefea98f0 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/TestSupport/ServiceControlComponentRunner.cs
@@ -23,6 +23,7 @@ namespace ServiceControl.Audit.AcceptanceTests.TestSupport
using ServiceControl.Hosting.Auth;
using ServiceControl.Hosting.Https;
using NServiceBus.AcceptanceTesting;
+ using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.AcceptanceTesting.Support;
using ServiceControl.Infrastructure;
@@ -119,6 +120,7 @@ async Task InitializeServiceControl(ScenarioContext context)
// Force the DI container to run the dependency resolution check to verify all dependencies can be resolved
EnvironmentName = Environments.Development
});
+ hostBuilder.Services.AddScenarioContext(context);
hostBuilder.AddServiceControlAuthentication(settings.OpenIdConnectSettings);
hostBuilder.AddServiceControlAudit((criticalErrorContext, cancellationToken) =>
{
@@ -136,6 +138,8 @@ async Task InitializeServiceControl(ScenarioContext context)
hostBuilder.AddServiceControlAuditApi(settings.CorsSettings);
hostBuilder.AddServiceControlHttps(settings.HttpsSettings);
+ // AddServiceControlAudit clears all logging providers, so we need to re-add the context appender after it
+ hostBuilder.Logging.AddContextAppender(context);
hostBuilder.AddServiceControlAuditTesting(settings);
hostBuilderCustomization(hostBuilder);
diff --git a/src/ServiceControl.Audit.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs b/src/ServiceControl.Audit.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs
index 8fb87a9f57..9478f9c1c1 100644
--- a/src/ServiceControl.Audit.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs
+++ b/src/ServiceControl.Audit.AcceptanceTests/TestSupport/WebApplicationBuilderExtensions.cs
@@ -13,8 +13,6 @@ public static void AddServiceControlAuditTesting(this WebApplicationBuilder host
{
// Do not register additional test controllers or hosted services here. Instead, in the test that needs them, use (for example):
// CustomizeHostBuilder = builder => builder.ConfigureServices((hostContext, services) => services.AddHostedService());
- hostBuilder.Logging.AddScenarioContextLogging();
-
hostBuilder.WebHost.UseTestServer(options => options.BaseAddress = new Uri(settings.RootUrl));
// This facilitates receiving the test server anywhere where DI is available
hostBuilder.Services.AddSingleton(provider => (TestServer)provider.GetRequiredService());
diff --git a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/ConfigurationValidationTests.cs b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/ConfigurationValidationTests.cs
index 855ce8573b..aaed138170 100644
--- a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/ConfigurationValidationTests.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/ConfigurationValidationTests.cs
@@ -16,12 +16,12 @@ public void Should_apply_persistence_settings()
var configuration = RavenPersistenceConfiguration.GetDatabaseConfiguration(settings);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(configuration.AuditRetentionPeriod, Is.EqualTo(settings.AuditRetentionPeriod));
Assert.That(configuration.MaxBodySizeToStore, Is.EqualTo(settings.MaxBodySizeToStore));
Assert.That(configuration.EnableFullTextSearch, Is.EqualTo(settings.EnableFullTextSearchOnBodies));
- });
+ }
}
[Test]
@@ -34,11 +34,11 @@ public void Should_support_external_server()
var configuration = RavenPersistenceConfiguration.GetDatabaseConfiguration(settings);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(configuration.ServerConfiguration.UseEmbeddedServer, Is.False);
Assert.That(configuration.ServerConfiguration.ConnectionString, Is.EqualTo(connectionString));
- });
+ }
}
[Test]
@@ -53,13 +53,13 @@ public void Should_support_embedded_server()
settings.PersisterSpecificSettings[RavenPersistenceConfiguration.LogPathKey] = logPath;
var configuration = RavenPersistenceConfiguration.GetDatabaseConfiguration(settings);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(configuration.ServerConfiguration.UseEmbeddedServer, Is.True);
Assert.That(configuration.ServerConfiguration.DbPath, Is.EqualTo(dpPath));
Assert.That(configuration.ServerConfiguration.LogPath, Is.EqualTo(logPath));
Assert.That(configuration.ServerConfiguration.ServerUrl, Is.EqualTo("http://localhost:11111"));
- });
+ }
}
[Test]
diff --git a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/EmbeddedLifecycleTests.cs b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/EmbeddedLifecycleTests.cs
index 95194198ed..6e518d8ac1 100644
--- a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/EmbeddedLifecycleTests.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/EmbeddedLifecycleTests.cs
@@ -37,11 +37,11 @@ public async Task Verify_embedded_database()
{
await DataStore.QueryKnownEndpoints(TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(dbPath, Does.Exist);
Assert.That(logPath, Does.Exist);
- });
+ }
}
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/LicenseTest.cs b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/LicenseTest.cs
index 678ae30736..d419b38af2 100644
--- a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/LicenseTest.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/LicenseTest.cs
@@ -30,7 +30,7 @@ public async Task EnsureLicenseIsValid()
var jsonText = await response.Content.ReadAsStringAsync();
var details = System.Text.Json.JsonSerializer.Deserialize(jsonText);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(details.Id, Is.EqualTo("64c6a174-3f3a-4e7d-ac5d-b3eedd801460"));
Assert.That(details.LicensedTo, Is.EqualTo("NserviceBus Ltd"));
@@ -38,7 +38,7 @@ public async Task EnsureLicenseIsValid()
Assert.That(details.Expired, Is.False);
Assert.That(details.Type, Is.EqualTo("Professional"));
Assert.That(DateTime.UtcNow.AddDays(7), Is.LessThan(details.Expiration), $"The RavenDB license expires {details.Expiration} which is less than one week. Contact RavenDB at for the new license.");
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/RetentionTests.cs b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/RetentionTests.cs
index 9fef1ed7db..fa75845e67 100644
--- a/src/ServiceControl.Audit.Persistence.Tests.RavenDB/RetentionTests.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests.RavenDB/RetentionTests.cs
@@ -37,11 +37,11 @@ public async Task AuditMessageRetention()
var queryResultAfterExpiration = await DataStore.QueryMessages("MyMessageId", new PagingInfo(), new SortInfo("Id", "asc"), cancellationToken: TestContext.CurrentContext.CancellationToken);
Assert.That(queryResultBeforeExpiration.Results, Has.Count.EqualTo(1));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(queryResultBeforeExpiration.Results[0].MessageId, Is.EqualTo("MyMessageId"));
Assert.That(queryResultAfterExpiration.Results.Count, Is.EqualTo(0));
- });
+ }
}
[Test]
@@ -67,11 +67,11 @@ await IngestKnownEndpoints(
var queryResultAfterExpiration = await DataStore.QueryKnownEndpoints(TestContext.CurrentContext.CancellationToken);
Assert.That(queryResultBeforeExpiration.Results, Has.Count.EqualTo(1));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(queryResultBeforeExpiration.Results[0].EndpointDetails.Name, Is.EqualTo("Wazowsky"));
Assert.That(queryResultAfterExpiration.Results.Count, Is.EqualTo(0));
- });
+ }
}
[Test]
@@ -93,11 +93,11 @@ await IngestSagaAudits(
var queryResultAfterExpiration = await DataStore.QuerySagaHistoryById(sagaId, TestContext.CurrentContext.CancellationToken);
Assert.That(queryResultBeforeExpiration.Results, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(queryResultBeforeExpiration.Results.Changes, Has.Count.EqualTo(2));
Assert.That(queryResultAfterExpiration.Results, Is.Null);
- });
+ }
}
ProcessedMessage MakeMessage(
diff --git a/src/ServiceControl.Audit.Persistence.Tests/AuditTests.cs b/src/ServiceControl.Audit.Persistence.Tests/AuditTests.cs
index 52f360ae46..89e2249fac 100644
--- a/src/ServiceControl.Audit.Persistence.Tests/AuditTests.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests/AuditTests.cs
@@ -96,7 +96,7 @@ public async Task Can_roundtrip_message_body()
var retrievedMessage = await DataStore.GetMessageBody(bodyId, TestContext.CurrentContext.CancellationToken);
Assert.That(retrievedMessage, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(retrievedMessage.Found, Is.True);
Assert.That(retrievedMessage.HasContent, Is.True);
@@ -104,15 +104,15 @@ public async Task Can_roundtrip_message_body()
Assert.That(retrievedMessage.ETag, Is.Not.Null.And.Not.Empty);
Assert.That(retrievedMessage.StreamContent, Is.Not.Null);
Assert.That(retrievedMessage.ContentType, Is.EqualTo(expectedContentType));
- });
+ }
var resultBody = new byte[body.Length];
var readBytes = await retrievedMessage.StreamContent.ReadAsync(resultBody, 0, body.Length);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(readBytes, Is.EqualTo(body.Length));
Assert.That(resultBody, Is.EqualTo(body));
- });
+ }
}
[Test]
@@ -133,11 +133,11 @@ public async Task Does_respect_max_message_body()
var retrievedMessage = await DataStore.GetMessageBody(bodyId, TestContext.CurrentContext.CancellationToken);
Assert.That(retrievedMessage, Is.Not.Null);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(retrievedMessage.Found, Is.True);
Assert.That(retrievedMessage.HasContent, Is.False);
- });
+ }
}
diff --git a/src/ServiceControl.Audit.Persistence.Tests/FailedAuditStorageTests.cs b/src/ServiceControl.Audit.Persistence.Tests/FailedAuditStorageTests.cs
index 3fc5f073e7..6e3a3b2b7c 100644
--- a/src/ServiceControl.Audit.Persistence.Tests/FailedAuditStorageTests.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests/FailedAuditStorageTests.cs
@@ -39,11 +39,11 @@ await FailedAuditStorage.ProcessFailedMessages(async (transportMessage, markComp
var numFailures = await FailedAuditStorage.GetFailedAuditsCount();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(succeeded, Is.EqualTo(2));
Assert.That(numFailures, Is.EqualTo(0));
- });
+ }
}
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.Audit.Persistence.Tests/KnownEndpointsTests.cs b/src/ServiceControl.Audit.Persistence.Tests/KnownEndpointsTests.cs
index 3164a7cb44..2fd6840d97 100644
--- a/src/ServiceControl.Audit.Persistence.Tests/KnownEndpointsTests.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests/KnownEndpointsTests.cs
@@ -26,13 +26,13 @@ public async Task Basic_Roundtrip()
Assert.That(endpoints.Results, Has.Count.EqualTo(1));
var endpoint = endpoints.Results[0];
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(endpoint.HostDisplayName, Is.EqualTo(ingestedEndpoint.Host));
Assert.That(endpoint.EndpointDetails.Host, Is.EqualTo(ingestedEndpoint.Host));
Assert.That(endpoint.EndpointDetails.HostId, Is.EqualTo(ingestedEndpoint.HostId));
Assert.That(endpoint.EndpointDetails.Name, Is.EqualTo(ingestedEndpoint.Name));
- });
+ }
}
[Test]
@@ -50,11 +50,11 @@ public async Task Can_query_many_known_endpoints()
var queryResult = await DataStore.QueryKnownEndpoints(TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(queryResult.QueryStats.TotalCount, Is.EqualTo(200));
Assert.That(queryResult.Results, Has.Count.EqualTo(200));
- });
+ }
}
async Task IngestKnownEndpoints(params KnownEndpoint[] knownEndpoints)
diff --git a/src/ServiceControl.Audit.Persistence.Tests/SagaHistoryTests.cs b/src/ServiceControl.Audit.Persistence.Tests/SagaHistoryTests.cs
index 0b25b90f7e..197821b3cf 100644
--- a/src/ServiceControl.Audit.Persistence.Tests/SagaHistoryTests.cs
+++ b/src/ServiceControl.Audit.Persistence.Tests/SagaHistoryTests.cs
@@ -23,12 +23,12 @@ await IngestSagaAudits(
var queryResult = await DataStore.QuerySagaHistoryById(sagaId, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(queryResult.Results.SagaId, Is.EqualTo(sagaId));
Assert.That(queryResult.Results.SagaType, Is.EqualTo("MySagaType"));
Assert.That(queryResult.Results.Changes, Has.Count.EqualTo(1));
- });
+ }
Assert.That(queryResult.Results.Changes[0].Status, Is.EqualTo(SagaStateChangeStatus.New));
}
diff --git a/src/ServiceControl.Audit.UnitTests/BodyStorage/BodyStorageEnricherTests.cs b/src/ServiceControl.Audit.UnitTests/BodyStorage/BodyStorageEnricherTests.cs
index 273b4f80fb..d0e7f00a2b 100644
--- a/src/ServiceControl.Audit.UnitTests/BodyStorage/BodyStorageEnricherTests.cs
+++ b/src/ServiceControl.Audit.UnitTests/BodyStorage/BodyStorageEnricherTests.cs
@@ -37,13 +37,13 @@ public async Task Should_remove_body_when_above_threshold()
await enricher.StoreAuditMessageBody(body, message, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(fakeStorage.StoredBodySize, Is.EqualTo(0), "Body should be removed if above threshold");
Assert.That(metadata.ContainsKey("Body"), Is.False);
Assert.That(message.Body, Is.Null, "Body property was set but shouldn't have been");
Assert.That(metadata["BodyUrl"], Is.EqualTo("/messages/someid/body"));
- });
+ }
}
[Test]
@@ -67,13 +67,13 @@ public async Task Should_remove_body_when_above_threshold_and_binary()
await enricher.StoreAuditMessageBody(body, message, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(fakeStorage.StoredBodySize, Is.EqualTo(0), "Body should be removed if above threshold");
Assert.That(metadata.ContainsKey("Body"), Is.False);
Assert.That(message.Body, Is.Null, "Body property was set but shouldn't have been");
Assert.That(metadata["BodyUrl"], Is.EqualTo("/messages/someid/body"));
- });
+ }
}
[Test]
@@ -99,13 +99,13 @@ public async Task Should_store_body_in_metadata_when_below_large_object_heap_and
await enricher.StoreAuditMessageBody(body, message, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(metadata["Body"], Is.EqualTo(body), "Body should be stored if below threshold");
Assert.That(message.Body, Is.Null, "Body property was set but shouldn't have been");
Assert.That(fakeStorage.StoredBodySize, Is.EqualTo(0));
Assert.That(metadata["BodyUrl"], Is.EqualTo("/messages/someid/body"));
- });
+ }
}
[Test]
@@ -131,13 +131,13 @@ public async Task Should_store_body_in_body_property_when_full_text_disabled_and
await enricher.StoreAuditMessageBody(body, message, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(message.Body, Is.EqualTo(body), "Body should be stored if below threshold");
Assert.That(metadata.ContainsKey("Body"), Is.False, "Body should not be in metadata");
Assert.That(fakeStorage.StoredBodySize, Is.EqualTo(0));
Assert.That(metadata["BodyUrl"], Is.EqualTo("/messages/someid/body"));
- });
+ }
}
[Test]
@@ -163,13 +163,13 @@ public async Task Should_store_body_in_storage_when_above_large_object_heap_but_
await enricher.StoreAuditMessageBody(body, message, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(fakeStorage.StoredBodySize, Is.EqualTo(expectedBodySize), "Body should be stored if below threshold");
Assert.That(message.Body, Is.Null, "Body property was set but shouldn't have been");
Assert.That(metadata.ContainsKey("Body"), Is.False);
Assert.That(metadata["BodyUrl"], Is.EqualTo("/messages/someid/body"));
- });
+ }
}
[Test]
@@ -194,13 +194,13 @@ public async Task Should_store_body_in_storage_when_below_threshold_and_binary()
await enricher.StoreAuditMessageBody(body, message, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(fakeStorage.StoredBodySize, Is.EqualTo(expectedBodySize), "Body should be stored if below threshold");
Assert.That(message.Body, Is.Null, "Body property was set but shouldn't have been");
Assert.That(metadata.ContainsKey("Body"), Is.False);
Assert.That(metadata["BodyUrl"], Is.EqualTo("/messages/someid/body"));
- });
+ }
}
[Test]
@@ -225,13 +225,13 @@ public async Task Should_store_body_in_storage_when_below_threshold()
await enricher.StoreAuditMessageBody(body, message, TestContext.CurrentContext.CancellationToken);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(fakeStorage.StoredBodySize, Is.EqualTo(expectedBodySize), "Body should be stored if below threshold");
Assert.That(message.Body, Is.Null, "Body property was set but shouldn't have been");
Assert.That(metadata.ContainsKey("Body"), Is.False);
Assert.That(metadata["BodyUrl"], Is.EqualTo("/messages/someid/body"));
- });
+ }
}
[Test]
diff --git a/src/ServiceControl.Audit.UnitTests/Verification/ControllerConventionsTest.cs b/src/ServiceControl.Audit.UnitTests/Verification/ControllerConventionsTest.cs
index daf43be49d..304235b8f9 100644
--- a/src/ServiceControl.Audit.UnitTests/Verification/ControllerConventionsTest.cs
+++ b/src/ServiceControl.Audit.UnitTests/Verification/ControllerConventionsTest.cs
@@ -14,11 +14,11 @@ public void All_controllers_should_match_convention()
{
var allControllers = typeof(Settings).Assembly.GetTypes().Where(t => typeof(ControllerBase).IsAssignableFrom(t)).ToArray();
Assert.That(allControllers, Is.Not.Empty);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(allControllers.All(c => c.Name.EndsWith("Controller")), Is.True);
Assert.That(allControllers.All(c => c.GetCustomAttributes().Any()), Is.True);
- });
+ }
}
}
}
\ No newline at end of file
diff --git a/src/ServiceControl.Audit/Auditing/AuditIngestionFaultPolicy.cs b/src/ServiceControl.Audit/Auditing/AuditIngestionFaultPolicy.cs
index 02c55db1a9..b4952bff6c 100644
--- a/src/ServiceControl.Audit/Auditing/AuditIngestionFaultPolicy.cs
+++ b/src/ServiceControl.Audit/Auditing/AuditIngestionFaultPolicy.cs
@@ -59,12 +59,12 @@ async Task StoreFailedMessageDocument(ErrorContext errorContext, CancellationTok
Id = Guid.NewGuid().ToString(),
Message = new FailedTransportMessage
{
- Id = errorContext.Message.MessageId,
- Headers = errorContext.Message.Headers,
+ Id = errorContext.MessageId,
+ Headers = errorContext.Headers,
// At the moment we are taking a defensive copy of the body to avoid issues with the message body
// buffers being returned to the pool and potentially being overwritten. Once we know how RavenDB
- // handles byte[] to ReadOnlyMemory conversion we might be able to remove this.
- Body = errorContext.Message.Body.ToArray()
+ // handles byte[] to ReadOnlyMemory conversion, we might be able to remove this.
+ Body = errorContext.Body.ToArray()
},
ExceptionInfo = errorContext.Exception.ToFriendlyString()
};
diff --git a/src/ServiceControl.Audit/Auditing/Metrics/ErrorMetrics.cs b/src/ServiceControl.Audit/Auditing/Metrics/ErrorMetrics.cs
index f01e6a9293..6e5200b63d 100644
--- a/src/ServiceControl.Audit/Auditing/Metrics/ErrorMetrics.cs
+++ b/src/ServiceControl.Audit/Auditing/Metrics/ErrorMetrics.cs
@@ -8,7 +8,7 @@ public record ErrorMetrics(ErrorContext Context, Counter Failures) : IDisp
{
public void Dispose()
{
- var tags = IngestionMetrics.GetMessageTags(Context.Message.Headers);
+ var tags = IngestionMetrics.GetMessageTags(Context.Headers);
tags.Add("result", retry ? "retry" : "stored-poison");
diff --git a/src/ServiceControl.Audit/HostApplicationBuilderExtensions.cs b/src/ServiceControl.Audit/HostApplicationBuilderExtensions.cs
index d65a66697f..14db651ece 100644
--- a/src/ServiceControl.Audit/HostApplicationBuilderExtensions.cs
+++ b/src/ServiceControl.Audit/HostApplicationBuilderExtensions.cs
@@ -68,7 +68,7 @@ public static void AddServiceControlAudit(this IHostApplicationBuilder builder,
services.AddPersistence(persistenceSettings, persistenceConfiguration);
NServiceBusFactory.Configure(settings, transportCustomization, transportSettings, onCriticalError, configuration);
- builder.UseNServiceBus(configuration);
+ services.AddNServiceBusEndpoint(configuration);
builder.AddMetrics(settings);
diff --git a/src/ServiceControl.Audit/Infrastructure/Hosting/Commands/RunCommand.cs b/src/ServiceControl.Audit/Infrastructure/Hosting/Commands/RunCommand.cs
index 22e2fff776..5bf0db7b5c 100644
--- a/src/ServiceControl.Audit/Infrastructure/Hosting/Commands/RunCommand.cs
+++ b/src/ServiceControl.Audit/Infrastructure/Hosting/Commands/RunCommand.cs
@@ -14,7 +14,7 @@ public override async Task Execute(HostArguments args, Settings settings)
{
var endpointConfiguration = new EndpointConfiguration(settings.InstanceName);
var assemblyScanner = endpointConfiguration.AssemblyScanner();
- assemblyScanner.ExcludeAssemblies("ServiceControl.Plugin");
+ assemblyScanner.Disable = true;
var hostBuilder = WebApplication.CreateBuilder();
diff --git a/src/ServiceControl.Audit/Infrastructure/NServiceBusFactory.cs b/src/ServiceControl.Audit/Infrastructure/NServiceBusFactory.cs
index a6cd60b3de..bb8f302f22 100644
--- a/src/ServiceControl.Audit/Infrastructure/NServiceBusFactory.cs
+++ b/src/ServiceControl.Audit/Infrastructure/NServiceBusFactory.cs
@@ -23,7 +23,7 @@ public static void Configure(Settings.Settings settings, ITransportCustomization
{
configuration = new EndpointConfiguration(endpointName);
var assemblyScanner = configuration.AssemblyScanner();
- assemblyScanner.ExcludeAssemblies("ServiceControl.Plugin");
+ assemblyScanner.Disable = true;
}
configuration.EnableFeature();
diff --git a/src/ServiceControl.Audit/ServiceControl.Audit.csproj b/src/ServiceControl.Audit/ServiceControl.Audit.csproj
index 1752bf81bd..bba3cffaad 100644
--- a/src/ServiceControl.Audit/ServiceControl.Audit.csproj
+++ b/src/ServiceControl.Audit/ServiceControl.Audit.csproj
@@ -27,8 +27,6 @@
-
-
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/AuditForwarding.cs b/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/AuditForwarding.cs
index 092244dffb..4407d2cbbd 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/AuditForwarding.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/AuditForwarding.cs
@@ -40,12 +40,12 @@ public void AuditForwardingIsTurnedOn()
.When_a_audit_forwarding_is_on();
nameof(viewModel.AuditForwardingQueueName).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowAuditForwardingQueue, Is.True);
Assert.That(viewModel.AuditForwardingWarning, Is.Not.Empty);
Assert.That(viewModel.AuditForwardingQueueName, Is.EqualTo("audit.log"));
- });
+ }
}
[Test]
@@ -57,12 +57,12 @@ public void AuditForwardingIsTurnedOFF()
.Collect_changed_properties(changedProperties)
.When_a_audit_forwarding_is_off();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowAuditForwardingQueue, Is.False);
Assert.That(viewModel.AuditForwardingWarning, Is.Null);
Assert.That(viewModel.AuditForwardingQueueName, Is.Null);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/HostName.cs b/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/HostName.cs
index 232edf1194..5c2dd6cefb 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/HostName.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/HostName.cs
@@ -40,11 +40,11 @@ public void Screen_Loaded()
{
var viewModel = Given_adding_audit_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditHostName, Is.EqualTo("localhost"));
Assert.That(viewModel.AuditHostNameWarning, Is.Not.EqualTo("Not using localhost can expose ServiceControl to anonymous access."));
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/UserAccount.cs b/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/UserAccount.cs
index 4393e06a84..e1c27a4130 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/UserAccount.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddAuditInstance/UserAccount.cs
@@ -64,7 +64,7 @@ public void Screen_loaded()
var viewModel =
Given_adding_audit_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditUseSystemAccount, Is.True);
Assert.That(viewModel.AuditUseServiceAccount, Is.False);
@@ -72,7 +72,7 @@ public void Screen_loaded()
Assert.That(viewModel.AuditPasswordEnabled, Is.False);
Assert.That(viewModel.AuditPassword, Is.Empty);
Assert.That(viewModel.AuditServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
[Test]
@@ -82,7 +82,7 @@ public void Local_system_account_selected()
Given_adding_audit_instance()
.When_local_system_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditUseSystemAccount, Is.True);
Assert.That(viewModel.AuditUseServiceAccount, Is.False);
@@ -90,7 +90,7 @@ public void Local_system_account_selected()
Assert.That(viewModel.AuditPasswordEnabled, Is.False);
Assert.That(viewModel.AuditPassword, Is.Empty);
Assert.That(viewModel.AuditServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
@@ -101,7 +101,7 @@ public void Local_service_account_selected()
Given_adding_audit_instance()
.When_local_service_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditUseSystemAccount, Is.False);
Assert.That(viewModel.AuditUseServiceAccount, Is.True);
@@ -109,7 +109,7 @@ public void Local_service_account_selected()
Assert.That(viewModel.AuditPasswordEnabled, Is.False);
Assert.That(viewModel.AuditPassword, Is.Empty);
Assert.That(viewModel.AuditServiceAccount, Is.EqualTo("LocalService"));
- });
+ }
}
[Test]
@@ -126,7 +126,7 @@ public void User_account_selected()
nameof(viewModel.AuditPasswordEnabled).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditUseSystemAccount, Is.False);
Assert.That(viewModel.AuditUseServiceAccount, Is.False);
@@ -134,7 +134,7 @@ public void User_account_selected()
Assert.That(viewModel.AuditServiceAccount, Is.Null);
Assert.That(viewModel.AuditPasswordEnabled, Is.True);
Assert.That(viewModel.AuditPassword, Is.Null);
- });
+ }
}
[TestCase("foo", null)]
@@ -155,7 +155,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
nameof(viewModel.AuditPasswordEnabled).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditUseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.AuditUseSystemAccount)));
Assert.That(viewModel.AuditUseServiceAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.AuditUseServiceAccount)));
@@ -163,7 +163,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
Assert.That(viewModel.AuditPasswordEnabled, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.AuditPasswordEnabled)));
Assert.That(viewModel.AuditServiceAccount, Is.EqualTo(userAccount));
Assert.That(viewModel.AuditPassword, Is.EqualTo(userPassword));
- });
+ }
}
[TestCase("foo", null)]
@@ -188,7 +188,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
nameof(viewModel.AuditPassword).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditUseSystemAccount, Is.True, () => string.Format(ShouldBeFalse, nameof(viewModel.AuditUseSystemAccount)));
Assert.That(viewModel.AuditUseServiceAccount, Is.False, () => string.Format(ShouldBeTrue, nameof(viewModel.AuditUseServiceAccount)));
@@ -196,7 +196,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
Assert.That(viewModel.AuditPasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.AuditPasswordEnabled)));
Assert.That(viewModel.AuditServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.AuditPassword, Is.Empty);
- });
+ }
}
@@ -222,7 +222,7 @@ public void User_account_entered_then_local_service_account_selected(string user
nameof(viewModel.AuditPassword).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditUseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.AuditUseSystemAccount)));
Assert.That(viewModel.AuditUseServiceAccount, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.AuditUseServiceAccount)));
@@ -230,7 +230,7 @@ public void User_account_entered_then_local_service_account_selected(string user
Assert.That(viewModel.AuditPasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.AuditPasswordEnabled)));
Assert.That(viewModel.AuditServiceAccount, Is.EqualTo("LocalService"));
Assert.That(viewModel.AuditPassword, Is.Empty);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/ErrorForwarding.cs b/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/ErrorForwarding.cs
index e077191a71..31585525e9 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/ErrorForwarding.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/ErrorForwarding.cs
@@ -40,12 +40,12 @@ public void Error_forwarding_is_turned_on()
.When_a_error_forwarding_is_on();
nameof(viewModel.ErrorForwardingQueueName).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowErrorForwardingQueue, Is.True);
Assert.That(viewModel.ErrorForwardingWarning, Is.Not.Empty);
Assert.That(viewModel.ErrorForwardingQueueName, Is.EqualTo("error.log"));
- });
+ }
}
[Test]
@@ -57,12 +57,12 @@ public void Error_forwarding_is_turned_off()
.Collect_changed_properties(changedProperties)
.When_a_error_forwarding_is_off();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowErrorForwardingQueue, Is.False);
Assert.That(viewModel.ErrorForwardingWarning, Is.Null);
Assert.That(viewModel.ErrorForwardingQueueName, Is.Null);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/HostName.cs b/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/HostName.cs
index 31b208a487..afa5e885ac 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/HostName.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/HostName.cs
@@ -39,11 +39,11 @@ public void Screen_Loaded()
{
var viewModel = Given_adding_error_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorHostName, Is.EqualTo("localhost"));
Assert.That(viewModel.ErrorHostNameWarning, Is.Empty);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/UserAccount.cs b/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/UserAccount.cs
index af34da1fd3..bbd031420d 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/UserAccount.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddErrorInstance/UserAccount.cs
@@ -65,7 +65,7 @@ public void Screen_loaded()
{
var viewModel = Given_adding_error_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorUseSystemAccount, Is.True);
Assert.That(viewModel.ErrorUseServiceAccount, Is.False);
@@ -73,7 +73,7 @@ public void Screen_loaded()
Assert.That(viewModel.ErrorPasswordEnabled, Is.False);
Assert.That(viewModel.ErrorPassword, Is.Empty);
Assert.That(viewModel.ErrorServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
[Test]
@@ -86,7 +86,7 @@ public void Local_system_account_selected()
.Collect_changed_properties(changedProperties)
.When_local_system_account_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorUseSystemAccount, Is.True);
Assert.That(viewModel.ErrorUseServiceAccount, Is.False);
@@ -94,7 +94,7 @@ public void Local_system_account_selected()
Assert.That(viewModel.ErrorPasswordEnabled, Is.False);
Assert.That(viewModel.ErrorPassword, Is.Empty);
Assert.That(viewModel.ErrorServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
[Test]
@@ -113,7 +113,7 @@ public void Local_service_account_selected()
nameof(viewModel.ErrorPasswordEnabled)
.Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorUseSystemAccount, Is.False);
Assert.That(viewModel.ErrorUseServiceAccount, Is.True);
@@ -121,7 +121,7 @@ public void Local_service_account_selected()
Assert.That(viewModel.ErrorPasswordEnabled, Is.False);
Assert.That(viewModel.ErrorPassword, Is.Empty);
Assert.That(viewModel.ErrorServiceAccount, Is.EqualTo("LocalService"));
- });
+ }
}
[Test]
@@ -140,7 +140,7 @@ public void User_account_selected()
nameof(viewModel.ErrorPasswordEnabled)
.Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorUseSystemAccount, Is.False);
Assert.That(viewModel.ErrorUseServiceAccount, Is.False);
@@ -148,7 +148,7 @@ public void User_account_selected()
Assert.That(viewModel.ErrorServiceAccount, Is.Null);
Assert.That(viewModel.ErrorPasswordEnabled, Is.True);
Assert.That(viewModel.ErrorPassword, Is.Null);
- });
+ }
}
@@ -172,7 +172,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
nameof(viewModel.ErrorPasswordEnabled)
.Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorUseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.ErrorUseSystemAccount)));
Assert.That(viewModel.ErrorUseServiceAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.ErrorUseServiceAccount)));
@@ -180,7 +180,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
Assert.That(viewModel.ErrorPasswordEnabled, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.ErrorPasswordEnabled)));
Assert.That(viewModel.ErrorServiceAccount, Is.EqualTo(userAccount), () => string.Format(ShouldEqual, nameof(viewModel.ErrorServiceAccount), userAccount));
Assert.That(viewModel.ErrorPassword, Is.EqualTo(userPassword), () => string.Format(ShouldEqual, nameof(viewModel.ErrorPassword), userPassword));
- });
+ }
}
[TestCase("foo", null)]
@@ -205,7 +205,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
nameof(viewModel.ErrorPassword).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorUseSystemAccount, Is.True, () => string.Format(ShouldBeFalse, nameof(viewModel.ErrorUseSystemAccount)));
Assert.That(viewModel.ErrorUseServiceAccount, Is.False, () => string.Format(ShouldBeTrue, nameof(viewModel.ErrorUseServiceAccount)));
@@ -213,7 +213,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
Assert.That(viewModel.ErrorPasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.ErrorPasswordEnabled)));
Assert.That(viewModel.ErrorServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.ErrorPassword, Is.Empty);
- });
+ }
}
@@ -239,7 +239,7 @@ public void User_account_entered_then_local_service_account_selected(string user
nameof(viewModel.ErrorPassword).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorUseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.ErrorUseSystemAccount)));
Assert.That(viewModel.ErrorUseServiceAccount, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.ErrorUseServiceAccount)));
@@ -247,7 +247,7 @@ public void User_account_entered_then_local_service_account_selected(string user
Assert.That(viewModel.ErrorPasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.ErrorPasswordEnabled)));
Assert.That(viewModel.ErrorServiceAccount, Is.EqualTo("LocalService"));
Assert.That(viewModel.ErrorPassword, Is.Empty);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/ConnectionString.cs b/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/ConnectionString.cs
index fcb0e36b9c..1dd8f6d37b 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/ConnectionString.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/ConnectionString.cs
@@ -47,13 +47,13 @@ public void MSMQ_transport_is_selected()
var viewModel = Given_a_monitoring_instance()
.When_MSQMQ_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SelectedTransport.Name, Is.EqualTo("MSMQ"));
Assert.That(viewModel.SampleConnectionString, Is.Empty);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
[TestAllTransportsExcept("MSMQ")]
@@ -62,12 +62,12 @@ public void Non_MSMQ_transport_is_selected(string transportInfoName)
var viewModel = Given_a_monitoring_instance()
.When_a_transport_is_selected(transportInfoName);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.True);
Assert.That(viewModel.SelectedTransport.Name, Does.StartWith(transportInfoName));
Assert.That(viewModel.SampleConnectionString, Is.Not.Empty);
- });
+ }
if (transportInfoName is "SQLServer" or "AmazonSQS" or "AzureStorageQueue" or "PostgreSQL")
{
@@ -86,12 +86,12 @@ public void Screen_Loaded()
var viewModel = Given_a_monitoring_instance()
.When_no_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SampleConnectionString, Is.Null);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/HostName.cs b/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/HostName.cs
index 8cfd1957c2..84774a3a01 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/HostName.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/HostName.cs
@@ -39,11 +39,11 @@ public void Screen_Loaded()
{
var viewModel = Given_adding_monitoring_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.HostName, Is.EqualTo("localhost"));
Assert.That(viewModel.HostNameWarning, Is.Not.EqualTo("Not using localhost can expose ServiceControl to anonymous access."));
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/UserAccount.cs b/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/UserAccount.cs
index 08ccb32739..a01dccc18f 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/UserAccount.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/AddMonitoringInstance/UserAccount.cs
@@ -72,7 +72,7 @@ public void Screen_loaded()
{
var viewModel = Given_adding_monitoring_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -80,7 +80,7 @@ public void Screen_loaded()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
[Test]
@@ -93,7 +93,7 @@ public void Local_system_account_selected()
.Collect_changed_properties(changedProperties)
.When_local_system_account_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -101,7 +101,7 @@ public void Local_system_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
[Test]
@@ -120,7 +120,7 @@ public void Local_service_account_selected()
nameof(viewModel.PasswordEnabled)
.Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False);
Assert.That(viewModel.UseServiceAccount, Is.True);
@@ -128,7 +128,7 @@ public void Local_service_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
- });
+ }
}
[Test]
@@ -147,7 +147,7 @@ public void User_account_selected()
nameof(viewModel.PasswordEnabled)
.Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -155,7 +155,7 @@ public void User_account_selected()
Assert.That(viewModel.ServiceAccount, Is.Null);
Assert.That(viewModel.PasswordEnabled, Is.True);
Assert.That(viewModel.Password, Is.Null);
- });
+ }
}
@@ -179,7 +179,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
nameof(viewModel.PasswordEnabled)
.Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseServiceAccount)));
@@ -187,7 +187,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
Assert.That(viewModel.PasswordEnabled, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo(userAccount), () => string.Format(ShouldEqual, nameof(viewModel.ServiceAccount), userAccount));
Assert.That(viewModel.Password, Is.EqualTo(userPassword), () => string.Format(ShouldEqual, nameof(viewModel.Password), userPassword));
- });
+ }
}
[TestCase("foo", null)]
@@ -212,7 +212,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -220,7 +220,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
@@ -246,7 +246,7 @@ public void User_account_entered_then_local_service_account_selected(string user
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -254,7 +254,7 @@ public void User_account_entered_then_local_service_account_selected(string user
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/ConnectionString.cs b/src/ServiceControl.Config.Tests/AddInstance/ConnectionString.cs
index 5acd682d02..495d1d9049 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/ConnectionString.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/ConnectionString.cs
@@ -47,13 +47,13 @@ public void MSMQ_transport_is_selected()
var viewModel = Given_a_service_control_instance()
.When_MSQMQ_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SelectedTransport.Name, Is.EqualTo("MSMQ"));
Assert.That(viewModel.SampleConnectionString, Is.Empty);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
[TestAllTransportsExcept("MSMQ")]
@@ -62,12 +62,12 @@ public void Non_MSMQ_transport_is_selected(string transportInfoName)
var viewModel = Given_a_service_control_instance()
.When_a_transport_is_selected(transportInfoName);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.True);
Assert.That(viewModel.SelectedTransport.Name, Does.StartWith(transportInfoName));
Assert.That(viewModel.SampleConnectionString, Is.Not.Empty);
- });
+ }
if (transportInfoName is "SQLServer" or "AmazonSQS" or "AzureStorageQueue" or "PostgreSQL")
{
@@ -86,12 +86,12 @@ public void Screen_Loaded()
var viewModel = Given_a_service_control_instance()
.When_no_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SampleConnectionString, Is.Null);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
}
diff --git a/src/ServiceControl.Config.Tests/AddInstance/InstanceName.cs b/src/ServiceControl.Config.Tests/AddInstance/InstanceName.cs
index d1b551b808..7fd97b9563 100644
--- a/src/ServiceControl.Config.Tests/AddInstance/InstanceName.cs
+++ b/src/ServiceControl.Config.Tests/AddInstance/InstanceName.cs
@@ -20,11 +20,11 @@ public void Add_instance_name_taken_adds_1_to_instance_name()
var expectedErrorInstanceServiceName = $"Particular.{viewModel.ConventionName}-1";
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditInstanceName, Is.EqualTo(expectedAuditInstanceServiceName));
Assert.That(viewModel.ErrorInstanceName, Is.EqualTo(expectedErrorInstanceServiceName));
- });
+ }
}
[Test]
@@ -49,11 +49,11 @@ public void Add_instance_name_with_illegal_characters_gets_sanitized(string inst
SubmitAttempted = true
};
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditInstanceName, Is.EqualTo(expected));
Assert.That(viewModel.ErrorInstanceName, Is.EqualTo(expected));
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/AutoAttachmentModuleTests.cs b/src/ServiceControl.Config.Tests/AutoAttachmentModuleTests.cs
index 5e25b027f4..db9053b683 100644
--- a/src/ServiceControl.Config.Tests/AutoAttachmentModuleTests.cs
+++ b/src/ServiceControl.Config.Tests/AutoAttachmentModuleTests.cs
@@ -25,11 +25,11 @@ public void AttachmentsAreAttached()
var container = builder.Build();
var viewModel = container.Resolve();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.FirstAttachmentActivated, Is.True, "First Attachment should have been attached");
Assert.That(viewModel.SecondAttachmentActivated, Is.True, "Second Attachment should have been attached");
- });
+ }
}
[Test]
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/AuditForwarding.cs b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/AuditForwarding.cs
index 6858418a5b..34ff2b8ccd 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/AuditForwarding.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/AuditForwarding.cs
@@ -40,12 +40,12 @@ public void AuditForwardingIsTurnedOn()
.When_a_audit_forwarding_is_on();
nameof(viewModel.AuditForwardingQueueName).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowAuditForwardingQueue, Is.True);
Assert.That(viewModel.AuditForwardingWarning, Is.Not.Empty);
Assert.That(viewModel.AuditForwardingQueueName, Is.EqualTo("audit.log"));
- });
+ }
}
[Test]
@@ -57,12 +57,12 @@ public void AuditForwardingIsTurnedOFF()
.Collect_changed_properties(changedProperties)
.When_a_audit_forwarding_is_off();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowAuditForwardingQueue, Is.False);
Assert.That(viewModel.AuditForwardingWarning, Is.Null);
Assert.That(viewModel.AuditForwardingQueueName, Is.Null);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/ConnectionString.cs b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/ConnectionString.cs
index ff6e2e98cf..56eb4f8692 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/ConnectionString.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/ConnectionString.cs
@@ -46,13 +46,13 @@ public void MSMQ_transport_is_selected()
var viewModel = Given_an_audit_instance()
.When_MSQMQ_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SelectedTransport.Name, Is.EqualTo("MSMQ"));
Assert.That(viewModel.SampleConnectionString, Is.Empty);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
[TestAllTransportsExcept("MSMQ")]
@@ -61,12 +61,12 @@ public void Non_MSMQ_transport_is_selected(string transportInfoName)
var viewModel = Given_an_audit_instance()
.When_a_transport_is_selected(transportInfoName);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.True);
Assert.That(viewModel.SelectedTransport.Name, Does.StartWith(transportInfoName));
Assert.That(viewModel.SampleConnectionString, Is.Not.Empty);
- });
+ }
if (transportInfoName is "SQLServer" or "AmazonSQS" or "AzureStorageQueue" or "PostgreSQL")
{
@@ -85,12 +85,12 @@ public void Screen_Loaded()
var viewModel = Given_an_audit_instance()
.When_no_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SampleConnectionString, Is.Null);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/HostName.cs b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/HostName.cs
index 63c11ce0e5..8284d35bb9 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/HostName.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/HostName.cs
@@ -40,11 +40,11 @@ public void Screen_Loaded()
{
var viewModel = Given_editing_audit_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.HostName, Is.EqualTo("localhost"));
Assert.That(viewModel.HostNameWarning, Is.Not.EqualTo("Not using localhost can expose ServiceControl to anonymous access."));
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/UserAccount.cs b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/UserAccount.cs
index 338c1d7992..a99003ac5f 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/UserAccount.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditAuditInstance/UserAccount.cs
@@ -86,7 +86,7 @@ public void Local_system_account_selected()
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -94,7 +94,7 @@ public void Local_system_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
@@ -114,7 +114,7 @@ public void Local_service_account_selected()
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False);
Assert.That(viewModel.UseServiceAccount, Is.True);
@@ -122,7 +122,7 @@ public void Local_service_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
- });
+ }
}
[Test]
@@ -141,7 +141,7 @@ public void User_account_selected()
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -149,7 +149,7 @@ public void User_account_selected()
Assert.That(viewModel.ServiceAccount, Is.Null);
Assert.That(viewModel.PasswordEnabled, Is.True);
Assert.That(viewModel.Password, Is.Null);
- });
+ }
}
[TestCase("foo", null)]
@@ -172,7 +172,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseServiceAccount)));
@@ -180,7 +180,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
Assert.That(viewModel.PasswordEnabled, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo(userAccount));
Assert.That(viewModel.Password, Is.EqualTo(userPassword));
- });
+ }
}
[TestCase("foo", null)]
@@ -205,7 +205,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -213,7 +213,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
@@ -239,7 +239,7 @@ public void User_account_entered_then_local_service_account_selected(string user
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -247,7 +247,7 @@ public void User_account_entered_then_local_service_account_selected(string user
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ConnectionString.cs b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ConnectionString.cs
index 12830edf11..ceaaf6a24a 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ConnectionString.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ConnectionString.cs
@@ -47,13 +47,13 @@ public void MSMQ_transport_is_selected()
var viewModel = Given_a_service_control_instance()
.When_MSQMQ_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SelectedTransport.Name, Is.EqualTo("MSMQ"));
Assert.That(viewModel.SampleConnectionString, Is.Empty);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
[TestAllTransportsExcept("MSMQ")]
@@ -62,12 +62,12 @@ public void Non_MSMQ_transport_is_selected(string transportInfoName)
var viewModel = Given_a_service_control_instance()
.When_a_transport_is_selected(transportInfoName);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.True);
Assert.That(viewModel.SelectedTransport.Name, Does.StartWith(transportInfoName));
Assert.That(viewModel.SampleConnectionString, Is.Not.Empty);
- });
+ }
if (transportInfoName is "SQLServer" or "AmazonSQS" or "AzureStorageQueue" or "PostgreSQL")
{
@@ -86,12 +86,12 @@ public void Screen_Loaded()
var viewModel = Given_a_service_control_instance()
.When_no_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SampleConnectionString, Is.Null);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ErrorForwarding.cs b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ErrorForwarding.cs
index 595cb04a4f..19e2ee83dd 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ErrorForwarding.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/ErrorForwarding.cs
@@ -41,12 +41,12 @@ public void Error_forwarding_is_turned_on()
nameof(viewModel.ErrorForwardingQueueName).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowErrorForwardingQueue, Is.True);
Assert.That(viewModel.ErrorForwardingWarning, Is.Not.Empty);
Assert.That(viewModel.ErrorForwardingQueueName, Is.EqualTo("error.log"));
- });
+ }
}
[Test]
@@ -58,12 +58,12 @@ public void Error_forwarding_is_turned_off()
.Collect_changed_properties(changedProperties)
.When_a_error_forwarding_is_off();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowErrorForwardingQueue, Is.False);
Assert.That(viewModel.ErrorForwardingWarning, Is.Null);
Assert.That(viewModel.ErrorForwardingQueueName, Is.Null);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/HostName.cs b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/HostName.cs
index c15f5074a0..53487b1e4e 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/HostName.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/HostName.cs
@@ -40,11 +40,11 @@ public void Screen_Loaded()
{
var viewModel = Given_editing_error_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.HostName, Is.EqualTo("localhost"));
Assert.That(viewModel.HostNameWarning, Is.Not.EqualTo("Not using localhost can expose ServiceControl to anonymous access."));
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/UserAccount.cs b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/UserAccount.cs
index 196f52a2fa..b8a3fdf436 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/UserAccount.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditErrorInstance/UserAccount.cs
@@ -108,7 +108,7 @@ public void Local_system_account_selected()
nameof(viewModel.PasswordEnabled).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -116,7 +116,7 @@ public void Local_system_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
@@ -136,7 +136,7 @@ public void Local_service_account_selected()
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False);
Assert.That(viewModel.UseServiceAccount, Is.True);
@@ -144,7 +144,7 @@ public void Local_service_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
- });
+ }
}
[Test]
@@ -163,7 +163,7 @@ public void User_account_selected()
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -171,7 +171,7 @@ public void User_account_selected()
Assert.That(viewModel.ServiceAccount, Is.Null);
Assert.That(viewModel.PasswordEnabled, Is.True);
Assert.That(viewModel.Password, Is.Null);
- });
+ }
}
[TestCase("foo", null)]
@@ -194,7 +194,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseServiceAccount)));
@@ -202,7 +202,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
Assert.That(viewModel.PasswordEnabled, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo(userAccount));
Assert.That(viewModel.Password, Is.EqualTo(userPassword));
- });
+ }
}
[TestCase("foo", null)]
@@ -227,7 +227,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -235,7 +235,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
@@ -261,7 +261,7 @@ public void User_account_entered_then_local_service_account_selected(string user
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -269,7 +269,7 @@ public void User_account_entered_then_local_service_account_selected(string user
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/ConnectionString.cs b/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/ConnectionString.cs
index af2e19a9ef..e01ab6938d 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/ConnectionString.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/ConnectionString.cs
@@ -47,13 +47,13 @@ public void MSMQ_transport_is_selected()
var viewModel = Given_a_monitoring_instance()
.When_MSQMQ_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SelectedTransport.Name, Is.EqualTo("MSMQ"));
Assert.That(viewModel.SampleConnectionString, Is.Empty);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
[TestAllTransportsExcept("MSMQ")]
@@ -62,12 +62,12 @@ public void Non_MSMQ_transport_is_selected(string transportInfoName)
var viewModel = Given_a_monitoring_instance()
.When_a_transport_is_selected(transportInfoName);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.True);
Assert.That(viewModel.SelectedTransport.Name, Does.StartWith(transportInfoName));
Assert.That(viewModel.SampleConnectionString, Is.Not.Empty);
- });
+ }
if (transportInfoName is "SQLServer" or "AmazonSQS" or "AzureStorageQueue" or "PostgreSQL")
{
@@ -86,12 +86,12 @@ public void Screen_Loaded()
var viewModel = Given_a_monitoring_instance()
.When_no_transport_is_selected();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.SampleConnectionString, Is.Null);
Assert.That(viewModel.TransportWarning, Is.Null);
- });
+ }
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/HostName.cs b/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/HostName.cs
index 96a1da1ce4..e3d56fdf13 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/HostName.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/HostName.cs
@@ -43,11 +43,11 @@ public void Screen_Loaded()
{
var viewModel = Given_editing_monitoring_instance();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.HostName, Is.EqualTo("localhost"));
Assert.That(viewModel.HostNameWarning, Is.Not.EqualTo("Not using localhost can expose ServiceControl to anonymous access."));
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/UserAccount.cs b/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/UserAccount.cs
index 24b7ebc1fd..982b41458d 100644
--- a/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/UserAccount.cs
+++ b/src/ServiceControl.Config.Tests/EditInstance/EditMonitoringInstance/UserAccount.cs
@@ -114,7 +114,7 @@ public void Local_system_account_selected()
nameof(viewModel.PasswordEnabled).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -122,7 +122,7 @@ public void Local_system_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
- });
+ }
}
@@ -140,7 +140,7 @@ public void Local_service_account_selected()
nameof(viewModel.PasswordEnabled).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
#pragma warning disable format
@@ -152,7 +152,7 @@ public void Local_service_account_selected()
Assert.That(viewModel.PasswordEnabled, Is.False);
Assert.That(viewModel.Password, Is.Empty);
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
- });
+ }
}
[Test]
@@ -171,7 +171,7 @@ public void User_account_selected()
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False);
Assert.That(viewModel.UseServiceAccount, Is.False);
@@ -179,7 +179,7 @@ public void User_account_selected()
Assert.That(viewModel.ServiceAccount, Is.Null);
Assert.That(viewModel.PasswordEnabled, Is.True);
Assert.That(viewModel.Password, Is.Null);
- });
+ }
}
[TestCase("foo", null)]
@@ -202,7 +202,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseServiceAccount)));
@@ -210,7 +210,7 @@ public void User_account_selected_and_user_account_entered(string userAccount, s
Assert.That(viewModel.PasswordEnabled, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo(userAccount));
Assert.That(viewModel.Password, Is.EqualTo(userPassword));
- });
+ }
}
[TestCase("foo", null)]
@@ -235,7 +235,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.True, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.False, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -243,7 +243,7 @@ public void User_account_entered_then_system_account_selected(string userAccount
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
@@ -269,7 +269,7 @@ public void User_account_entered_then_local_service_account_selected(string user
nameof(viewModel.Password).Was_notified_of_change(changedProperties);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.UseSystemAccount, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.UseSystemAccount)));
Assert.That(viewModel.UseServiceAccount, Is.True, () => string.Format(ShouldBeTrue, nameof(viewModel.UseServiceAccount)));
@@ -277,7 +277,7 @@ public void User_account_entered_then_local_service_account_selected(string user
Assert.That(viewModel.PasswordEnabled, Is.False, () => string.Format(ShouldBeFalse, nameof(viewModel.PasswordEnabled)));
Assert.That(viewModel.ServiceAccount, Is.EqualTo("LocalService"));
Assert.That(viewModel.Password, Is.Empty);
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/EventAggregationAutoSubscriptionModuleTests.cs b/src/ServiceControl.Config.Tests/EventAggregationAutoSubscriptionModuleTests.cs
index fa2cd7e8c7..7db70027fe 100644
--- a/src/ServiceControl.Config.Tests/EventAggregationAutoSubscriptionModuleTests.cs
+++ b/src/ServiceControl.Config.Tests/EventAggregationAutoSubscriptionModuleTests.cs
@@ -36,17 +36,14 @@ public void AutoSubscribesOnResolve()
Assert.That(events.Subscribers, Does.Not.Contain(nonHandler), "Non-handlers should not be subscribed on activation");
}
- class FakeEvent { }
+ class FakeEvent;
class FakeEventHandler : IHandle
{
public Task HandleAsync(FakeEvent message, CancellationToken cancellationToken) => throw new NotImplementedException();
}
- class FakeNonEventHandler
- {
-
- }
+ class FakeNonEventHandler;
class FakeEventAggregator : IEventAggregator
{
diff --git a/src/ServiceControl.Config.Tests/FeatureTogglesModulesTests.cs b/src/ServiceControl.Config.Tests/FeatureTogglesModulesTests.cs
index 0760492c81..990e936c98 100644
--- a/src/ServiceControl.Config.Tests/FeatureTogglesModulesTests.cs
+++ b/src/ServiceControl.Config.Tests/FeatureTogglesModulesTests.cs
@@ -21,11 +21,11 @@ public void FeatureTogglePropertiesAreInjected()
var injectionTarget = container.Resolve();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(injectionTarget.SomeFeatureIsEnabled, Is.True, "Property with activated feature toggle should be set.");
Assert.That(injectionTarget.SomeUnrelatedFeatureIsEnabled, Is.False, "Property without activated feature toggle should be ignored.");
- });
+ }
}
class FakeClass
diff --git a/src/ServiceControl.Config.Tests/ServiceControlAddScreenLoadedTests.cs b/src/ServiceControl.Config.Tests/ServiceControlAddScreenLoadedTests.cs
index f17073797b..118d0bc687 100644
--- a/src/ServiceControl.Config.Tests/ServiceControlAddScreenLoadedTests.cs
+++ b/src/ServiceControl.Config.Tests/ServiceControlAddScreenLoadedTests.cs
@@ -17,11 +17,11 @@ public void Error_and_Audit_Instances_are_selected_for_install()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.InstallErrorInstance, Is.True);
Assert.That(viewModel.InstallAuditInstance, Is.True);
- });
+ }
}
[Test]
@@ -29,11 +29,11 @@ public void Transports_are_populated()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.Transports, Is.Not.Empty);
Assert.That(viewModel.SelectedTransport, Is.Null);
- });
+ }
}
[Test]
@@ -41,12 +41,12 @@ public void Transport_connection_string_is_null()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ShowConnectionString, Is.False);
Assert.That(viewModel.ConnectionString, Is.Null);
Assert.That(viewModel.SampleConnectionString, Is.Null);
- });
+ }
}
[Test]
@@ -70,7 +70,7 @@ public void User_account_is_set_to_local_system()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.ErrorUseSystemAccount, Is.True);
@@ -78,9 +78,9 @@ public void User_account_is_set_to_local_system()
Assert.That(viewModel.ErrorUseProvidedAccount, Is.False);
Assert.That(viewModel.ErrorPasswordEnabled, Is.False);
Assert.That(viewModel.ErrorPassword, Is.Empty);
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditServiceAccount, Is.EqualTo("LocalSystem"));
Assert.That(viewModel.AuditUseSystemAccount, Is.True);
@@ -88,7 +88,7 @@ public void User_account_is_set_to_local_system()
Assert.That(viewModel.AuditUseProvidedAccount, Is.False);
Assert.That(viewModel.AuditPasswordEnabled, Is.False);
Assert.That(viewModel.AuditPassword, Is.Empty);
- });
+ }
}
[Test]
@@ -96,13 +96,13 @@ public void Hostname_is_local_host()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorHostName, Is.EqualTo("localhost"));
Assert.That(viewModel.ErrorHostNameWarning, Is.Empty);
Assert.That(viewModel.AuditHostName, Is.EqualTo("localhost"));
Assert.That(viewModel.AuditHostNameWarning, Is.Empty);
- });
+ }
}
[Test]
@@ -116,11 +116,11 @@ public void Port_number_are_set_to_defaults_with_no_validation_errors()
var errorPortNumberErrors = errorInfo.GetErrors(nameof(viewModel.ErrorPortNumber));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errorPortNumberErrors, Is.Empty);
Assert.That(viewModel.AuditPortNumber, Is.EqualTo("44444"));
- });
+ }
var auditPortNumberErrors = errorInfo.GetErrors(nameof(viewModel.AuditPortNumber));
@@ -138,11 +138,11 @@ public void Database_maintenance_port_number_are_set_to_defaults_with_no_validat
var errorPortNumberErrors = errorInfo.GetErrors(nameof(viewModel.ErrorDatabaseMaintenancePortNumber));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errorPortNumberErrors, Is.Empty);
Assert.That(viewModel.AuditDatabaseMaintenancePortNumber, Is.EqualTo("44445"));
- });
+ }
var auditPortNumberErrors = errorInfo.GetErrors(nameof(viewModel.AuditDatabaseMaintenancePortNumber));
@@ -157,13 +157,13 @@ public void Destination_path_is_null()
var errorInfo = (INotifyDataErrorInfo)viewModel;
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorDestinationPath, Is.EqualTo($@"{programX86Path}\Particular Software\Particular.ServiceControl"));
Assert.That(errorInfo.GetErrors(nameof(viewModel.ErrorDestinationPath)), Is.Empty);
Assert.That(viewModel.AuditDestinationPath, Is.EqualTo($@"{programX86Path}\Particular Software\Particular.ServiceControl.Audit"));
Assert.That(errorInfo.GetErrors(nameof(viewModel.AuditDestinationPath)), Is.Empty);
- });
+ }
}
[Test]
@@ -173,13 +173,13 @@ public void Log_path_is_null()
var errorInfo = (INotifyDataErrorInfo)viewModel;
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorLogPath, Is.EqualTo($@"{programDataPath}\Particular\ServiceControl\Particular.ServiceControl\Logs"));
Assert.That(errorInfo.GetErrors(nameof(viewModel.ErrorLogPath)), Is.Empty);
Assert.That(viewModel.AuditLogPath, Is.EqualTo($@"{programDataPath}\Particular\ServiceControl\Particular.ServiceControl.Audit\Logs"));
Assert.That(errorInfo.GetErrors(nameof(viewModel.AuditLogPath)), Is.Empty);
- });
+ }
}
@@ -190,13 +190,13 @@ public void Database_path_is_null()
var errorInfo = (INotifyDataErrorInfo)viewModel;
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorDatabasePath, Is.EqualTo($@"{programDataPath}\Particular\ServiceControl\Particular.ServiceControl\DB"));
Assert.That(errorInfo.GetErrors(nameof(viewModel.ErrorDatabasePath)), Is.Empty);
Assert.That(viewModel.AuditDatabasePath, Is.EqualTo($@"{programDataPath}\Particular\ServiceControl\Particular.ServiceControl.Audit\DB"));
Assert.That(errorInfo.GetErrors(nameof(viewModel.AuditDatabasePath)), Is.Empty);
- });
+ }
}
[Test]
@@ -204,21 +204,21 @@ public void Retention_Period_is_set_to_default_days()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorRetentionUnits, Is.EqualTo(TimeSpanUnits.Days));
Assert.That(viewModel.ErrorRetention, Is.EqualTo(SettingConstants.ErrorRetentionPeriodDefaultInDaysForUI));
Assert.That(viewModel.ErrorRetention, Is.GreaterThanOrEqualTo(viewModel.MinimumErrorRetentionPeriod));
Assert.That(viewModel.ErrorRetention, Is.LessThanOrEqualTo(viewModel.MaximumErrorRetentionPeriod));
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditRetentionUnits, Is.EqualTo(TimeSpanUnits.Days));
Assert.That(viewModel.AuditRetention, Is.EqualTo(SettingConstants.AuditRetentionPeriodDefaultInDaysForUI));
Assert.That(viewModel.AuditRetention, Is.GreaterThanOrEqualTo(viewModel.MinimumErrorRetentionPeriod));
Assert.That(viewModel.AuditRetention, Is.LessThanOrEqualTo(viewModel.MaximumErrorRetentionPeriod));
- });
+ }
}
[Test]
@@ -226,17 +226,17 @@ public void Error_queue_name_has_default_value()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorQueueName, Is.Not.Empty);
Assert.That(viewModel.ErrorQueueName, Is.EqualTo("error"));
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditQueueName, Is.Not.Empty);
Assert.That(viewModel.AuditQueueName, Is.EqualTo("audit"));
- });
+ }
}
[Test]
@@ -244,20 +244,20 @@ public void Error_Forwarding_is_disabled()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorForwardingOptions, Is.Not.Empty);
Assert.That(viewModel.ErrorForwarding.Value, Is.EqualTo(false));
Assert.That(viewModel.ErrorForwardingQueueName, Is.Null);
Assert.That(viewModel.ShowErrorForwardingQueue, Is.False);
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditForwardingOptions, Is.Not.Empty);
Assert.That(viewModel.AuditForwarding.Value, Is.EqualTo(false));
Assert.That(viewModel.ShowAuditForwardingQueue, Is.False);
- });
+ }
}
[Test]
@@ -265,17 +265,17 @@ public void Full_text_search_on_bodies_is_enabled()
{
var viewModel = new ServiceControlAddViewModel();
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorEnableFullTextSearchOnBodiesOptions, Is.Not.Empty);
Assert.That(viewModel.ErrorEnableFullTextSearchOnBodies.Value, Is.EqualTo(true));
- });
+ }
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.AuditEnableFullTextSearchOnBodiesOptions, Is.Not.Empty);
Assert.That(viewModel.AuditEnableFullTextSearchOnBodies.Value, Is.EqualTo(true));
- });
+ }
}
}
}
diff --git a/src/ServiceControl.Config.Tests/Validation/AddAuditInstanceValidationTests.cs b/src/ServiceControl.Config.Tests/Validation/AddAuditInstanceValidationTests.cs
index 800976d87a..449208f04a 100644
--- a/src/ServiceControl.Config.Tests/Validation/AddAuditInstanceValidationTests.cs
+++ b/src/ServiceControl.Config.Tests/Validation/AddAuditInstanceValidationTests.cs
@@ -30,11 +30,11 @@ public void Convention_name_cannot_be_empty_when_instance_names_are_not_provided
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(instanceNamesProvided); // Provided because the convention default auto-fills them on instantiation
Assert.That(notifyErrorInfo.GetErrors(nameof(viewModel.ConventionName)), Is.Empty);
- });
+ }
}
[Test]
@@ -59,11 +59,11 @@ public void Convention_name_can_be_empty_when_instance_names_are_provided()
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(instanceNamesProvided, Is.True, "Instance names were not provided.");
Assert.That(notifyErrorInfo.GetErrors(nameof(viewModel.ConventionName)), Is.Empty);
- });
+ }
}
[Test]
@@ -77,11 +77,11 @@ public void
ConventionName = "Something"
};
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorInstanceName, Is.EqualTo($"Particular.{viewModel.ConventionName}"));
Assert.That(viewModel.AuditInstanceName, Is.EqualTo($"Particular.{viewModel.ConventionName}.Audit"));
- });
+ }
}
#endregion
@@ -221,14 +221,14 @@ public void User_account_info_cannot_be_empty_when_adding_audit_instance()
var selectedAccount = viewModel.AuditServiceAccount;
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.AuditServiceAccount));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
//by default the add instance will always have a value of "LocalSystem"(even if you manually set everything to false or empty)
Assert.That(selectedAccount, Is.EqualTo("LocalSystem"));
Assert.That(errors, Is.Empty);
- });
+ }
}
@@ -358,12 +358,12 @@ public void Audit_hostname_cannot_contain_invalid_characters_when_adding_audit_i
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.AuditHostName));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors, Is.Not.Empty, "Hostname validation should exist and trigger for invalid hostnames");
Assert.That(errors.Cast().Any(error => error.Contains("Hostname is not valid")), Is.True,
"Hostname validation should display the exact error message 'Hostname is not valid'");
- });
+ }
}
#endregion
diff --git a/src/ServiceControl.Config.Tests/Validation/AddErrorInstanceValidationTests.cs b/src/ServiceControl.Config.Tests/Validation/AddErrorInstanceValidationTests.cs
index 12150cab65..d81a07c4bd 100644
--- a/src/ServiceControl.Config.Tests/Validation/AddErrorInstanceValidationTests.cs
+++ b/src/ServiceControl.Config.Tests/Validation/AddErrorInstanceValidationTests.cs
@@ -30,11 +30,11 @@ public void Convention_name_cannot_be_empty_when_instance_names_are_not_provided
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(instanceNamesProvided); // Provided because the convention default auto-fills them on instantiation
Assert.That(notifyErrorInfo.GetErrors(nameof(viewModel.ConventionName)), Is.Empty);
- });
+ }
}
[Test]
@@ -61,11 +61,11 @@ public void Convention_name_can_be_empty_when_instance_names_are_provided()
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(instanceNamesProvided, Is.True, "Instance names were not provided.");
Assert.That(notifyErrorInfo.GetErrors(nameof(viewModel.ConventionName)), Is.Empty);
- });
+ }
}
[Test]
@@ -78,11 +78,11 @@ public void When_convention_name_not_empty_instance_names_should_include_convent
ConventionName = "Something"
};
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(viewModel.ErrorInstanceName, Is.EqualTo($"Particular.{viewModel.ConventionName}"));
Assert.That(viewModel.AuditInstanceName, Is.EqualTo($"Particular.{viewModel.ConventionName}.Audit"));
- });
+ }
}
#endregion
@@ -224,11 +224,11 @@ public void User_account_info_cannot_be_empty_when_adding_error_instance()
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.ErrorServiceAccount));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(selectedAccount, Is.EqualTo("LocalSystem"));
Assert.That(errors, Is.Empty);
- });
+ }
}
[Test]
@@ -357,12 +357,12 @@ public void Error_hostname_cannot_contain_invalid_characters_when_adding_error_i
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.ErrorHostName));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors, Is.Not.Empty, "Hostname validation should exist and trigger for invalid hostnames");
Assert.That(errors.Cast().Any(error => error.Contains("Hostname is not valid")), Is.True,
"Hostname validation should display the exact error message 'Hostname is not valid'");
- });
+ }
}
#endregion
diff --git a/src/ServiceControl.Config.Tests/Validation/AddMonitoringInstanceValidationTests.cs b/src/ServiceControl.Config.Tests/Validation/AddMonitoringInstanceValidationTests.cs
index 5a089ddee9..219228c912 100644
--- a/src/ServiceControl.Config.Tests/Validation/AddMonitoringInstanceValidationTests.cs
+++ b/src/ServiceControl.Config.Tests/Validation/AddMonitoringInstanceValidationTests.cs
@@ -63,11 +63,11 @@ public void User_account_info_cannot_be_empty_when_adding_monitoring_instance()
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.ServiceAccount));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(selectedAccount, Is.EqualTo("LocalSystem"));
Assert.That(errors, Is.Empty);
- });
+ }
}
//if custom user account is selected, then account name are required fields
@@ -162,12 +162,12 @@ public void Monitoring_hostname_cannot_contain_invalid_characters_when_adding_mo
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.HostName));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors, Is.Not.Empty, "Hostname validation should exist and trigger for invalid hostnames");
Assert.That(errors.Cast().Any(error => error.Contains("Hostname is not valid")), Is.True,
"Hostname validation should display the exact error message 'Hostname is not valid'");
- });
+ }
}
#endregion
diff --git a/src/ServiceControl.Config.Tests/Validation/EditAuditInstanceValidationTests.cs b/src/ServiceControl.Config.Tests/Validation/EditAuditInstanceValidationTests.cs
index 977bc00b9e..8a23c110b3 100644
--- a/src/ServiceControl.Config.Tests/Validation/EditAuditInstanceValidationTests.cs
+++ b/src/ServiceControl.Config.Tests/Validation/EditAuditInstanceValidationTests.cs
@@ -163,12 +163,12 @@ public void Audit_hostname_cannot_contain_invalid_characters_when_editing_audit_
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.HostName));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors, Is.Not.Empty, "Hostname validation should exist and trigger for invalid hostnames");
Assert.That(errors.Cast().Any(error => error.Contains("Hostname is not valid")), Is.True,
"Hostname validation should display the exact error message 'Hostname is not valid'");
- });
+ }
}
#endregion
diff --git a/src/ServiceControl.Config.Tests/Validation/EditErrorInstanceValidationTests.cs b/src/ServiceControl.Config.Tests/Validation/EditErrorInstanceValidationTests.cs
index 230bf2bbad..52b8d82417 100644
--- a/src/ServiceControl.Config.Tests/Validation/EditErrorInstanceValidationTests.cs
+++ b/src/ServiceControl.Config.Tests/Validation/EditErrorInstanceValidationTests.cs
@@ -156,12 +156,12 @@ public void Error_hostname_cannot_contain_invalid_characters_when_editing_error_
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.HostName));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors, Is.Not.Empty, "Hostname validation should exist and trigger for invalid hostnames");
Assert.That(errors.Cast().Any(error => error.Contains("Hostname is not valid")), Is.True,
"Hostname validation should display the exact error message 'Hostname is not valid'");
- });
+ }
}
#endregion
diff --git a/src/ServiceControl.Config.Tests/Validation/EditMonitoringInstanceValidationTests.cs b/src/ServiceControl.Config.Tests/Validation/EditMonitoringInstanceValidationTests.cs
index 2754b0dd87..8014597210 100644
--- a/src/ServiceControl.Config.Tests/Validation/EditMonitoringInstanceValidationTests.cs
+++ b/src/ServiceControl.Config.Tests/Validation/EditMonitoringInstanceValidationTests.cs
@@ -78,12 +78,12 @@ public void Monitoring_hostname_cannot_contain_invalid_characters_when_editing_m
var notifyErrorInfo = GetNotifyErrorInfo(viewModel);
var errors = notifyErrorInfo.GetErrors(nameof(viewModel.HostName));
- Assert.Multiple(() =>
+ using (Assert.EnterMultipleScope())
{
Assert.That(errors, Is.Not.Empty, "Hostname validation should exist and trigger for invalid hostnames");
Assert.That(errors.Cast().Any(error => error.Contains("Hostname is not valid")), Is.True,
"Hostname validation should display the exact error message 'Hostname is not valid'");
- });
+ }
}
#endregion
diff --git a/src/ServiceControl.Config/Events/LicenseUpdated.cs b/src/ServiceControl.Config/Events/LicenseUpdated.cs
index b427f49e02..c1d3862b10 100644
--- a/src/ServiceControl.Config/Events/LicenseUpdated.cs
+++ b/src/ServiceControl.Config/Events/LicenseUpdated.cs
@@ -1,6 +1,4 @@
namespace ServiceControl.Config.Events
{
- class LicenseUpdated
- {
- }
+ class LicenseUpdated;
}
\ No newline at end of file
diff --git a/src/ServiceControl.Config/Events/PostRefreshInstances.cs b/src/ServiceControl.Config/Events/PostRefreshInstances.cs
index 853b21e1b9..702a3dd469 100644
--- a/src/ServiceControl.Config/Events/PostRefreshInstances.cs
+++ b/src/ServiceControl.Config/Events/PostRefreshInstances.cs
@@ -1,6 +1,4 @@
namespace ServiceControl.Config.Events
{
- class PostRefreshInstances
- {
- }
+ class PostRefreshInstances;
}
\ No newline at end of file
diff --git a/src/ServiceControl.Config/Events/RefreshInstances.cs b/src/ServiceControl.Config/Events/RefreshInstances.cs
index 9d523991e5..68ccbbdf68 100644
--- a/src/ServiceControl.Config/Events/RefreshInstances.cs
+++ b/src/ServiceControl.Config/Events/RefreshInstances.cs
@@ -1,6 +1,4 @@
namespace ServiceControl.Config.Events
{
- class RefreshInstances
- {
- }
+ class RefreshInstances;
}
\ No newline at end of file
diff --git a/src/ServiceControl.Config/Events/ResetInstances.cs b/src/ServiceControl.Config/Events/ResetInstances.cs
index 8e30e3010a..5e6d57deba 100644
--- a/src/ServiceControl.Config/Events/ResetInstances.cs
+++ b/src/ServiceControl.Config/Events/ResetInstances.cs
@@ -1,6 +1,4 @@
namespace ServiceControl.Config.Events
{
- class ResetInstances
- {
- }
+ class ResetInstances;
}
\ No newline at end of file
diff --git a/src/ServiceControl.Config/Framework/Commands/IAsyncCommand.cs b/src/ServiceControl.Config/Framework/Commands/IAsyncCommand.cs
index 08e988814f..ef8b4a4ed9 100644
--- a/src/ServiceControl.Config/Framework/Commands/IAsyncCommand.cs
+++ b/src/ServiceControl.Config/Framework/Commands/IAsyncCommand.cs
@@ -2,9 +2,7 @@
{
using System.Threading.Tasks;
- public interface IAsyncCommand : IAsyncCommand