github.com/xmidt-org/webpa-common@v1.11.9/xhttp/fanout/configuration_test.go (about) 1 package fanout 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func testConfigurationDefault(t *testing.T, cfg *Configuration) { 13 assert := assert.New(t) 14 assert.Empty(cfg.endpoints()) 15 assert.Equal("", cfg.authorization()) 16 assert.Equal(DefaultFanoutTimeout, cfg.fanoutTimeout()) 17 assert.Equal(DefaultClientTimeout, cfg.clientTimeout()) 18 assert.NotNil(cfg.transport()) 19 assert.Equal(DefaultConcurrency, cfg.concurrency()) 20 assert.Empty(cfg.redirectExcludeHeaders()) 21 assert.Zero(cfg.maxRedirects()) 22 assert.NotNil(cfg.checkRedirect()) 23 } 24 25 func testConfigurationCustom(t *testing.T) { 26 var ( 27 assert = assert.New(t) 28 29 cfg = Configuration{ 30 Endpoints: []string{"localhost:1234"}, 31 Authorization: "deadbeef", 32 FanoutTimeout: 13 * time.Hour, 33 ClientTimeout: 981 * time.Millisecond, 34 Concurrency: 63482, 35 RedirectExcludeHeaders: []string{"X-Test-1", "X-Test-2"}, 36 MaxRedirects: 17, 37 } 38 ) 39 40 assert.Equal([]string{"localhost:1234"}, cfg.endpoints()) 41 assert.Equal("deadbeef", cfg.authorization()) 42 assert.Equal(13*time.Hour, cfg.fanoutTimeout()) 43 assert.Equal(981*time.Millisecond, cfg.clientTimeout()) 44 assert.NotNil(cfg.transport()) 45 assert.Equal(63482, cfg.concurrency()) 46 assert.Equal([]string{"X-Test-1", "X-Test-2"}, cfg.redirectExcludeHeaders()) 47 assert.Equal(17, cfg.maxRedirects()) 48 assert.NotNil(cfg.checkRedirect()) 49 } 50 51 func TestConfiguration(t *testing.T) { 52 t.Run("Nil", func(t *testing.T) { 53 testConfigurationDefault(t, nil) 54 }) 55 56 t.Run("Default", func(t *testing.T) { 57 testConfigurationDefault(t, new(Configuration)) 58 }) 59 60 t.Run("Custom", testConfigurationCustom) 61 } 62 63 func TestNewTransactor(t *testing.T) { 64 assert := assert.New(t) 65 assert.NotNil(NewTransactor(Configuration{})) 66 } 67 68 func TestNewChain(t *testing.T) { 69 var ( 70 assert = assert.New(t) 71 72 handlerCalled = false 73 handler = http.HandlerFunc(func(_ http.ResponseWriter, request *http.Request) { 74 handlerCalled = true 75 deadline, ok := request.Context().Deadline() 76 assert.False(deadline.IsZero()) 77 assert.True(ok) 78 }) 79 80 chain = NewChain(Configuration{}) 81 ) 82 83 decorated := chain.Then(handler) 84 decorated.ServeHTTP(httptest.NewRecorder(), httptest.NewRequest("GET", "/", nil)) 85 assert.True(handlerCalled) 86 }