using FindAndDrive.Domain.Interfaces.Providers; using FindAndDrive.Domain.Interfaces.Repositories; using FindAndDrive.Domain.Interfaces.Services; using FindAndDrive.Domain.Models.Entities; using FindAndDrive.Domain.Services; namespace FindAndDrive.Tests.UnitTests.Services; public class ApiKeyServiceTests { private readonly Mock _apikeyRepository; private readonly Mock _dateTimeProvider; private readonly IApiKeyService _systemUnderTest; public ApiKeyServiceTests() { _apikeyRepository = new Mock(); _dateTimeProvider = new Mock(); _systemUnderTest = new ApiKeyService(_apikeyRepository.Object, _dateTimeProvider.Object); } [Fact] public async Task CreateApiKey_ShouldSucceed() { // Arrange var date = DateTime.Now; var clientId = Guid.NewGuid(); var roleId = Guid.NewGuid(); var apiKeyResponse = new ApiKey { Revoked = false, ClientId = clientId, ModifiedAt = date, CreatedAt = date, RoleId = roleId, ApiKeyId = Guid.NewGuid() }; _dateTimeProvider.Setup(s => s.GetSouthAfricanDateTime()).Returns(date); _apikeyRepository.Setup(s => s.Create(It.IsAny())).ReturnsAsync(apiKeyResponse); // Act var response = await _systemUnderTest.CreateApiKey(clientId, roleId); // Assert Assert.True(response.KeySecret is not null); Assert.Equal(clientId, response.ClientId); Assert.Equal(roleId, response.RoleId); } }