using SameBeat.Application.Interfejsy; using SameBeat.Domain.Encje; using SameBeat.Domain.Enumy; using SameBeat.Infrastructure.Autoryzacja; using Xunit; namespace SameBeat.Tests.Unit; public class UslugaHaszowaniaHaselTests { private readonly IUslugaHaszowaniaHasel _usluga = new UslugaHaszowaniaHasel(); [Fact] public void Weryfikuj_DlaPoprawnegoHasla_ZwracaPoprawne() { var uzytkownik = Uzytkownik.Utworz("piotr", RolaUzytkownika.Host); var hash = _usluga.Haszuj(uzytkownik, "TajneHaslo123!"); var wynik = _usluga.Weryfikuj(uzytkownik, hash, "TajneHaslo123!"); Assert.Equal(WynikWeryfikacjiHasla.Poprawne, wynik); } [Fact] public void Weryfikuj_DlaBlednegoHasla_ZwracaNiepoprawne() { var uzytkownik = Uzytkownik.Utworz("piotr", RolaUzytkownika.Host); var hash = _usluga.Haszuj(uzytkownik, "TajneHaslo123!"); var wynik = _usluga.Weryfikuj(uzytkownik, hash, "ZleHaslo"); Assert.Equal(WynikWeryfikacjiHasla.Niepoprawne, wynik); } [Fact] public void Haszuj_DlaTegoSamegoHasla_ZaKazdymRazemDajeInnyHash() { // PasswordHasher soli hash losowa wartoscia -- dwa wywolania dla tego samego hasla // NIGDY nie powinny dac identycznego wyniku, inaczej ktos zle skonfigurowal algorytm. var uzytkownik = Uzytkownik.Utworz("piotr", RolaUzytkownika.Host); var hash1 = _usluga.Haszuj(uzytkownik, "TajneHaslo123!"); var hash2 = _usluga.Haszuj(uzytkownik, "TajneHaslo123!"); Assert.NotEqual(hash1, hash2); } }