package idempotency_test import ( "testing" "time" "github.com/gofiber/fiber/v2/middleware/idempotency" "github.com/gofiber/fiber/v2/utils" ) // go test -run Test_MemoryLock func Test_MemoryLock(t *testing.T) { t.Parallel() l := idempotency.NewMemoryLock() { err := l.Lock("a") utils.AssertEqual(t, nil, err) } { done := make(chan struct{}) go func() { defer close(done) err := l.Lock("a") utils.AssertEqual(t, nil, err) }() select { case <-done: t.Fatal("lock acquired again") case <-time.After(time.Second): } } { err := l.Lock("b") utils.AssertEqual(t, nil, err) } { err := l.Unlock("b") utils.AssertEqual(t, nil, err) } { err := l.Lock("b") utils.AssertEqual(t, nil, err) } { err := l.Unlock("c") utils.AssertEqual(t, nil, err) } { err := l.Lock("d") utils.AssertEqual(t, nil, err) } }