using BuildingBlock.Identity.Contracts.Requests; using BuildingBlock.Identity.Contracts.Conventions; using Thalos.Service.Application.Ports; using Thalos.Service.Application.UseCases; using Thalos.Domain.Contracts; using Thalos.Domain.Decisions; namespace Thalos.Service.Application.UnitTests; public class IssueIdentityTokenUseCaseTests { [Fact] public async Task HandleAsync_WhenCalled_DelegatesToReadPort() { var decisionService = new IdentityTokenDecisionService(); var port = new FakeIdentityTokenReadPort(); var useCase = new IssueIdentityTokenUseCase(port, decisionService); var response = await useCase.HandleAsync(new IssueIdentityTokenRequest("user-1", "tenant-1")); Assert.Equal("token-123", response.Token); Assert.Equal(3600, response.ExpiresInSeconds); } private sealed class FakeIdentityTokenReadPort : IIdentityTokenReadPort { public Task ReadTokenAsync(IssueIdentityTokenRequest request) { return Task.FromResult(new IdentityTokenData("token-123", 3600, IdentityAuthProvider.InternalJwt)); } } }