git.iko.soy/typeable/oauth2-proxy
on master help sign in
added tests for basic auth alert message feature
commit52cf16284355b63ab9688ae06a11e93beeee4159 authorAlexandru Ciobanu <aiciobanu_@outlook.com> dateThu 30 Jun 2022, 18:11 (4 years ago) parentcbda3cf
3 files changed+59−6
oauthproxy_test.go+53 pkg/app/pagewriter/pagewriter_test.go+4−4 pkg/app/pagewriter/sign_in_page_test.go+2−2
oauthproxy_test.go+53
@@ -657,6 +657,59 @@ func TestManualSignInStoresUserGroupsInTheSession(t *testing.T) {
657657 assert.Equal(t, userGroups, s.Groups)
658658}
659659
660+type ManualSignInValidator struct{}
661+
662+func (ManualSignInValidator) Validate(user, password string) bool {
663+ switch {
664+ case user == "admin" && password == "adminPass":
665+ return true
666+ default:
667+ return false
668+ }
669+}
670+
671+func ManualSignInWithCredentials(t *testing.T, user, pass string) int {
672+ opts := baseTestOptions()
673+ err := validation.Validate(opts)
674+ if err != nil {
675+ t.Fatal(err)
676+ }
677+
678+ proxy, err := NewOAuthProxy(opts, func(email string) bool {
679+ return true
680+ })
681+ if err != nil {
682+ t.Fatal(err)
683+ }
684+
685+ proxy.basicAuthValidator = ManualSignInValidator{}
686+
687+ rw := httptest.NewRecorder()
688+ formData := url.Values{}
689+ formData.Set("username", user)
690+ formData.Set("password", pass)
691+ signInReq, _ := http.NewRequest(http.MethodPost, "/oauth2/sign_in", strings.NewReader(formData.Encode()))
692+ signInReq.Header.Add("Content-Type", "application/x-www-form-urlencoded")
693+ proxy.ServeHTTP(rw, signInReq)
694+
695+ return rw.Code
696+}
697+
698+func TestManualSignInEmptyUsernameAlert(t *testing.T) {
699+ statusCode := ManualSignInWithCredentials(t, "", "")
700+ assert.Equal(t, http.StatusBadRequest, statusCode)
701+}
702+
703+func TestManualSignInInvalidCredentialsAlert(t *testing.T) {
704+ statusCode := ManualSignInWithCredentials(t, "admin", "")
705+ assert.Equal(t, http.StatusUnauthorized, statusCode)
706+}
707+
708+func TestManualSignInCorrectCredentials(t *testing.T) {
709+ statusCode := ManualSignInWithCredentials(t, "admin", "adminPass")
710+ assert.Equal(t, http.StatusFound, statusCode)
711+}
712+
660713func TestSignInPageIncludesTargetRedirect(t *testing.T) {
661714 sipTest, err := NewSignInPageTest(false)
662715 if err != nil {
pkg/app/pagewriter/pagewriter_test.go+4−4
@@ -57,7 +57,7 @@ var _ = Describe("Writer", func() {
5757
5858 It("Writes the default sign in template", func() {
5959 recorder := httptest.NewRecorder()
60− writer.WriteSignInPage(recorder, request, "/redirect")
60+ writer.WriteSignInPage(recorder, request, "/redirect", http.StatusOK)
6161
6262 body, err := ioutil.ReadAll(recorder.Result().Body)
6363 Expect(err).ToNot(HaveOccurred())
@@ -104,7 +104,7 @@ var _ = Describe("Writer", func() {
104104
105105 It("Writes the custom sign in template", func() {
106106 recorder := httptest.NewRecorder()
107− writer.WriteSignInPage(recorder, request, "/redirect")
107+ writer.WriteSignInPage(recorder, request, "/redirect", http.StatusOK)
108108
109109 body, err := ioutil.ReadAll(recorder.Result().Body)
110110 Expect(err).ToNot(HaveOccurred())
@@ -151,7 +151,7 @@ var _ = Describe("Writer", func() {
151151 rw := httptest.NewRecorder()
152152 req := httptest.NewRequest("", "/sign-in", nil)
153153 redirectURL := "<redirectURL>"
154− in.writer.WriteSignInPage(rw, req, redirectURL)
154+ in.writer.WriteSignInPage(rw, req, redirectURL, http.StatusOK)
155155
156156 Expect(rw.Result().StatusCode).To(Equal(in.expectedStatus))
157157
@@ -166,7 +166,7 @@ var _ = Describe("Writer", func() {
166166 }),
167167 Entry("With an override function", writerFuncsTableInput{
168168 writer: &WriterFuncs{
169− SignInPageFunc: func(rw http.ResponseWriter, req *http.Request, redirectURL string) {
169+ SignInPageFunc: func(rw http.ResponseWriter, req *http.Request, redirectURL string, statusCode int) {
170170 rw.WriteHeader(202)
171171 rw.Write([]byte(fmt.Sprintf("%s %s", req.URL.Path, redirectURL)))
172172 },
pkg/app/pagewriter/sign_in_page_test.go+2−2
@@ -54,7 +54,7 @@ var _ = Describe("SignIn Page", func() {
5454 Context("WriteSignInPage", func() {
5555 It("Writes the template to the response writer", func() {
5656 recorder := httptest.NewRecorder()
57− signInPage.WriteSignInPage(recorder, request, "/redirect")
57+ signInPage.WriteSignInPage(recorder, request, "/redirect", http.StatusOK)
5858
5959 body, err := ioutil.ReadAll(recorder.Result().Body)
6060 Expect(err).ToNot(HaveOccurred())
@@ -68,7 +68,7 @@ var _ = Describe("SignIn Page", func() {
6868 signInPage.template = tmpl
6969
7070 recorder := httptest.NewRecorder()
71− signInPage.WriteSignInPage(recorder, request, "/redirect")
71+ signInPage.WriteSignInPage(recorder, request, "/redirect", http.StatusOK)
7272
7373 body, err := ioutil.ReadAll(recorder.Result().Body)
7474 Expect(err).ToNot(HaveOccurred())