Files
codit/backend/internal/auth/auth_test.go

59 lines
1.3 KiB
Go

package auth
import "strings"
import "testing"
import "time"
import "codit/internal/config"
func TestHashAndComparePassword(t *testing.T) {
var hash string
var err error
hash, err = HashPassword("pw-123")
if err != nil {
t.Fatalf("HashPassword() error: %v", err)
}
err = ComparePassword(hash, "pw-123")
if err != nil {
t.Fatalf("ComparePassword() failed for correct password: %v", err)
}
err = ComparePassword(hash, "wrong")
if err == nil {
t.Fatalf("ComparePassword() must fail for wrong password")
}
}
func TestNewSessionToken(t *testing.T) {
var a string
var b string
var err error
a, err = NewSessionToken()
if err != nil {
t.Fatalf("NewSessionToken() error: %v", err)
}
b, err = NewSessionToken()
if err != nil {
t.Fatalf("NewSessionToken() error for second token: %v", err)
}
if a == b {
t.Fatalf("session tokens must differ")
}
if strings.Contains(a, "=") {
t.Fatalf("token must be raw base64 without padding: %s", a)
}
}
func TestSessionExpiry(t *testing.T) {
var cfg config.Config
var before time.Time
var after time.Time
var exp time.Time
before = time.Now().UTC()
cfg.SessionTTL = config.Duration(2 * time.Hour)
exp = SessionExpiry(cfg)
after = time.Now().UTC()
if exp.Before(before.Add(2*time.Hour-time.Second)) || exp.After(after.Add(2*time.Hour+time.Second)) {
t.Fatalf("unexpected session expiry: %v", exp)
}
}