示例#1
0
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)
		}
	})
}
示例#2
0
func TestSessionNew(t *testing.T) {
	record := request.TestServer{t, TestHandler}

	It("should return 200", func() {
		record.Get("/login").Expect(200).Expect("Go Wires | Login")
	})
}
示例#3
0
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"))
		})
	})
}
示例#4
0
// 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")
	})
}
示例#5
0
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")
	})
}
示例#6
0
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")
	})
}
示例#7
0
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")
	})
}
示例#8
0
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)
	})
}
示例#9
0
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")
		})
	})
}