using Xunit; namespace LehrerApp.Api.Tests; public sealed class UserStoreTests { [Fact] public void CreateUser_NeuerNutzername_GibtTrueZurueckUndKannSichAnmelden() { using var temp = new TempUserStore(); var created = temp.Store.CreateUser("sebastian", "einSicheresPasswort"); Assert.True(created); Assert.True(temp.Store.VerifyPassword("sebastian", "einSicheresPasswort")); } [Fact] public void CreateUser_BereitsVorhandenerNutzername_GibtFalseZurueck() { using var temp = new TempUserStore(); temp.Store.CreateUser("sebastian", "einSicheresPasswort"); var created = temp.Store.CreateUser("sebastian", "einAnderesPasswort"); Assert.False(created); } [Fact] public void VerifyPassword_FalschesPasswort_GibtFalseZurueck() { using var temp = new TempUserStore(); temp.Store.CreateUser("sebastian", "einSicheresPasswort"); Assert.False(temp.Store.VerifyPassword("sebastian", "falschesPasswort")); } [Fact] public void VerifyPassword_UnbekannterNutzer_GibtFalseZurueck() { using var temp = new TempUserStore(); Assert.False(temp.Store.VerifyPassword("unbekannt", "irgendwas")); } private sealed class TempUserStore : IDisposable { private readonly string _directory = Path.Combine( Path.GetTempPath(), $"lehrerapp-api-tests-{Guid.NewGuid():N}"); public UserStore Store { get; } public TempUserStore() { Directory.CreateDirectory(_directory); Store = new UserStore(_directory); } public void Dispose() { Store.Dispose(); if (Directory.Exists(_directory)) Directory.Delete(_directory, recursive: true); } } }