github.com/gofiber/fiber/v2@v2.47.0/middleware/idempotency/locker_test.go (about) 1 package idempotency_test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/gofiber/fiber/v2/middleware/idempotency" 8 "github.com/gofiber/fiber/v2/utils" 9 ) 10 11 // go test -run Test_MemoryLock 12 func Test_MemoryLock(t *testing.T) { 13 t.Parallel() 14 15 l := idempotency.NewMemoryLock() 16 17 { 18 err := l.Lock("a") 19 utils.AssertEqual(t, nil, err) 20 } 21 { 22 done := make(chan struct{}) 23 go func() { 24 defer close(done) 25 26 err := l.Lock("a") 27 utils.AssertEqual(t, nil, err) 28 }() 29 30 select { 31 case <-done: 32 t.Fatal("lock acquired again") 33 case <-time.After(time.Second): 34 } 35 } 36 37 { 38 err := l.Lock("b") 39 utils.AssertEqual(t, nil, err) 40 } 41 { 42 err := l.Unlock("b") 43 utils.AssertEqual(t, nil, err) 44 } 45 { 46 err := l.Lock("b") 47 utils.AssertEqual(t, nil, err) 48 } 49 50 { 51 err := l.Unlock("c") 52 utils.AssertEqual(t, nil, err) 53 } 54 55 { 56 err := l.Lock("d") 57 utils.AssertEqual(t, nil, err) 58 } 59 }