add more tests
This commit is contained in:
parent
99c2eec759
commit
6631288843
@ -574,6 +574,64 @@ func Test_BookRoom(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// }}}
|
||||||
|
// {{{ Login
|
||||||
|
|
||||||
|
var loginTests = []struct {
|
||||||
|
name string
|
||||||
|
email string
|
||||||
|
expectedStatusCode int
|
||||||
|
expectedHTML string
|
||||||
|
expectedLocation string
|
||||||
|
}{
|
||||||
|
{"valid-credentials", "a@b.c", http.StatusSeeOther, "", "/admin/dashboard"},
|
||||||
|
{"invalid-credentials", "invalid@b.c", http.StatusSeeOther, "", "/user/login"},
|
||||||
|
{"invalid-data", "a@b", http.StatusOK, `action="/user/login"`, ""},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLogin(t *testing.T) {
|
||||||
|
// range through all tests
|
||||||
|
for _, e := range loginTests {
|
||||||
|
postedData := url.Values{}
|
||||||
|
postedData.Add("email", e.email)
|
||||||
|
postedData.Add("password", "password")
|
||||||
|
|
||||||
|
// create request
|
||||||
|
req, _ := http.NewRequest("POST", "/user/login", strings.NewReader(postedData.Encode()))
|
||||||
|
ctx := getCtx(req)
|
||||||
|
req = req.WithContext(ctx)
|
||||||
|
|
||||||
|
// set the header
|
||||||
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
rr := httptest.NewRecorder()
|
||||||
|
|
||||||
|
// call the handler
|
||||||
|
handler := http.HandlerFunc(Repo.PostShowLogin)
|
||||||
|
handler.ServeHTTP(rr, req)
|
||||||
|
|
||||||
|
if rr.Code != e.expectedStatusCode {
|
||||||
|
t.Errorf("failed %s: expected code %d, but got %d", e.name, e.expectedStatusCode, rr.Code)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e.expectedLocation != "" {
|
||||||
|
// get the URL from test
|
||||||
|
actualLoc, _ := rr.Result().Location()
|
||||||
|
if actualLoc.String() != e.expectedLocation {
|
||||||
|
t.Errorf("failed %s: expected location %s, but got location %s", e.name, e.expectedLocation, actualLoc.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// checking for expected values in HTML
|
||||||
|
if e.expectedHTML != "" {
|
||||||
|
// read the response body into a string
|
||||||
|
html := rr.Body.String()
|
||||||
|
if !strings.Contains(html, e.expectedHTML) {
|
||||||
|
t.Errorf("failed %s: expected html contains %s, but got html %s", e.name, e.expectedHTML, html)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
// {{{ Test Helpers
|
// {{{ Test Helpers
|
||||||
|
|
||||||
|
@ -79,7 +79,10 @@ func (m *testDBRepo) UpdateUser(u models.User) error {
|
|||||||
|
|
||||||
// Authenticate authenticates a user
|
// Authenticate authenticates a user
|
||||||
func (m *testDBRepo) Authenticate(email, testPassword string) (int, string, error) {
|
func (m *testDBRepo) Authenticate(email, testPassword string) (int, string, error) {
|
||||||
|
if email == "a@b.c" {
|
||||||
return 1, "", nil
|
return 1, "", nil
|
||||||
|
}
|
||||||
|
return 0, "", errors.New("deliberate errors")
|
||||||
}
|
}
|
||||||
|
|
||||||
// AllReservations returns a slice of all reservations
|
// AllReservations returns a slice of all reservations
|
||||||
|
Loading…
Reference in New Issue
Block a user