using Omika.App.Local.Abstractions; using Omika.App.Local.Models; using Omika.App.Local.Repositories; using Omika.App.Local.Services; namespace Omika.Tests.Mobile.Local; /// /// Tests du stockage local d'inscription + réinitialisation complète. /// public class MobileEnrollmentStoreTests : LocalTestBase { private static MobileEnrollmentConfiguration NewConfig() => new() { Version = 1, CodeClient = "BATIK.01", NumeroLicence = "LIC-001", LicenseServiceUrl = "https://licence.example.com", OmikaApiUrl = "https://api.example.com", EnrolledAtUtc = DateTimeOffset.UtcNow }; private sealed class FakeTokenStore : ISecureTokenStore { public bool Cleared { get; private set; } public Task SaveAsync(string token, CancellationToken cancellationToken = default) => Task.CompletedTask; public Task GetAsync(CancellationToken cancellationToken = default) => Task.FromResult(null); public Task ClearAsync(CancellationToken cancellationToken = default) { Cleared = true; return Task.CompletedTask; } } [Fact] public async Task SavePuisLoad_RestaureOmikaApiUrl() { var store = new MobileEnrollmentStore(Database); await store.SaveAsync(NewConfig()); MobileEnrollmentConfiguration? loaded = await store.LoadAsync(); Assert.NotNull(loaded); Assert.Equal("https://api.example.com", loaded!.OmikaApiUrl); } [Fact] public async Task Load_SansInscription_RetourneNull() { var store = new MobileEnrollmentStore(Database); Assert.Null(await store.LoadAsync()); } [Fact] public async Task Reset_SupprimeUrlLicenceEtUrlApi() { var store = new MobileEnrollmentStore(Database); await store.SaveAsync(NewConfig()); var maintenance = new LocalDataMaintenanceService(Database, "unused", new FakeTokenStore()); await maintenance.ResetAsync(); Assert.Null(await store.LoadAsync()); } [Fact] public async Task Reset_SupprimeTokenSession() { var store = new MobileEnrollmentStore(Database); await store.SaveAsync(NewConfig()); var tokenStore = new FakeTokenStore(); var maintenance = new LocalDataMaintenanceService(Database, "unused", tokenStore); await maintenance.ResetAsync(); Assert.True(tokenStore.Cleared); Assert.Null(await store.LoadAsync()); } }