diff options
| author | James Elliott <james-d-elliott@users.noreply.github.com> | 2021-07-22 13:52:37 +1000 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-22 13:52:37 +1000 | 
| commit | 911d71204f2f5846c7d677d049b3c8d26b6f0637 (patch) | |
| tree | 111204b788770240d0a3277bcd7474779193e5fb /internal/suites/suite_standalone_test.go | |
| parent | 7a4779b08e2ebd0036af3f132eb00b99b4d3c124 (diff) | |
fix(handlers): handle xhr requests to /api/verify with 401 (#2189)
This changes the way XML HTTP requests are handled on the verify endpoint so that they are redirected using a 401 instead of a 302/303.
Diffstat (limited to 'internal/suites/suite_standalone_test.go')
| -rw-r--r-- | internal/suites/suite_standalone_test.go | 20 | 
1 files changed, 13 insertions, 7 deletions
diff --git a/internal/suites/suite_standalone_test.go b/internal/suites/suite_standalone_test.go index 7fc1f876b..08e3807b3 100644 --- a/internal/suites/suite_standalone_test.go +++ b/internal/suites/suite_standalone_test.go @@ -14,6 +14,7 @@ import (  	"github.com/stretchr/testify/suite"  	"github.com/authelia/authelia/internal/storage" +	"github.com/authelia/authelia/internal/utils"  )  type StandaloneWebDriverSuite struct { @@ -110,6 +111,7 @@ func (s *StandaloneSuite) TestShouldRespectMethodsACL() {  	req.Header.Set("X-Forwarded-Proto", "https")  	req.Header.Set("X-Forwarded-Host", fmt.Sprintf("secure.%s", BaseDomain))  	req.Header.Set("X-Forwarded-URI", "/") +	req.Header.Set("Accept", "text/html; charset=utf8")  	client := NewHTTPClient()  	res, err := client.Do(req) @@ -119,7 +121,7 @@ func (s *StandaloneSuite) TestShouldRespectMethodsACL() {  	s.Assert().NoError(err)  	urlEncodedAdminURL := url.QueryEscape(SecureBaseURL + "/") -	s.Assert().Equal(fmt.Sprintf("Found. Redirecting to %s?rd=%s&rm=GET", GetLoginBaseURL(), urlEncodedAdminURL), string(body)) +	s.Assert().Equal(fmt.Sprintf("<a href=\"%s\">Found</a>", utils.StringHTMLEscape(fmt.Sprintf("%s/?rd=%s&rm=GET", GetLoginBaseURL(), urlEncodedAdminURL))), string(body))  	req.Header.Set("X-Forwarded-Method", "OPTIONS") @@ -135,6 +137,7 @@ func (s *StandaloneSuite) TestShouldRespondWithCorrectStatusCode() {  	req.Header.Set("X-Forwarded-Proto", "https")  	req.Header.Set("X-Forwarded-Host", fmt.Sprintf("secure.%s", BaseDomain))  	req.Header.Set("X-Forwarded-URI", "/") +	req.Header.Set("Accept", "text/html; charset=utf8")  	client := NewHTTPClient()  	res, err := client.Do(req) @@ -144,7 +147,7 @@ func (s *StandaloneSuite) TestShouldRespondWithCorrectStatusCode() {  	s.Assert().NoError(err)  	urlEncodedAdminURL := url.QueryEscape(SecureBaseURL + "/") -	s.Assert().Equal(fmt.Sprintf("Found. Redirecting to %s?rd=%s&rm=GET", GetLoginBaseURL(), urlEncodedAdminURL), string(body)) +	s.Assert().Equal(fmt.Sprintf("<a href=\"%s\">Found</a>", utils.StringHTMLEscape(fmt.Sprintf("%s/?rd=%s&rm=GET", GetLoginBaseURL(), urlEncodedAdminURL))), string(body))  	req.Header.Set("X-Forwarded-Method", "POST") @@ -155,15 +158,16 @@ func (s *StandaloneSuite) TestShouldRespondWithCorrectStatusCode() {  	s.Assert().NoError(err)  	urlEncodedAdminURL = url.QueryEscape(SecureBaseURL + "/") -	s.Assert().Equal(fmt.Sprintf("See Other. Redirecting to %s?rd=%s&rm=POST", GetLoginBaseURL(), urlEncodedAdminURL), string(body)) +	s.Assert().Equal(fmt.Sprintf("<a href=\"%s\">See Other</a>", utils.StringHTMLEscape(fmt.Sprintf("%s/?rd=%s&rm=POST", GetLoginBaseURL(), urlEncodedAdminURL))), string(body))  }  // Standard case using nginx. -func (s *StandaloneSuite) TestShouldVerifyAPIVerifyUnauthorize() { +func (s *StandaloneSuite) TestShouldVerifyAPIVerifyUnauthorized() {  	req, err := http.NewRequest("GET", fmt.Sprintf("%s/api/verify", AutheliaBaseURL), nil)  	s.Assert().NoError(err)  	req.Header.Set("X-Forwarded-Proto", "https")  	req.Header.Set("X-Original-URL", AdminBaseURL) +	req.Header.Set("Accept", "text/html; charset=utf8")  	client := NewHTTPClient()  	res, err := client.Do(req) @@ -171,7 +175,7 @@ func (s *StandaloneSuite) TestShouldVerifyAPIVerifyUnauthorize() {  	s.Assert().Equal(res.StatusCode, 401)  	body, err := ioutil.ReadAll(res.Body)  	s.Assert().NoError(err) -	s.Assert().Equal(string(body), "Unauthorized") +	s.Assert().Equal("Unauthorized", string(body))  }  // Standard case using Kubernetes. @@ -180,6 +184,7 @@ func (s *StandaloneSuite) TestShouldVerifyAPIVerifyRedirectFromXOriginalURL() {  	s.Assert().NoError(err)  	req.Header.Set("X-Forwarded-Proto", "https")  	req.Header.Set("X-Original-URL", AdminBaseURL) +	req.Header.Set("Accept", "text/html; charset=utf8")  	client := NewHTTPClient()  	res, err := client.Do(req) @@ -189,7 +194,7 @@ func (s *StandaloneSuite) TestShouldVerifyAPIVerifyRedirectFromXOriginalURL() {  	s.Assert().NoError(err)  	urlEncodedAdminURL := url.QueryEscape(AdminBaseURL) -	s.Assert().Equal(fmt.Sprintf("Found. Redirecting to %s?rd=%s", GetLoginBaseURL(), urlEncodedAdminURL), string(body)) +	s.Assert().Equal(fmt.Sprintf("<a href=\"%s\">Found</a>", utils.StringHTMLEscape(fmt.Sprintf("%s/?rd=%s", GetLoginBaseURL(), urlEncodedAdminURL))), string(body))  }  func (s *StandaloneSuite) TestShouldVerifyAPIVerifyRedirectFromXOriginalHostURI() { @@ -198,6 +203,7 @@ func (s *StandaloneSuite) TestShouldVerifyAPIVerifyRedirectFromXOriginalHostURI(  	req.Header.Set("X-Forwarded-Proto", "https")  	req.Header.Set("X-Forwarded-Host", "secure.example.com:8080")  	req.Header.Set("X-Forwarded-URI", "/") +	req.Header.Set("Accept", "text/html; charset=utf8")  	client := NewHTTPClient()  	res, err := client.Do(req) @@ -207,7 +213,7 @@ func (s *StandaloneSuite) TestShouldVerifyAPIVerifyRedirectFromXOriginalHostURI(  	s.Assert().NoError(err)  	urlEncodedAdminURL := url.QueryEscape(SecureBaseURL + "/") -	s.Assert().Equal(fmt.Sprintf("Found. Redirecting to %s?rd=%s", GetLoginBaseURL(), urlEncodedAdminURL), string(body)) +	s.Assert().Equal(fmt.Sprintf("<a href=\"%s\">Found</a>", utils.StringHTMLEscape(fmt.Sprintf("%s/?rd=%s", GetLoginBaseURL(), urlEncodedAdminURL))), string(body))  }  func (s *StandaloneSuite) TestStandaloneWebDriverScenario() {  | 
