github.com/xmidt-org/webpa-common@v1.11.9/service/servicehttp/redirect_test.go (about) 1 package servicehttp 2 3 import ( 4 "context" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 9 gokithttp "github.com/go-kit/kit/transport/http" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 "github.com/xmidt-org/webpa-common/logging" 13 ) 14 15 func testRedirectNoRequestURI(t *testing.T, expectedRedirectCode, actualRedirectCode int) { 16 var ( 17 assert = assert.New(t) 18 require = require.New(t) 19 20 httpResponse = httptest.NewRecorder() 21 ) 22 23 encoder := Redirect(actualRedirectCode) 24 require.NotNil(encoder) 25 26 err := encoder( 27 logging.WithLogger(context.Background(), logging.NewTestLogger(nil, t)), 28 httpResponse, 29 "http://somewhere.com:8080", 30 ) 31 32 assert.NoError(err) 33 assert.Equal(expectedRedirectCode, httpResponse.Code) 34 assert.Equal("http://somewhere.com:8080", httpResponse.HeaderMap.Get("Location")) 35 } 36 37 func testRedirectWithRequestURI(t *testing.T, expectedRedirectCode, actualRedirectCode int) { 38 var ( 39 assert = assert.New(t) 40 require = require.New(t) 41 42 httpResponse = httptest.NewRecorder() 43 ) 44 45 encoder := Redirect(actualRedirectCode) 46 require.NotNil(encoder) 47 48 err := encoder( 49 context.WithValue( 50 logging.WithLogger(context.Background(), logging.NewTestLogger(nil, t)), 51 gokithttp.ContextKeyRequestURI, 52 "/api/v2/device", 53 ), 54 httpResponse, 55 "http://somewhere.com:8080", 56 ) 57 58 assert.NoError(err) 59 assert.Equal(expectedRedirectCode, httpResponse.Code) 60 assert.Equal("http://somewhere.com:8080/api/v2/device", httpResponse.HeaderMap.Get("Location")) 61 } 62 63 func TestRedirect(t *testing.T) { 64 t.Run("NoRequestURI", func(t *testing.T) { 65 testRedirectNoRequestURI(t, http.StatusTemporaryRedirect, 0) 66 testRedirectNoRequestURI(t, http.StatusMovedPermanently, http.StatusMovedPermanently) 67 }) 68 69 t.Run("WithRequestURI", func(t *testing.T) { 70 testRedirectWithRequestURI(t, http.StatusTemporaryRedirect, 0) 71 testRedirectWithRequestURI(t, http.StatusMovedPermanently, http.StatusMovedPermanently) 72 }) 73 }