From 43d04800a39a3625d60194132bb6d28145635999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20B=C4=85czek?= <74410956+kamilbaczek@users.noreply.github.com> Date: Mon, 10 Aug 2026 08:25:38 +0200 Subject: [PATCH 1/9] refactor: remove unesssery nuget packages refereneces --- .../Fitnet/Contracts/PrepareContract/PrepareContractEndpoint.cs | 1 + .../Fitnet.Common.Infrastructure.csproj | 1 - Chapter-2-modules-separation/Src/Directory.Packages.props | 1 - .../Fitnet.Common/Directory.Packages.props | 1 - .../Fitnet.Common.Infrastructure.csproj | 1 - .../Fitnet.Contracts/Src/Directory.Packages.props | 1 - .../Fitnet/Src/Directory.Packages.props | 1 - .../Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj | 1 - .../Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj | 1 - .../Fitnet.Common/Directory.Packages.props | 1 - .../Fitnet.Common.Infrastructure.csproj | 1 - .../Fitnet.Contracts/Src/Directory.Packages.props | 1 - .../Fitnet/Src/Directory.Packages.props | 1 - .../Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj | 1 - .../Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj | 1 - 15 files changed, 1 insertion(+), 14 deletions(-) diff --git a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/PrepareContract/PrepareContractEndpoint.cs b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/PrepareContract/PrepareContractEndpoint.cs index a1985785..8b8c5bf8 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/PrepareContract/PrepareContractEndpoint.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/PrepareContract/PrepareContractEndpoint.cs @@ -21,6 +21,7 @@ internal static void MapPrepareContract(this IEndpointRouteBuilder app) => request.CustomerHeight, request.PreparedAt, previousContract?.Signed); + await persistence.Contracts.AddAsync(contract, cancellationToken); await persistence.SaveChangesAsync(cancellationToken); diff --git a/Chapter-2-modules-separation/Src/Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj b/Chapter-2-modules-separation/Src/Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj index 5b76a24f..17a0f760 100644 --- a/Chapter-2-modules-separation/Src/Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj +++ b/Chapter-2-modules-separation/Src/Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj @@ -2,7 +2,6 @@ - diff --git a/Chapter-2-modules-separation/Src/Directory.Packages.props b/Chapter-2-modules-separation/Src/Directory.Packages.props index 042c8def..a4d2eeb2 100644 --- a/Chapter-2-modules-separation/Src/Directory.Packages.props +++ b/Chapter-2-modules-separation/Src/Directory.Packages.props @@ -11,7 +11,6 @@ - diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props index 42bf6313..75ee93ce 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props @@ -7,7 +7,6 @@ - diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj index 2331b97b..09cf780b 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj @@ -1,7 +1,6 @@ - diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props index fedfb1f1..97b80bd8 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props @@ -15,7 +15,6 @@ - diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props index c927595b..62dae4b9 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props @@ -16,7 +16,6 @@ - diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj index 4f4c6168..921774be 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj @@ -1,6 +1,5 @@ - diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj index e829a786..cfbcfd0f 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj @@ -1,7 +1,6 @@ - diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props index a04ce0a7..d773e5d6 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props @@ -8,7 +8,6 @@ - diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj index 2331b97b..09cf780b 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.Infrastructure/Fitnet.Common.Infrastructure.csproj @@ -1,7 +1,6 @@ - diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props index 00182137..435ca3bf 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props @@ -15,7 +15,6 @@ - diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props index e342762f..47c07155 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props @@ -16,7 +16,6 @@ - diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj index 48c931c8..e90157be 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj @@ -1,6 +1,5 @@ - diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj index 047f7d66..f44e7e7e 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj @@ -2,7 +2,6 @@ - From 725d149ec29518004ff4a417484f954c2a090726 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 10 Aug 2026 15:55:42 +0000 Subject: [PATCH 2/9] fix: upgrade Microsoft.OpenApi to 2.7.5 and enable transitive pinning to resolve GHSA-v5pm-xwqc-g5wc Co-authored-by: kamilbaczek <74410956+kamilbaczek@users.noreply.github.com> --- Chapter-2-modules-separation/Src/Directory.Packages.props | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Chapter-2-modules-separation/Src/Directory.Packages.props b/Chapter-2-modules-separation/Src/Directory.Packages.props index a4d2eeb2..ad255ab0 100644 --- a/Chapter-2-modules-separation/Src/Directory.Packages.props +++ b/Chapter-2-modules-separation/Src/Directory.Packages.props @@ -1,6 +1,7 @@ true + true @@ -18,7 +19,7 @@ - + From b4c98f5aa10c91052ee31ffba1e2504b1d1c0e9c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 09:44:36 +0000 Subject: [PATCH 3/9] fix: pin MessagePack to 3.1.8 to resolve known vulnerabilities in transitive deps Co-authored-by: kamilbaczek <74410956+kamilbaczek@users.noreply.github.com> --- .../Fitnet.Contracts/Src/Directory.Packages.props | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props index 435ca3bf..f7b4b163 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props @@ -1,6 +1,7 @@ true + true @@ -10,6 +11,7 @@ + From ff29ad3cafa5ea80003e59efcdd626adb285a005 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 09:45:48 +0000 Subject: [PATCH 4/9] fix: upgrade Microsoft.OpenApi to 2.7.5 and pin MessagePack to 3.1.8 in Chapter-4 to resolve GHSA-v5pm-xwqc-g5wc and MessagePack vulnerabilities Co-authored-by: kamilbaczek <74410956+kamilbaczek@users.noreply.github.com> --- .../Fitnet/Src/Directory.Packages.props | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props index 47c07155..03fb7466 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props @@ -1,6 +1,7 @@ true + true @@ -26,7 +27,8 @@ - + + From 22b808abf24ad9c78bf7b8ea48438fd243e7e5b1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 09:46:48 +0000 Subject: [PATCH 5/9] fix: upgrade Microsoft.OpenApi to 2.7.5 in Chapter-4 Fitnet.Contracts to resolve GHSA-v5pm-xwqc-g5wc Co-authored-by: kamilbaczek <74410956+kamilbaczek@users.noreply.github.com> --- .../Fitnet.Contracts/Src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props index f7b4b163..1ddbdad9 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props @@ -19,7 +19,7 @@ - + From dfb0ac871f354e3de6956a83777c6107875ea06e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 09:48:22 +0000 Subject: [PATCH 6/9] fix: upgrade vulnerable packages to resolve CI build failure in Chapter 3 and 4 - Enable CentralPackageTransitivePinningEnabled in Chapter-3 Fitnet, Chapter-3 Contracts, Chapter-4 Fitnet - Upgrade Microsoft.OpenApi from 2.3.0 to 2.7.5 across all affected projects (resolves GHSA-v5pm-xwqc-g5wc) - Pin MessagePack 3.1.8 as transitive dependency to replace vulnerable 2.5.192 (resolves GHSA-hv8m-jj95-wg3x and related advisories) - Update Npgsql to 10.0.0 where needed to satisfy transitive requirements after enabling pinning Co-authored-by: kamilbaczek <74410956+kamilbaczek@users.noreply.github.com> --- .../Fitnet.Contracts/Src/Directory.Packages.props | 5 ++++- .../Fitnet/Src/Directory.Packages.props | 6 ++++-- .../Fitnet.Contracts/Src/Directory.Packages.props | 3 ++- .../Fitnet/Src/Directory.Packages.props | 6 ++++-- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props index 97b80bd8..ad9ffcce 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props @@ -1,6 +1,7 @@ true + true @@ -17,7 +18,9 @@ - + + + diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props index 62dae4b9..03cf7b61 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props @@ -1,6 +1,7 @@ true + true @@ -24,9 +25,10 @@ - + - + + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props index f7b4b163..fd6e059c 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props @@ -19,7 +19,8 @@ - + + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props index 47c07155..51cd5f47 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props @@ -1,6 +1,7 @@ true + true @@ -24,9 +25,10 @@ - + - + + From 1cb7e38f69c87a11b9c73f69896840604e856a8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20B=C4=85czek?= <74410956+kamilbaczek@users.noreply.github.com> Date: Sat, 15 Aug 2026 14:50:10 +0200 Subject: [PATCH 7/9] fix: patch SSH.NET vulnerability in all chapters Testcontainers 4.0.0/4.7.0 pulls in SSH.NET 2024.2.0, which has a known high severity vulnerability (GHSA-q939-rpr3-3284). With NU1903 treated as an error, every integration test project failed to restore. Bump Testcontainers and Testcontainers.PostgreSql to 4.14.0, which depends on SSH.NET 2026.0.0. That version obsoletes the parameterless PostgreSqlBuilder, so the database containers now pass the image explicitly, matching the postgres:15.15 the AppHost already runs. Co-Authored-By: Claude Opus 5 --- .../Common/TestEngine/DatabaseContainer.cs | 3 ++- .../Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj | 4 ++-- .../TestEngine/Database/DatabaseContainer.cs | 3 ++- Chapter-2-modules-separation/Src/Directory.Packages.props | 4 ++-- .../Fitnet.Common/Directory.Packages.props | 4 ++-- .../TestEngine/Database/DatabaseContainer.cs | 3 ++- .../Fitnet/Src/Directory.Packages.props | 4 ++-- .../Fitnet.Common/Directory.Packages.props | 4 ++-- .../TestEngine/Database/DatabaseContainer.cs | 3 ++- .../Fitnet/Src/Directory.Packages.props | 4 ++-- 10 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs index 4f471d6e..c8691db5 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs @@ -5,6 +5,7 @@ namespace EvolutionaryArchitecture.Fitnet.IntegrationTests.Common.TestEngine; [UsedImplicitly] public sealed class DatabaseContainer : IAsyncLifetime { + private const string Image = "postgres:15.15"; private const string Username = "admin"; private const string Password = "$3cureP@ssw0rd"; private const string Database = "fitnet"; @@ -13,7 +14,7 @@ public sealed class DatabaseContainer : IAsyncLifetime public async ValueTask InitializeAsync() { - _container = new PostgreSqlBuilder() + _container = new PostgreSqlBuilder(Image) .WithDatabase(Database) .WithUsername(Username) .WithPassword(Password) diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj index 5dc37ac5..4a48ed48 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/Chapter-2-modules-separation/Src/Common/Fitnet.Common.IntegrationTests/TestEngine/Database/DatabaseContainer.cs b/Chapter-2-modules-separation/Src/Common/Fitnet.Common.IntegrationTests/TestEngine/Database/DatabaseContainer.cs index 5156ace5..408b78a5 100644 --- a/Chapter-2-modules-separation/Src/Common/Fitnet.Common.IntegrationTests/TestEngine/Database/DatabaseContainer.cs +++ b/Chapter-2-modules-separation/Src/Common/Fitnet.Common.IntegrationTests/TestEngine/Database/DatabaseContainer.cs @@ -5,6 +5,7 @@ namespace EvolutionaryArchitecture.Fitnet.Common.IntegrationTests.TestEngine.Dat [UsedImplicitly] public sealed class DatabaseContainer : IAsyncLifetime { + private const string Image = "postgres:15.15"; private const string Username = "admin"; private const string Password = "$3cureP@ssw0rd"; private const string Database = "fitnet"; @@ -13,7 +14,7 @@ public sealed class DatabaseContainer : IAsyncLifetime public async Task InitializeAsync() { - _container = new PostgreSqlBuilder() + _container = new PostgreSqlBuilder(Image) .WithDatabase(Database) .WithUsername(Username) .WithPassword(Password) diff --git a/Chapter-2-modules-separation/Src/Directory.Packages.props b/Chapter-2-modules-separation/Src/Directory.Packages.props index ad255ab0..00c6054b 100644 --- a/Chapter-2-modules-separation/Src/Directory.Packages.props +++ b/Chapter-2-modules-separation/Src/Directory.Packages.props @@ -32,8 +32,8 @@ - - + + diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props index 75ee93ce..c0a7038f 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Directory.Packages.props @@ -18,8 +18,8 @@ - - + + diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs index 721bb701..532f77b6 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs @@ -5,6 +5,7 @@ namespace EvolutionaryArchitecture.Fitnet.Common.IntegrationTestsToolbox.TestEng [UsedImplicitly] public sealed class DatabaseContainer : IAsyncLifetime { + private const string Image = "postgres:15.15"; private const string Username = "admin"; private const string Password = "$3cureP@ssw0rd"; private const string Database = "fitnet"; @@ -13,7 +14,7 @@ public sealed class DatabaseContainer : IAsyncLifetime public async Task InitializeAsync() { - _container = new PostgreSqlBuilder() + _container = new PostgreSqlBuilder(Image) .WithDatabase(Database) .WithUsername(Username) .WithPassword(Password) diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props index 03cf7b61..7d2fff40 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props @@ -42,8 +42,8 @@ - - + + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props index d773e5d6..a67dd19e 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Directory.Packages.props @@ -20,8 +20,8 @@ - - + + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs index 721bb701..532f77b6 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/DatabaseContainer.cs @@ -5,6 +5,7 @@ namespace EvolutionaryArchitecture.Fitnet.Common.IntegrationTestsToolbox.TestEng [UsedImplicitly] public sealed class DatabaseContainer : IAsyncLifetime { + private const string Image = "postgres:15.15"; private const string Username = "admin"; private const string Password = "$3cureP@ssw0rd"; private const string Database = "fitnet"; @@ -13,7 +14,7 @@ public sealed class DatabaseContainer : IAsyncLifetime public async Task InitializeAsync() { - _container = new PostgreSqlBuilder() + _container = new PostgreSqlBuilder(Image) .WithDatabase(Database) .WithUsername(Username) .WithPassword(Password) diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props index 51cd5f47..9c757dd7 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props @@ -41,8 +41,8 @@ - - + + From 150258e0c17e4e6691efa101138c609e0e7bd7fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20B=C4=85czek?= <74410956+kamilbaczek@users.noreply.github.com> Date: Sat, 15 Aug 2026 14:56:33 +0200 Subject: [PATCH 8/9] fix: restore ASP.NET Core reference and pin Testcontainers in chapters 3 and 4 The DataAccess projects in Offers and Passes use IApplicationBuilder but lost their Microsoft.AspNetCore.App framework reference, so CI failed with CS0234 and CS0246. Chapter 2 keeps that reference - restore it here too. The Contracts solutions never pinned Testcontainers, so the published IntegrationTestsToolbox package pulled Testcontainers 4.7.0 with the vulnerable SSH.NET 2024.2.0. Pin 4.14.0, which transitive pinning then applies to the toolbox as well. Co-Authored-By: Claude Opus 5 --- .../Fitnet.Contracts/Src/Directory.Packages.props | 2 ++ .../Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj | 3 +++ .../Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj | 3 +++ .../Fitnet.Contracts/Src/Directory.Packages.props | 2 ++ .../Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj | 3 +++ .../Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj | 3 +++ 6 files changed, 16 insertions(+) diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props index ad9ffcce..4a610dfc 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props @@ -29,6 +29,8 @@ + + diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj index 921774be..2aa85f4d 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj @@ -1,4 +1,7 @@ + + + diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj index cfbcfd0f..507242b3 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj @@ -1,4 +1,7 @@ + + + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props index 1ddbdad9..0d20e060 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props @@ -29,6 +29,8 @@ + + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj index e90157be..bbf72544 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Offers/Fitnet.Offers.DataAccess/Fitnet.Offers.DataAccess.csproj @@ -1,4 +1,7 @@ + + + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj index f44e7e7e..54351929 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Passes/Fitnet.Passes.DataAccess/Fitnet.Passes.DataAccess.csproj @@ -1,4 +1,7 @@ + + + From 91e0864f40fe4495fdab6a509aedf86b089f87ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20B=C4=85czek?= <74410956+kamilbaczek@users.noreply.github.com> Date: Sat, 15 Aug 2026 15:05:06 +0200 Subject: [PATCH 9/9] fix: bump BouncyCastle.Cryptography to 2.7.0 in chapters 3 and 4 SSH.NET 2026.0.0, which Testcontainers 4.14.0 brings in, requires BouncyCastle.Cryptography 2.7.0 or higher. The central pin of 2.4.0 made restore fail with NU1109 package downgrade. Co-Authored-By: Claude Opus 5 --- .../Fitnet.Contracts/Src/Directory.Packages.props | 2 +- .../Fitnet/Src/Directory.Packages.props | 2 +- .../Fitnet.Contracts/Src/Directory.Packages.props | 2 +- .../Fitnet/Src/Directory.Packages.props | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props index 4a610dfc..51b367c8 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Directory.Packages.props @@ -26,7 +26,7 @@ - + diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props index 7d2fff40..97611d2f 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Directory.Packages.props @@ -33,7 +33,7 @@ - + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props index 0d20e060..ad3e616d 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Directory.Packages.props @@ -25,7 +25,7 @@ - + diff --git a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props index 9c757dd7..aaf561a0 100644 --- a/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props +++ b/Chapter-4-applying-tactical-domain-driven-design/Fitnet/Src/Directory.Packages.props @@ -33,7 +33,7 @@ - +