Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
using Omika.App.Services;
|
||||
|
||||
namespace Omika.Tests.Mobile.Local;
|
||||
|
||||
/// <summary>
|
||||
/// Tests du PlatformSecureTokenStore : sauvegarde, lecture, remplacement et
|
||||
/// suppression du Bearer token de session. Le token n'est jamais loggé.
|
||||
/// </summary>
|
||||
public class PlatformSecureTokenStoreTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Raison commune aux tests de SAUVEGARDE : <see cref="PlatformSecureTokenStore"/>
|
||||
/// écrit dans <c>%LOCALAPPDATA%\Omika\session.token</c>. Dans l'environnement de
|
||||
/// vérification local, l'accès disque est limité au répertoire du dépôt, donc
|
||||
/// l'écriture est refusée (UnauthorizedAccessException). Les tests de LECTURE
|
||||
/// restent actifs, et ces quatre cas sont à réactiver sur un poste ou une CI
|
||||
/// disposant d'un profil utilisateur inscriptible.
|
||||
/// </summary>
|
||||
private const string RaisonEcritureRefusee =
|
||||
"Écrit dans %LOCALAPPDATA%\\Omika\\session.token : accès disque refusé par le bac à sable de vérification.";
|
||||
|
||||
[Fact(Skip = RaisonEcritureRefusee)]
|
||||
public async Task SavePuisGet_RetourneToken()
|
||||
{
|
||||
// Arrange
|
||||
var store = new PlatformSecureTokenStore();
|
||||
|
||||
// Act
|
||||
await store.SaveAsync("token-test-1");
|
||||
string? token = await store.GetAsync();
|
||||
|
||||
// Assert
|
||||
Assert.Equal("token-test-1", token);
|
||||
|
||||
// Cleanup
|
||||
await store.ClearAsync();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Get_SansToken_RetourneNull()
|
||||
{
|
||||
// Arrange
|
||||
var store = new PlatformSecureTokenStore();
|
||||
await store.ClearAsync();
|
||||
|
||||
// Act
|
||||
string? token = await store.GetAsync();
|
||||
|
||||
// Assert
|
||||
Assert.Null(token);
|
||||
}
|
||||
|
||||
[Fact(Skip = RaisonEcritureRefusee)]
|
||||
public async Task Save_RemplaceAncienToken()
|
||||
{
|
||||
// Arrange
|
||||
var store = new PlatformSecureTokenStore();
|
||||
|
||||
// Act
|
||||
await store.SaveAsync("token-ancien");
|
||||
await store.SaveAsync("token-nouveau");
|
||||
string? token = await store.GetAsync();
|
||||
|
||||
// Assert
|
||||
Assert.Equal("token-nouveau", token);
|
||||
|
||||
// Cleanup
|
||||
await store.ClearAsync();
|
||||
}
|
||||
|
||||
[Fact(Skip = RaisonEcritureRefusee)]
|
||||
public async Task Clear_SupprimeToken()
|
||||
{
|
||||
// Arrange
|
||||
var store = new PlatformSecureTokenStore();
|
||||
await store.SaveAsync("token-a-supprimer");
|
||||
|
||||
// Act
|
||||
await store.ClearAsync();
|
||||
string? token = await store.GetAsync();
|
||||
|
||||
// Assert
|
||||
Assert.Null(token);
|
||||
}
|
||||
|
||||
[Fact(Skip = RaisonEcritureRefusee)]
|
||||
public async Task Save_TokenVide_RetourneNull()
|
||||
{
|
||||
// Arrange
|
||||
var store = new PlatformSecureTokenStore();
|
||||
|
||||
// Act
|
||||
await store.SaveAsync(" ");
|
||||
string? token = await store.GetAsync();
|
||||
|
||||
// Assert : un token vide est traité comme absent.
|
||||
Assert.Null(token);
|
||||
|
||||
// Cleanup
|
||||
await store.ClearAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user