github.com/versent/saml2aws@v2.17.0+incompatible/pkg/provider/http_test.go (about) 1 package provider 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestClientDoGetOK(t *testing.T) { 12 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 13 w.Write([]byte("OK")) 14 })) 15 defer ts.Close() 16 17 rt := NewDefaultTransport(false) 18 19 hc, err := NewHTTPClient(rt) 20 require.Nil(t, err) 21 22 // hc := &HTTPClient{Client: http.Client{}} 23 24 req, err := http.NewRequest("GET", ts.URL, nil) 25 require.Nil(t, err) 26 27 res, err := hc.Do(req) 28 require.Nil(t, err) 29 30 require.Equal(t, 200, res.StatusCode) 31 } 32 33 func TestClientDisableRedirect(t *testing.T) { 34 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 35 w.WriteHeader(302) 36 w.Write([]byte("OK")) 37 })) 38 defer ts.Close() 39 40 rt := NewDefaultTransport(false) 41 42 hc, err := NewHTTPClient(rt) 43 require.Nil(t, err) 44 45 hc.DisableFollowRedirect() 46 47 req, err := http.NewRequest("GET", ts.URL, nil) 48 require.Nil(t, err) 49 50 res, err := hc.Do(req) 51 require.Error(t, err) 52 require.Nil(t, res) 53 } 54 55 func TestClientDoResponseCheck(t *testing.T) { 56 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 57 w.WriteHeader(400) 58 w.Write([]byte("OK")) 59 })) 60 defer ts.Close() 61 62 hc := &HTTPClient{Client: http.Client{}} 63 64 hc.CheckResponseStatus = SuccessOrRedirectResponseValidator 65 66 req, err := http.NewRequest("GET", ts.URL, nil) 67 require.Nil(t, err) 68 69 res, err := hc.Do(req) 70 require.Error(t, err) 71 require.Equal(t, 400, res.StatusCode) 72 }