Files
sultan/pkg/auth/nonce_test.go
T
br c8df9d7651 erste module drin.
zwischenstand: Architektur aktualisiert, TOFU implementiert,
2026-10-01 22:22:13 +02:00

30 lines
757 B
Go

package auth
import (
"testing"
"time"
)
func TestNonceCache(t *testing.T) {
now := time.Date(2026, 10, 1, 12, 0, 0, 0, time.UTC)
var c nonceCache
if !c.add("keyA", "n1", now.Add(time.Minute), now) {
t.Fatal("erste Verwendung abgelehnt")
}
if c.add("keyA", "n1", now.Add(time.Minute), now) {
t.Error("Wiederholung akzeptiert")
}
if !c.add("keyB", "n1", now.Add(time.Minute), now) {
t.Error("gleiche Nonce eines anderen Schlüssels abgelehnt")
}
// Nach Ablauf wird der Eintrag aufgeräumt; der Zeitstempel-Check
// verhindert dann ohnehin jede Wiederverwendung.
later := now.Add(2 * time.Minute)
c.add("keyA", "n2", later.Add(time.Minute), later)
if n := c.len(); n != 1 {
t.Errorf("%d Einträge nach Ablauf, erwartet 1", n)
}
}