using Xunit; namespace LehrerApp.Api.Tests; public sealed class PasswordHasherTests { [Fact] public void Verify_RichtigesPasswort_GibtTrueZurueck() { var hash = PasswordHasher.Hash("korrektes-passwort-123"); Assert.True(PasswordHasher.Verify("korrektes-passwort-123", hash)); } [Fact] public void Verify_FalschesPasswort_GibtFalseZurueck() { var hash = PasswordHasher.Hash("korrektes-passwort-123"); Assert.False(PasswordHasher.Verify("falsches-passwort-456", hash)); } [Fact] public void Hash_ZweiAufrufeMitGleichemPasswort_ErzeugenUnterschiedlicheHashes() { // Zufälliger Salt pro Nutzer -> selbst identische Passwörter dürfen nicht denselben // gespeicherten Wert ergeben. var hash1 = PasswordHasher.Hash("dasselbe-passwort"); var hash2 = PasswordHasher.Hash("dasselbe-passwort"); Assert.NotEqual(hash1, hash2); Assert.True(PasswordHasher.Verify("dasselbe-passwort", hash1)); Assert.True(PasswordHasher.Verify("dasselbe-passwort", hash2)); } [Fact] public void Verify_UngueltigesGespeichertesFormat_GibtFalseZurueckStattZuWerfen() { Assert.False(PasswordHasher.Verify("irgendwas", "kein-gueltiges-format")); } }