2021-02-13 11:38:33 +00:00
|
|
|
package pagewriter
|
2021-02-12 17:53:01 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"html/template"
|
|
|
|
"io/ioutil"
|
|
|
|
"net/http/httptest"
|
|
|
|
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
|
|
. "github.com/onsi/gomega"
|
|
|
|
)
|
|
|
|
|
2021-02-12 18:25:46 +00:00
|
|
|
var _ = Describe("SignIn Page Writer", func() {
|
|
|
|
var signInPage *signInPageWriter
|
2021-02-12 17:53:01 +00:00
|
|
|
|
|
|
|
BeforeEach(func() {
|
|
|
|
errorTmpl, err := template.New("").Parse("{{.Title}}")
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
2021-02-12 18:25:46 +00:00
|
|
|
errorPage := &errorPageWriter{
|
|
|
|
template: errorTmpl,
|
2021-02-12 17:53:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
tmpl, err := template.New("").Parse("{{.ProxyPrefix}} {{.ProviderName}} {{.SignInMessage}} {{.Footer}} {{.Version}} {{.Redirect}} {{.CustomLogin}}")
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
|
2021-02-12 18:25:46 +00:00
|
|
|
signInPage = &signInPageWriter{
|
|
|
|
template: tmpl,
|
|
|
|
errorPageWriter: errorPage,
|
|
|
|
proxyPrefix: "/prefix/",
|
|
|
|
providerName: "My Provider",
|
|
|
|
signInMessage: "Sign In Here",
|
|
|
|
footer: "Custom Footer Text",
|
|
|
|
version: "v0.0.0-test",
|
|
|
|
displayLoginForm: true,
|
2021-02-12 17:53:01 +00:00
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2021-02-12 18:25:46 +00:00
|
|
|
Context("WriteSignInPage", func() {
|
2021-02-12 17:53:01 +00:00
|
|
|
It("Writes the template to the response writer", func() {
|
|
|
|
recorder := httptest.NewRecorder()
|
2021-02-12 18:25:46 +00:00
|
|
|
signInPage.WriteSignInPage(recorder, "/redirect")
|
2021-02-12 17:53:01 +00:00
|
|
|
|
|
|
|
body, err := ioutil.ReadAll(recorder.Result().Body)
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
Expect(string(body)).To(Equal("/prefix/ My Provider Sign In Here Custom Footer Text v0.0.0-test /redirect true"))
|
|
|
|
})
|
|
|
|
|
|
|
|
It("Writes an error if the template can't be rendered", func() {
|
|
|
|
// Overwrite the template with something bad
|
|
|
|
tmpl, err := template.New("").Parse("{{.Unknown}}")
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
2021-02-12 18:25:46 +00:00
|
|
|
signInPage.template = tmpl
|
2021-02-12 17:53:01 +00:00
|
|
|
|
|
|
|
recorder := httptest.NewRecorder()
|
2021-02-12 18:25:46 +00:00
|
|
|
signInPage.WriteSignInPage(recorder, "/redirect")
|
2021-02-12 17:53:01 +00:00
|
|
|
|
|
|
|
body, err := ioutil.ReadAll(recorder.Result().Body)
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
|
|
Expect(string(body)).To(Equal("Internal Server Error"))
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|