func TestActiveHeader(t *testing.T) { record := request.TestServer{t, TestHandler} testcases := []struct { Path string Link string }{ {"/about", "About"}, {"/contact", "Contact"}, {"/help", "Help"}, {"/", "Home"}, } It("should highlight the correct header link", func() { for _, test := range testcases { ctx := record.Get(test.Path) reader := strings.NewReader(ctx.ResponseRecorder.Body.String()) doc, err := goquery.NewDocumentFromReader(reader) if err != nil { t.Fatal(err) } active := doc.Find(".nav-item.active").First().Text() active = strings.TrimSpace(active) assert.Equal(t, test.Link, active) } }) }
func TestSessionNew(t *testing.T) { record := request.TestServer{t, TestHandler} It("should return 200", func() { record.Get("/login").Expect(200).Expect("Go Wires | Login") }) }
func TestCheckAuth(t *testing.T) { record := request.TestServer{t, app} Describe("when the user is not logged in", func() { It("should redirect to the login page", func() { ctx := record.Get("/").Expect(302) assert.Equal(t, "/login", ctx.ResponseRecorder.Header().Get("Location")) }) }) }
// Middleware integration test. func TestNotFound(t *testing.T) { record := request.TestServer{t, TestHandler} It("should return 404", func() { record.Get("/invalidpath").Expect(404) }) It("should return the not found page", func() { record.Get("/invalidpath").Expect("here be a 404") }) }
func TestHome(t *testing.T) { record := request.TestServer{t, TestHandler} It("should return 200", func() { record.Get("/").Expect(200) }) It("should return the home page", func() { record.Get("/").Expect("App | Home") record.Get("/").Expect("home page") }) }
func TestContact(t *testing.T) { record := request.TestServer{t, TestHandler} It("should return 200", func() { record.Get("/contact").Expect(200) }) It("should return the contact page", func() { record.Get("/contact").Expect("App | Contact") record.Get("/contact").Expect("contact page") }) }
func TestAbout(t *testing.T) { record := request.TestServer{t, TestHandler} It("should return 200", func() { record.Get("/about").Expect(200) }) It("should return the about page", func() { record.Get("/about").Expect("App | About") record.Get("/about").Expect("about page") }) }
func TestUserNew(t *testing.T) { record := request.TestServer{t, TestHandler} It("should return 200", func() { record.Get("/signup").Expect(200) }) It("should return the signup page", func() { record.Get("/signup").Expect("User | Signup") record.Get("/signup").Expect(`type="password"`) }) It("should highlight the signup link", func() { ctx := record.Get("/signup") reader := strings.NewReader(ctx.ResponseRecorder.Body.String()) doc, err := goquery.NewDocumentFromReader(reader) if err != nil { t.Fatal(err) } active := doc.Find(".nav-item.active").First().Text() active = strings.TrimSpace(active) assert.Equal(t, "Signup", active) }) }
func TestUserShow(t *testing.T) { record := request.TestServer{t, TestHandler} Describe("when fetching a user that exists", func() { BeforeEach(func() { user := &models.User{Name: "jason", Email: "*****@*****.**"} if _, err := models.DB.Create(user); err != nil { t.Error(err) } }) AfterEach(func() { clearTable := "TRUNCATE TABLE users; ALTER SEQUENCE users_id_seq RESTART WITH 1" if _, err := models.DB.Exec(clearTable); err != nil { t.Error(err) } }) It("should return 200", func() { record.Get("/user/1").Expect(200) }) It("should return the user's profile page", func() { record.Get("/user/1").Expect("jason") record.Get("/user/1").Expect("*****@*****.**") record.Get("/user/1").Expect("Profile") }) It("should clear the flash cookie", func() { // Make an http.ResponseWriter and *http.Request. w := httptest.NewRecorder() r, err := http.NewRequest("GET", "/", nil) if err != nil { t.Error(err) } // Make a flash cookie. session, err := models.Store.Get(r, models.FlashName) if err != nil { t.Error(err) } session.AddFlash("this is a flash") session.Save(r, w) // Do a GET with the flash cookie. header := w.Header() header["Cookie"] = header["Set-Cookie"] header.Del("Set-Cookie") ctx := record.GetWithHeaders("/user/1", header).Expect("this is a flash") // Assert that the response has a Set-Cookie header, meaning that the // flash value was changed. assert.NotEmpty(t, ctx.ResponseRecorder.Header().Get("Set-Cookie")) }) }) Describe("when fetching a user that doesn't exist", func() { It("should return the not found page", func() { record.Get("/user/9000").Expect(404) record.Get("/user/9000").Expect("here be a 404") }) }) }