Files
Xor290 2f6e5a953d
ci-api / test (push) Successful in 28m2s
chore: update
2026-08-08 18:27:52 +02:00

63 lines
1.5 KiB
Go

package auth
import "testing"
func TestHashPassword_VerifyPassword_Roundtrip(t *testing.T) {
hash, err := HashPassword("correct horse battery staple")
if err != nil {
t.Fatalf("HashPassword: %v", err)
}
ok, err := VerifyPassword("correct horse battery staple", hash)
if err != nil {
t.Fatalf("VerifyPassword: %v", err)
}
if !ok {
t.Error("VerifyPassword = false, want true for correct password")
}
}
func TestVerifyPassword_WrongPassword(t *testing.T) {
hash, err := HashPassword("correct horse battery staple")
if err != nil {
t.Fatalf("HashPassword: %v", err)
}
ok, err := VerifyPassword("wrong password", hash)
if err != nil {
t.Fatalf("VerifyPassword: %v", err)
}
if ok {
t.Error("VerifyPassword = true, want false for wrong password")
}
}
func TestHashPassword_UniqueSaltPerCall(t *testing.T) {
hash1, err := HashPassword("same password")
if err != nil {
t.Fatalf("HashPassword: %v", err)
}
hash2, err := HashPassword("same password")
if err != nil {
t.Fatalf("HashPassword: %v", err)
}
if hash1 == hash2 {
t.Error("HashPassword produced identical hashes for two calls — salt is not random")
}
}
func TestVerifyPassword_InvalidHashFormat(t *testing.T) {
cases := []string{
"",
"not-a-hash",
"$argon2id$v=19$m=65536,t=1,p=4$onlyfiveparts",
"$bcrypt$v=19$m=65536,t=1,p=4$c2FsdA$aGFzaA",
}
for _, encoded := range cases {
_, err := VerifyPassword("anything", encoded)
if err != ErrInvalidHash {
t.Errorf("VerifyPassword(%q) error = %v, want ErrInvalidHash", encoded, err)
}
}
}