From 463518332ed124746b5df8b34cfc7f3e0fbf475f Mon Sep 17 00:00:00 2001 From: khalidabuhakmeh Date: Wed, 4 Jun 2025 11:41:01 -0400 Subject: [PATCH] Add unit test to verify handling of missing client in session coordination Ensure `DefaultSessionCoordinationService` does not attempt logout for missing or null clients by introducing a dedicated test. --- .../DefaultSessionCoordinationServiceTests.cs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 identity-server/test/IdentityServer.UnitTests/Services/Default/DefaultSessionCoordinationServiceTests.cs diff --git a/identity-server/test/IdentityServer.UnitTests/Services/Default/DefaultSessionCoordinationServiceTests.cs b/identity-server/test/IdentityServer.UnitTests/Services/Default/DefaultSessionCoordinationServiceTests.cs new file mode 100644 index 000000000..1873345fd --- /dev/null +++ b/identity-server/test/IdentityServer.UnitTests/Services/Default/DefaultSessionCoordinationServiceTests.cs @@ -0,0 +1,39 @@ +using System.Threading.Tasks; +using Duende.IdentityServer.Configuration; +using Duende.IdentityServer.Models; +using Duende.IdentityServer.Services; +using Duende.IdentityServer.Stores; +using Microsoft.Extensions.Logging.Abstractions; +using Shouldly; +using UnitTests.Endpoints.EndSession; +using Xunit; + +namespace UnitTests.Services.Default; + +public class DefaultSessionCoordinationServiceTests +{ + public DefaultSessionCoordinationService Service; + + [Fact] + public async Task Handles_missing_client_null_reference() + { + var stubBackChannelLogoutClient = new StubBackChannelLogoutClient(); + Service = new DefaultSessionCoordinationService( + new IdentityServerOptions(), + new InMemoryPersistedGrantStore(), + new InMemoryClientStore([]), + stubBackChannelLogoutClient, + new NullLogger()); + + await Service.ProcessExpirationAsync(new UserSession + { + ClientIds = ["not_found"], + SessionId = "1", + SubjectId = "1" + }); + + stubBackChannelLogoutClient + .SendLogoutsWasCalled + .ShouldBeFalse(); + } +} \ No newline at end of file