github.com/xmidt-org/webpa-common@v1.11.9/middleware/timeout_test.go (about) 1 package middleware 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func testTimeout(t *testing.T, timeout time.Duration) { 12 var ( 13 assert = assert.New(t) 14 15 expectedRequest = "expected request" 16 expectedResponse = "expected response" 17 18 nextCalled = false 19 next = func(ctx context.Context, value interface{}) (interface{}, error) { 20 nextCalled = true 21 22 deadline, ok := ctx.Deadline() 23 assert.False(deadline.IsZero()) 24 assert.True(ok) 25 assert.NotNil(ctx.Done()) 26 27 return expectedResponse, nil 28 } 29 30 middleware = Timeout(timeout) 31 ) 32 33 actualResponse, err := middleware(next)(context.Background(), expectedRequest) 34 assert.Equal(expectedResponse, actualResponse) 35 assert.NoError(err) 36 assert.True(nextCalled) 37 } 38 39 func TestTimeout(t *testing.T) { 40 for _, timeout := range []time.Duration{-1, 0, 15 * time.Second, 120 * time.Hour} { 41 t.Run(timeout.String(), func(t *testing.T) { 42 testTimeout(t, timeout) 43 }) 44 } 45 }