github.com/versent/saml2aws@v2.17.0+incompatible/pkg/provider/f5apm/f5apm_test.go (about) 1 package f5apm 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "net/http" 7 "net/http/cookiejar" 8 "net/http/httptest" 9 "net/url" 10 "testing" 11 12 "github.com/PuerkitoBio/goquery" 13 "github.com/versent/saml2aws/pkg/creds" 14 15 "github.com/versent/saml2aws/pkg/provider" 16 17 "github.com/stretchr/testify/require" 18 ) 19 20 func TestClient_getLoginForm(t *testing.T) { 21 data, err := ioutil.ReadFile("example/loginpage.html") 22 require.Nil(t, err) 23 24 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 25 w.Write(data) 26 })) 27 defer ts.Close() 28 29 jar, err := cookiejar.New(nil) 30 require.Nil(t, err) 31 ac := Client{client: &provider.HTTPClient{Client: http.Client{Jar: jar}}} 32 t.Log(ac) 33 loginDetails := &creds.LoginDetails{URL: ts.URL, Username: "groundcontrol", Password: "majortom"} 34 t.Log(loginDetails) 35 36 authForm, err := ac.getLoginForm(loginDetails) 37 require.Nil(t, err) 38 require.Equal(t, url.Values{ 39 "username": []string{"groundcontrol"}, 40 "password": []string{"majortom"}, 41 "vhost": []string{"standard"}, 42 }, authForm) 43 } 44 func TestClient_postLoginForm_user_pass(t *testing.T) { 45 data, err := ioutil.ReadFile("example/loginpage.html") 46 require.Nil(t, err) 47 48 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 49 w.Write(data) 50 })) 51 defer ts.Close() 52 53 jar, err := cookiejar.New(nil) 54 require.Nil(t, err) 55 ac := Client{client: &provider.HTTPClient{Client: http.Client{Jar: jar}}} 56 t.Log(ac) 57 loginDetails := &creds.LoginDetails{URL: ts.URL, Username: "groundcontrol", Password: "majortom"} 58 t.Log(loginDetails) 59 60 authForm := url.Values{} 61 authForm.Add("username", "groundcontrol") 62 authForm.Add("password", "majortom") 63 resData, err := ac.postLoginForm(loginDetails, authForm) 64 require.Nil(t, err) 65 require.Equal(t, data, resData) 66 } 67 68 func TestClient_containsMFAForm(t *testing.T) { 69 data, err := ioutil.ReadFile("example/mfapage.html") 70 require.Nil(t, err) 71 doc, err := goquery.NewDocumentFromReader(bytes.NewReader(data)) 72 require.Nil(t, err) 73 mfaFound, mfaMethods := containsMFAForm(doc) 74 require.True(t, mfaFound) 75 require.Equal(t, []string{"push", "token"}, mfaMethods) 76 } 77 78 func TestClient_containsMFAForm_False(t *testing.T) { 79 data, err := ioutil.ReadFile("example/loginpage.html") 80 require.Nil(t, err) 81 doc, err := goquery.NewDocumentFromReader(bytes.NewReader(data)) 82 require.Nil(t, err) 83 mfaFound, mfaMethods := containsMFAForm(doc) 84 require.False(t, mfaFound) 85 require.Equal(t, []string(nil), mfaMethods) 86 }