30 lines
757 B
Go
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)
|
|
}
|
|
}
|