From d53602b77b59b820e38293efd79007b182e1f302 Mon Sep 17 00:00:00 2001 From: Ivan Ball-llovera Date: Tue, 28 Jul 2026 09:51:05 -0400 Subject: [PATCH] deps: bump the analyzers group and remediate the new Sonar rules Completes the Dependabot sweep. Bumps Meziantou.Analyzer 3.0.124 -> 3.0.133 and SonarAnalyzer.CSharp 10.29.0.143774 -> 10.30.0.144632 (was #147), which was held out of the consolidated bump PR because 10.30 ships three new rules that fail this build under TreatWarningsAsErrors. S8949 (3 sites) is a REAL defect and is fixed properly. SoftDeletedUserMiddleware was calling the cache and the soft-delete validator without a CancellationToken, even though all three APIs accept one, so a client disconnect never cancelled the lookups. They now pass context.RequestAborted. S8969 (38 sites) is mostly right: 34 were genuine redundant null-forgiving operators and are removed. FOUR were wrong. At those the analyzer claimed the compiler already knew the expression was non-null, and removing the operator immediately failed with CS8602/CS8629. Those four are restored, and the rule is downgraded to a suggestion in .editorconfig: under TreatWarningsAsErrors a false positive is a broken build, not a nudge, so it cannot gate CI at that accuracy. S8970 (3 sites) is wrong at every site it flags here. It claims nullable warnings are disabled and the operator is pointless, but each site is the deliberate `null!` / `default!` initializer pattern in a .razor component, where removing it fails with CS8625/CS8604. Suppressed via NoWarn in Directory.Build.props rather than .editorconfig, because a dotnet_diagnostic severity does not reach Razor-generated code. The measured false-positive rate (7 of 41) is why neither nullability rule is left at error severity. The compiler is the authority on nullability, not the analyzer; both suppressions carry that reasoning inline for whoever revisits them. Full solution 2483/2483 green in Release, 0 warnings; facts --check clean; 25 lock files regenerated. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01RpWirEitGZ2AMEQhd7NCD9 --- .editorconfig | 20 ++++++++++++++ Directory.Build.props | 8 +++++- Directory.Packages.props | 4 +-- .../Services/EntityQueryService.cs | 2 +- .../packages.lock.json | 12 ++++----- .../MMCA.Common.Domain/packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../Extensions/DomainHelper.cs | 2 +- .../MMCA.Common.Shared/packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../MMCA.Common.Aspire/packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../MMCA.Common.Testing.UI/packages.lock.json | 12 ++++----- .../MMCA.Common.Testing/packages.lock.json | 12 ++++----- .../Middleware/SoftDeletedUserMiddleware.cs | 6 ++--- .../MMCA.Common.API/packages.lock.json | 12 ++++----- .../MMCA.Common.Grpc/packages.lock.json | 12 ++++----- .../MMCA.Common.UI.Web/packages.lock.json | 12 ++++----- .../MMCA.Common.UI/packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../Concurrency/KeyedSemaphoreStripeTests.cs | 2 +- .../ResultJsonConverterFactoryTests.cs | 14 +++++----- .../packages.lock.json | 12 ++++----- .../OutboxPollFilterProcessorTests.cs | 24 ++++++++--------- .../packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- .../MMCA.Common.API.Tests/packages.lock.json | 12 ++++----- .../JwtForwardingClientInterceptorTests.cs | 26 +++++++++---------- .../MMCA.Common.Grpc.Tests/packages.lock.json | 12 ++++----- .../MMCA.Common.UI.Tests/packages.lock.json | 12 ++++----- .../packages.lock.json | 12 ++++----- 35 files changed, 217 insertions(+), 191 deletions(-) diff --git a/.editorconfig b/.editorconfig index 6d384df6..4c7d677f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -830,3 +830,23 @@ dotnet_diagnostic.CA2007.severity = warning [Source/Presentation/MMCA.Common.UI*/**.cs] dotnet_diagnostic.CA2007.severity = none + +# S8969 / S8970 (new in SonarAnalyzer 10.30): "remove this null-forgiving operator". +# Downgraded from the baseline error severity because both produce FALSE POSITIVES here, and +# under TreatWarningsAsErrors a false positive is a broken build rather than a nudge. Measured +# on the 10.29 -> 10.30 bump: 41 sites flagged, 7 of them wrong. +# +# S8970 was wrong at ALL 3 of its sites (suppressed via NoWarn in Directory.Build.props, since +# an .editorconfig severity does not reach Razor-generated code). It claims nullable warnings are disabled and the +# operator is therefore pointless, but the flagged code is the deliberate `null!` / `default!` +# initializer pattern in .razor components, where removing the operator immediately fails with +# CS8625/CS8604. Disabled outright. +# +# S8969 was wrong at 4 of 38. It claims the compiler already knows the expression is non-null, +# and at those four the compiler disagreed with CS8602/CS8629. The other 34 were genuine and +# have been fixed. Kept as a suggestion so real redundancies still surface without gating CI. +# +# Revisit when Sonar tightens these rules; the compiler is the authority on nullability, not the +# analyzer. +[*.{cs,razor}] +dotnet_diagnostic.S8969.severity = suggestion diff --git a/Directory.Build.props b/Directory.Build.props index 6564b1bf..a82ad157 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -13,7 +13,13 @@ true true true - $(NoWarn);CS1591;RMG020 + + $(NoWarn);CS1591;RMG020;S8970 diff --git a/Directory.Packages.props b/Directory.Packages.props index c87eff97..592d41c9 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -97,10 +97,10 @@ upper bounds and fail restore with NU1608. Bump together with Microsoft.Maui.Controls. --> - + - + diff --git a/Source/Core/MMCA.Common.Application/Services/EntityQueryService.cs b/Source/Core/MMCA.Common.Application/Services/EntityQueryService.cs index 2bf7a67d..48a9ee4e 100644 --- a/Source/Core/MMCA.Common.Application/Services/EntityQueryService.cs +++ b/Source/Core/MMCA.Common.Application/Services/EntityQueryService.cs @@ -389,7 +389,7 @@ public virtual async Task> GetByIdAsync( // Same rule as the list path: only shape when a field subset was requested. return string.IsNullOrWhiteSpace(fields) - ? Result.Success(dto!) + ? Result.Success(dto) : Result.Success(QueryFieldService.ShapeData(dto, fields)); } diff --git a/Source/Core/MMCA.Common.Application/packages.lock.json b/Source/Core/MMCA.Common.Application/packages.lock.json index 62a862e2..3a374d00 100644 --- a/Source/Core/MMCA.Common.Application/packages.lock.json +++ b/Source/Core/MMCA.Common.Application/packages.lock.json @@ -14,9 +14,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.FeatureManagement": { "type": "Direct", @@ -76,9 +76,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Core/MMCA.Common.Domain/packages.lock.json b/Source/Core/MMCA.Common.Domain/packages.lock.json index a6668d96..d394f701 100644 --- a/Source/Core/MMCA.Common.Domain/packages.lock.json +++ b/Source/Core/MMCA.Common.Domain/packages.lock.json @@ -4,9 +4,9 @@ "net10.0": { "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -28,9 +28,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Core/MMCA.Common.Infrastructure/packages.lock.json b/Source/Core/MMCA.Common.Infrastructure/packages.lock.json index b14d1041..4f4e9be2 100644 --- a/Source/Core/MMCA.Common.Infrastructure/packages.lock.json +++ b/Source/Core/MMCA.Common.Infrastructure/packages.lock.json @@ -63,9 +63,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.AspNetCore.SignalR.StackExchangeRedis": { "type": "Direct", @@ -191,9 +191,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Direct", diff --git a/Source/Core/MMCA.Common.Shared/Extensions/DomainHelper.cs b/Source/Core/MMCA.Common.Shared/Extensions/DomainHelper.cs index 8b943109..ae1873b6 100644 --- a/Source/Core/MMCA.Common.Shared/Extensions/DomainHelper.cs +++ b/Source/Core/MMCA.Common.Shared/Extensions/DomainHelper.cs @@ -58,7 +58,7 @@ private static TIdentifier ParseOtherTypes(string id, Type type) return bool.TryParse(id, out var b) ? (TIdentifier)(object)b : (TIdentifier)(object)false; if (type.IsEnum) - return Enum.TryParse(type, id, ignoreCase: true, out var enumValue) ? (TIdentifier)enumValue! : default!; + return Enum.TryParse(type, id, ignoreCase: true, out var enumValue) ? (TIdentifier)enumValue : default!; throw new FormatException($"Unsupported identifier type: {type.FullName}"); } diff --git a/Source/Core/MMCA.Common.Shared/packages.lock.json b/Source/Core/MMCA.Common.Shared/packages.lock.json index a729d3f5..c6eb31cc 100644 --- a/Source/Core/MMCA.Common.Shared/packages.lock.json +++ b/Source/Core/MMCA.Common.Shared/packages.lock.json @@ -4,9 +4,9 @@ "net10.0": { "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -28,9 +28,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json b/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json index be8ba050..6cba3506 100644 --- a/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Aspire.Hosting/packages.lock.json @@ -177,9 +177,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -201,9 +201,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Hosting/MMCA.Common.Aspire/packages.lock.json b/Source/Hosting/MMCA.Common.Aspire/packages.lock.json index 3a3c07c8..59eab09e 100644 --- a/Source/Hosting/MMCA.Common.Aspire/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Aspire/packages.lock.json @@ -44,9 +44,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.Extensions.Http.Resilience": { "type": "Direct", @@ -138,9 +138,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Hosting/MMCA.Common.Testing.Architecture/packages.lock.json b/Source/Hosting/MMCA.Common.Testing.Architecture/packages.lock.json index e2ed7fd3..d614723e 100644 --- a/Source/Hosting/MMCA.Common.Testing.Architecture/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Testing.Architecture/packages.lock.json @@ -10,9 +10,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -43,9 +43,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Hosting/MMCA.Common.Testing.E2E/packages.lock.json b/Source/Hosting/MMCA.Common.Testing.E2E/packages.lock.json index 0a322c46..145206b6 100644 --- a/Source/Hosting/MMCA.Common.Testing.E2E/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Testing.E2E/packages.lock.json @@ -30,9 +30,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.Playwright": { "type": "Direct", @@ -64,9 +64,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json b/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json index 4ec56de9..fdcd5604 100644 --- a/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Testing.UI/packages.lock.json @@ -23,9 +23,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -53,9 +53,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Hosting/MMCA.Common.Testing/packages.lock.json b/Source/Hosting/MMCA.Common.Testing/packages.lock.json index a27dd205..3383f731 100644 --- a/Source/Hosting/MMCA.Common.Testing/packages.lock.json +++ b/Source/Hosting/MMCA.Common.Testing/packages.lock.json @@ -10,9 +10,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.AspNetCore.Mvc.Testing": { "type": "Direct", @@ -85,9 +85,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Presentation/MMCA.Common.API/Middleware/SoftDeletedUserMiddleware.cs b/Source/Presentation/MMCA.Common.API/Middleware/SoftDeletedUserMiddleware.cs index 4c354b41..e23be9a7 100644 --- a/Source/Presentation/MMCA.Common.API/Middleware/SoftDeletedUserMiddleware.cs +++ b/Source/Presentation/MMCA.Common.API/Middleware/SoftDeletedUserMiddleware.cs @@ -63,7 +63,7 @@ public async Task InvokeAsync( var cacheKey = string.Create(CultureInfo.InvariantCulture, $"user:deleted:{userId.Value}"); // Check cache first - var cachedResult = await cacheService.GetAsync(cacheKey).ConfigureAwait(false); + var cachedResult = await cacheService.GetAsync(cacheKey, context.RequestAborted).ConfigureAwait(false); if (cachedResult is true) { context.Response.StatusCode = StatusCodes.Status401Unauthorized; @@ -73,8 +73,8 @@ public async Task InvokeAsync( if (cachedResult is null) { // Cache miss — check database - var isDeleted = await softDeletedUserValidator.IsUserSoftDeletedAsync(userId.Value).ConfigureAwait(false); - await cacheService.SetAsync(cacheKey, isDeleted, CacheDuration).ConfigureAwait(false); + var isDeleted = await softDeletedUserValidator.IsUserSoftDeletedAsync(userId.Value, context.RequestAborted).ConfigureAwait(false); + await cacheService.SetAsync(cacheKey, isDeleted, CacheDuration, context.RequestAborted).ConfigureAwait(false); if (isDeleted) { diff --git a/Source/Presentation/MMCA.Common.API/packages.lock.json b/Source/Presentation/MMCA.Common.API/packages.lock.json index 3e5506f1..7346bf71 100644 --- a/Source/Presentation/MMCA.Common.API/packages.lock.json +++ b/Source/Presentation/MMCA.Common.API/packages.lock.json @@ -28,9 +28,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.AspNetCore.Authentication.Google": { "type": "Direct", @@ -97,9 +97,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Presentation/MMCA.Common.Grpc/packages.lock.json b/Source/Presentation/MMCA.Common.Grpc/packages.lock.json index ec2c7914..7fcd4b79 100644 --- a/Source/Presentation/MMCA.Common.Grpc/packages.lock.json +++ b/Source/Presentation/MMCA.Common.Grpc/packages.lock.json @@ -35,9 +35,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.Extensions.Http.Resilience": { "type": "Direct", @@ -78,9 +78,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json b/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json index 3b72d7a3..1754b3dd 100644 --- a/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json +++ b/Source/Presentation/MMCA.Common.UI.Web/packages.lock.json @@ -4,9 +4,9 @@ "net10.0": { "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -28,9 +28,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Source/Presentation/MMCA.Common.UI/packages.lock.json b/Source/Presentation/MMCA.Common.UI/packages.lock.json index 8724ecc2..c971bd94 100644 --- a/Source/Presentation/MMCA.Common.UI/packages.lock.json +++ b/Source/Presentation/MMCA.Common.UI/packages.lock.json @@ -4,9 +4,9 @@ "net10.0": { "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.AspNetCore.Components.Authorization": { "type": "Direct", @@ -169,9 +169,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json b/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json index 983dce59..cba33bf3 100644 --- a/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json +++ b/Tests/Architecture/MMCA.Common.Architecture.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -43,9 +43,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json index c2495852..1647ecd5 100644 --- a/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Application.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -43,9 +43,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Core/MMCA.Common.Domain.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Domain.Tests/packages.lock.json index a7b00ae8..74154851 100644 --- a/Tests/Core/MMCA.Common.Domain.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Domain.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -34,9 +34,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json index c3c1f54b..36aa62db 100644 --- a/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Infrastructure.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.EntityFrameworkCore.Sqlite": { "type": "Direct", @@ -85,9 +85,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Core/MMCA.Common.Shared.Tests/Concurrency/KeyedSemaphoreStripeTests.cs b/Tests/Core/MMCA.Common.Shared.Tests/Concurrency/KeyedSemaphoreStripeTests.cs index f9b29b0b..233eb332 100644 --- a/Tests/Core/MMCA.Common.Shared.Tests/Concurrency/KeyedSemaphoreStripeTests.cs +++ b/Tests/Core/MMCA.Common.Shared.Tests/Concurrency/KeyedSemaphoreStripeTests.cs @@ -83,7 +83,7 @@ public async Task AcquireAsync_DifferentStripes_ProceedIndependently() { var other = keys.Select(k => sut.AcquireAsync(k)).FirstOrDefault(t => t.IsCompleted); other.Should().NotBeNull("with more than one stripe some key must map to a free stripe"); - (await other!).Dispose(); + (await other).Dispose(); } finally { diff --git a/Tests/Core/MMCA.Common.Shared.Tests/Serialization/ResultJsonConverterFactoryTests.cs b/Tests/Core/MMCA.Common.Shared.Tests/Serialization/ResultJsonConverterFactoryTests.cs index 4350cd9b..e0fd7950 100644 --- a/Tests/Core/MMCA.Common.Shared.Tests/Serialization/ResultJsonConverterFactoryTests.cs +++ b/Tests/Core/MMCA.Common.Shared.Tests/Serialization/ResultJsonConverterFactoryTests.cs @@ -23,7 +23,7 @@ public void NonGenericSuccess_RoundTrips() var roundTripped = JsonSerializer.Deserialize(json); roundTripped.Should().NotBeNull(); - roundTripped!.IsSuccess.Should().BeTrue(); + roundTripped.IsSuccess.Should().BeTrue(); roundTripped.Errors.Should().BeEmpty(); } @@ -36,7 +36,7 @@ public void NonGenericFailure_RoundTripsErrors() var roundTripped = JsonSerializer.Deserialize(json); roundTripped.Should().NotBeNull(); - roundTripped!.IsFailure.Should().BeTrue(); + roundTripped.IsFailure.Should().BeTrue(); roundTripped.Errors.Should().ContainSingle() .Which.Should().Be(original.Errors[0]); } @@ -51,7 +51,7 @@ public void GenericSuccess_RoundTripsValue() var roundTripped = JsonSerializer.Deserialize>(json); roundTripped.Should().NotBeNull(); - roundTripped!.IsSuccess.Should().BeTrue(); + roundTripped.IsSuccess.Should().BeTrue(); roundTripped.Value.Should().Be(original.Value); } @@ -64,7 +64,7 @@ public void GenericFailure_RoundTripsErrorsWithNullValue() var roundTripped = JsonSerializer.Deserialize>(json); roundTripped.Should().NotBeNull(); - roundTripped!.IsFailure.Should().BeTrue(); + roundTripped.IsFailure.Should().BeTrue(); roundTripped.Value.Should().BeNull(); roundTripped.Errors.Should().ContainSingle() .Which.Type.Should().Be(ErrorType.NotFound); @@ -83,9 +83,9 @@ public void PagedCollectionResult_UnderWebOptions_RoundTrips() var roundTripped = JsonSerializer.Deserialize>>(json, WebOptions); roundTripped.Should().NotBeNull(); - roundTripped!.IsSuccess.Should().BeTrue(); + roundTripped.IsSuccess.Should().BeTrue(); roundTripped.Value.Should().NotBeNull(); - roundTripped.Value!.Items.Should().BeEquivalentTo(payload.Items); + roundTripped.Value.Items.Should().BeEquivalentTo(payload.Items); roundTripped.Value.PaginationMetadata.TotalItemCount.Should().Be(2); roundTripped.Value.PaginationMetadata.PageSize.Should().Be(10); roundTripped.Value.PaginationMetadata.CurrentPage.Should().Be(1); @@ -112,7 +112,7 @@ public void UnknownProperties_AreSkipped() var roundTripped = JsonSerializer.Deserialize>(json, WebOptions); roundTripped.Should().NotBeNull(); - roundTripped!.IsSuccess.Should().BeTrue(); + roundTripped.IsSuccess.Should().BeTrue(); roundTripped.Value.Should().Be(new TestDTO(7, "X")); } } diff --git a/Tests/Core/MMCA.Common.Shared.Tests/packages.lock.json b/Tests/Core/MMCA.Common.Shared.Tests/packages.lock.json index 8637f519..c018a3fc 100644 --- a/Tests/Core/MMCA.Common.Shared.Tests/packages.lock.json +++ b/Tests/Core/MMCA.Common.Shared.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -34,9 +34,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Hosting/MMCA.Common.Aspire.Tests/Telemetry/OutboxPollFilterProcessorTests.cs b/Tests/Hosting/MMCA.Common.Aspire.Tests/Telemetry/OutboxPollFilterProcessorTests.cs index 32a6fcad..cb3fbacb 100644 --- a/Tests/Hosting/MMCA.Common.Aspire.Tests/Telemetry/OutboxPollFilterProcessorTests.cs +++ b/Tests/Hosting/MMCA.Common.Aspire.Tests/Telemetry/OutboxPollFilterProcessorTests.cs @@ -45,9 +45,9 @@ public void PollSpan_IsUnrecorded() using var poll = _outboxSource.StartActivity("OutboxPoll"); poll.Should().NotBeNull(); - _sut.OnEnd(poll!); + _sut.OnEnd(poll); - IsRecorded(poll!).Should().BeFalse("poll spans must be suppressed from export"); + IsRecorded(poll).Should().BeFalse("poll spans must be suppressed from export"); } [Fact] @@ -59,9 +59,9 @@ public void ChildOfPollSpan_IsUnrecorded() using var sqlChild = _otherSource.StartActivity("SELECT OutboxMessages"); sqlChild.Should().NotBeNull(); - _sut.OnEnd(sqlChild!); + _sut.OnEnd(sqlChild); - IsRecorded(sqlChild!).Should().BeFalse("children of poll spans must be suppressed"); + IsRecorded(sqlChild).Should().BeFalse("children of poll spans must be suppressed"); } [Fact] @@ -72,9 +72,9 @@ public void GrandchildOfPollSpan_IsUnrecorded() using var grandchild = _otherSource.StartActivity("Leaf"); grandchild.Should().NotBeNull(); - _sut.OnEnd(grandchild!); + _sut.OnEnd(grandchild); - IsRecorded(grandchild!).Should().BeFalse("the full parent chain is walked"); + IsRecorded(grandchild).Should().BeFalse("the full parent chain is walked"); } [Fact] @@ -83,9 +83,9 @@ public void UnrelatedRootSpan_StaysRecorded() using var unrelated = _otherSource.StartActivity("SomeRequest"); unrelated.Should().NotBeNull(); - _sut.OnEnd(unrelated!); + _sut.OnEnd(unrelated); - IsRecorded(unrelated!).Should().BeTrue(); + IsRecorded(unrelated).Should().BeTrue(); } [Fact] @@ -95,9 +95,9 @@ public void SameNameFromDifferentSource_StaysRecorded() using var lookalike = _otherSource.StartActivity("OutboxPoll"); lookalike.Should().NotBeNull(); - _sut.OnEnd(lookalike!); + _sut.OnEnd(lookalike); - IsRecorded(lookalike!).Should().BeTrue("only the MMCA.Common.Outbox source is filtered"); + IsRecorded(lookalike).Should().BeTrue("only the MMCA.Common.Outbox source is filtered"); } [Fact] @@ -107,9 +107,9 @@ public void OutboxProcessSpan_StaysRecorded() using var process = _outboxSource.StartActivity("OutboxProcess"); process.Should().NotBeNull(); - _sut.OnEnd(process!); + _sut.OnEnd(process); - IsRecorded(process!).Should().BeTrue("real outbox work spans are not poll noise"); + IsRecorded(process).Should().BeTrue("real outbox work spans are not poll noise"); } [Fact] diff --git a/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json index 73988fb5..5bd2df41 100644 --- a/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Aspire.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -34,9 +34,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json b/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json index 85625ba7..6ccd494c 100644 --- a/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json +++ b/Tests/Hosting/MMCA.Common.Testing.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -43,9 +43,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json index f7e7c77b..192b82a7 100644 --- a/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.API.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.AspNetCore.Mvc.Testing": { "type": "Direct", @@ -60,9 +60,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Presentation/MMCA.Common.Grpc.Tests/JwtForwardingClientInterceptorTests.cs b/Tests/Presentation/MMCA.Common.Grpc.Tests/JwtForwardingClientInterceptorTests.cs index 434979a5..43d5152a 100644 --- a/Tests/Presentation/MMCA.Common.Grpc.Tests/JwtForwardingClientInterceptorTests.cs +++ b/Tests/Presentation/MMCA.Common.Grpc.Tests/JwtForwardingClientInterceptorTests.cs @@ -74,9 +74,9 @@ public void AsyncUnaryCall_WithInboundBearerToken_ForwardsAuthorizationHeader() }); captured.Should().NotBeNull(); - var headers = captured!.Value.Options.Headers; + var headers = captured.Value.Options.Headers; headers.Should().NotBeNull("the interceptor must attach metadata carrying the forwarded token"); - headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); + headers.GetValue(AuthorizationHeader).Should().Be(BearerToken); } // ── AsyncUnaryCall: no ambient HttpContext ── @@ -96,7 +96,7 @@ public void AsyncUnaryCall_WithoutHttpContext_PassesCallOptionsThroughUnchanged( }); captured.Should().NotBeNull(); - captured!.Value.Options.Headers.Should().BeNull( + captured.Value.Options.Headers.Should().BeNull( "background processors without an HTTP request must not gain an Authorization header"); } @@ -117,7 +117,7 @@ public void AsyncUnaryCall_WithoutInboundAuthorizationHeader_PassesCallOptionsTh }); captured.Should().NotBeNull(); - captured!.Value.Options.Headers.Should().BeNull(); + captured.Value.Options.Headers.Should().BeNull(); } // ── AsyncUnaryCall: caller already set an Authorization header ── @@ -138,10 +138,10 @@ public void AsyncUnaryCall_WhenCallAlreadyCarriesAuthorization_KeepsExistingValu }); captured.Should().NotBeNull(); - var headers = captured!.Value.Options.Headers; + var headers = captured.Value.Options.Headers; headers.Should().BeSameAs(existingHeaders, "an already-authorized call passes through untouched"); - CountAuthorizationEntries(headers!).Should().Be(1); - headers!.GetValue(AuthorizationHeader).Should().Be("Bearer existing-value"); + CountAuthorizationEntries(headers).Should().Be(1); + headers.GetValue(AuthorizationHeader).Should().Be("Bearer existing-value"); } // ── AsyncUnaryCall: unrelated headers survive the forwarding ── @@ -162,9 +162,9 @@ public void AsyncUnaryCall_WithUnrelatedExistingHeaders_AppendsAuthorizationAndK }); captured.Should().NotBeNull(); - var headers = captured!.Value.Options.Headers; + var headers = captured.Value.Options.Headers; headers.Should().NotBeNull(); - headers!.GetValue("x-custom").Should().Be("custom-value"); + headers.GetValue("x-custom").Should().Be("custom-value"); headers.GetValue(AuthorizationHeader).Should().Be(BearerToken); CountAuthorizationEntries(headers).Should().Be(1); } @@ -197,7 +197,7 @@ public void BlockingUnaryCall_WithInboundBearerToken_ForwardsAuthorizationHeader }); captured.Should().NotBeNull(); - captured!.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); + captured.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); } // ── AsyncServerStreamingCall ── @@ -222,7 +222,7 @@ public void AsyncServerStreamingCall_WithInboundBearerToken_ForwardsAuthorizatio }); captured.Should().NotBeNull(); - captured!.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); + captured.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); } // ── AsyncClientStreamingCall ── @@ -247,7 +247,7 @@ public void AsyncClientStreamingCall_WithInboundBearerToken_ForwardsAuthorizatio }); captured.Should().NotBeNull(); - captured!.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); + captured.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); } // ── AsyncDuplexStreamingCall ── @@ -272,7 +272,7 @@ public void AsyncDuplexStreamingCall_WithInboundBearerToken_ForwardsAuthorizatio }); captured.Should().NotBeNull(); - captured!.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); + captured.Value.Options.Headers!.GetValue(AuthorizationHeader).Should().Be(BearerToken); } } diff --git a/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json index d2bdec80..8d8d4c16 100644 --- a/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.Grpc.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -43,9 +43,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json index 82544f85..ade8cae7 100644 --- a/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.Tests/packages.lock.json @@ -42,9 +42,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -69,9 +69,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct", diff --git a/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json b/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json index bb680e36..cff18e63 100644 --- a/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json +++ b/Tests/Presentation/MMCA.Common.UI.Web.Tests/packages.lock.json @@ -16,9 +16,9 @@ }, "Meziantou.Analyzer": { "type": "Direct", - "requested": "[3.0.124, )", - "resolved": "3.0.124", - "contentHash": "nJJak27Tqn5tQGuorOQBiSEUkiKO7NYDH80yomOVGpJ4c49dsXhvTHtif8/vrGUJeld8vuERK/F+kZRfmB8ZRA==" + "requested": "[3.0.133, )", + "resolved": "3.0.133", + "contentHash": "pwJq1q4BGRKATlX41YTGRBpxp0XQIxRqpxPyMzB0eaY2aGj0v7u8qg6lIJnqbM7NHBN8sk2IjsanV2Fu8GGS7w==" }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Direct", @@ -43,9 +43,9 @@ }, "SonarAnalyzer.CSharp": { "type": "Direct", - "requested": "[10.29.0.143774, )", - "resolved": "10.29.0.143774", - "contentHash": "YOBCHTjqb4ak7yjLQhQJ6S0+aTkgnuMcekjCrhWruyIIoWlB1C8W+Fgr18bWit+xx7Gd9sNl5sziOwh6D804Hg==" + "requested": "[10.30.0.144632, )", + "resolved": "10.30.0.144632", + "contentHash": "e4n1kWNoFAuXcYR4uEGyMi4I5vKHcjAVmIw6k6y57UWJA1o6cxkeHmcE45xfCphM4k4G0Yo8yMhOT637AmofJw==" }, "StyleCop.Analyzers": { "type": "Direct",