You've already forked oauth2-proxy
mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2025-08-06 22:42:56 +02:00
Use ErrorPage to render proxy error page
This commit is contained in:
@ -54,3 +54,11 @@ func (e *ErrorPage) Render(rw http.ResponseWriter, status int, redirectURL strin
|
||||
http.Error(rw, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
// ProxyErrorHandler is used by the upstream ReverseProxy to render error pages
|
||||
// when there are issues with upstream servers.
|
||||
// It is expected to always render a bad gateway error.
|
||||
func (e *ErrorPage) ProxyErrorHandler(rw http.ResponseWriter, req *http.Request, proxyErr error) {
|
||||
logger.Errorf("Error proxying to upstream server: %v", proxyErr)
|
||||
e.Render(rw, http.StatusBadGateway, "", "Error proxying to upstream server")
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"html/template"
|
||||
"io/ioutil"
|
||||
"net/http/httptest"
|
||||
@ -10,19 +11,22 @@ import (
|
||||
)
|
||||
|
||||
var _ = Describe("Error Page", func() {
|
||||
var errorPage *ErrorPage
|
||||
|
||||
BeforeEach(func() {
|
||||
tmpl, err := template.New("").Parse("{{.Title}} {{.Message}} {{.ProxyPrefix}} {{.StatusCode}} {{.Redirect}} {{.Footer}} {{.Version}}")
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
errorPage = &ErrorPage{
|
||||
Template: tmpl,
|
||||
ProxyPrefix: "/prefix/",
|
||||
Footer: "Custom Footer Text",
|
||||
Version: "v0.0.0-test",
|
||||
}
|
||||
})
|
||||
|
||||
Context("Render", func() {
|
||||
It("Writes the template to the response writer", func() {
|
||||
tmpl, err := template.New("").Parse("{{.Title}} {{.Message}} {{.ProxyPrefix}} {{.StatusCode}} {{.Redirect}} {{.Footer}} {{.Version}}")
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
errorPage := &ErrorPage{
|
||||
Template: tmpl,
|
||||
ProxyPrefix: "/prefix/",
|
||||
Footer: "Custom Footer Text",
|
||||
Version: "v0.0.0-test",
|
||||
}
|
||||
|
||||
recorder := httptest.NewRecorder()
|
||||
errorPage.Render(recorder, 403, "/redirect", "Access Denied")
|
||||
|
||||
@ -32,4 +36,15 @@ var _ = Describe("Error Page", func() {
|
||||
})
|
||||
})
|
||||
|
||||
Context("ProxyErrorHandler", func() {
|
||||
It("Writes a bad gateway error the response writer", func() {
|
||||
req := httptest.NewRequest("", "/bad-gateway", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
errorPage.ProxyErrorHandler(recorder, req, errors.New("some upstream error"))
|
||||
|
||||
body, err := ioutil.ReadAll(recorder.Result().Body)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(string(body)).To(Equal("Bad Gateway Error proxying to upstream server /prefix/ 502 Custom Footer Text v0.0.0-test"))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -79,6 +79,7 @@ const (
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Redirect }}
|
||||
<hr>
|
||||
|
||||
<div class="columns">
|
||||
@ -94,6 +95,7 @@ const (
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
Reference in New Issue
Block a user