package infra

import (
	"strings"
	"testing"
)

func TestPasswordHash_DefaultCost(t *testing.T) {
	hash, err := PasswordHash("hunter2", 0)
	if err != nil {
		t.Fatalf("PasswordHash error: %v", err)
	}
	if !strings.HasPrefix(hash, "$2") {
		t.Errorf("hash no tiene prefijo bcrypt: %q", hash)
	}
}

func TestPasswordHash_CustomCost(t *testing.T) {
	hash, err := PasswordHash("password", 4) // 4 = minimum, rapido para tests
	if err != nil {
		t.Fatalf("PasswordHash error: %v", err)
	}
	if hash == "" {
		t.Fatal("hash vacio")
	}
}

func TestPasswordHash_DifferentSalts(t *testing.T) {
	h1, _ := PasswordHash("same-password", 4)
	h2, _ := PasswordHash("same-password", 4)
	if h1 == h2 {
		t.Fatal("los hashes deben diferir por salt distinto")
	}
}
