package pagewriter import ( "html/template" "io/ioutil" "net/http/httptest" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("SignIn Page Writer", func() { var signInPage *signInPageWriter BeforeEach(func() { errorTmpl, err := template.New("").Parse("{{.Title}}") Expect(err).ToNot(HaveOccurred()) errorPage := &errorPageWriter{ template: errorTmpl, } tmpl, err := template.New("").Parse("{{.ProxyPrefix}} {{.ProviderName}} {{.SignInMessage}} {{.Footer}} {{.Version}} {{.Redirect}} {{.CustomLogin}}") Expect(err).ToNot(HaveOccurred()) 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, } }) Context("WriteSignInPage", func() { It("Writes the template to the response writer", func() { recorder := httptest.NewRecorder() signInPage.WriteSignInPage(recorder, "/redirect") 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()) signInPage.template = tmpl recorder := httptest.NewRecorder() signInPage.WriteSignInPage(recorder, "/redirect") body, err := ioutil.ReadAll(recorder.Result().Body) Expect(err).ToNot(HaveOccurred()) Expect(string(body)).To(Equal("Internal Server Error")) }) }) })