go-blog/handler/login_test.go

82 lines
1.5 KiB
Go
Raw Normal View History

2020-11-29 16:56:42 +01:00
package handler_test
2018-04-27 14:38:12 +02:00
import (
2018-11-25 00:56:34 +01:00
"fmt"
2018-04-27 14:38:12 +02:00
"net/http/httptest"
"net/url"
"testing"
2020-11-29 16:56:42 +01:00
"git.hoogi.eu/snafu/go-blog/handler"
2018-04-27 14:38:12 +02:00
)
func TestLogin(t *testing.T) {
2018-11-25 02:15:09 +01:00
setup(t)
defer teardown()
2018-11-25 00:56:34 +01:00
err := login("alice", "123456789012")
2018-04-27 14:38:12 +02:00
if err != nil {
2018-11-25 00:56:34 +01:00
t.Error(err)
}
2018-11-25 02:15:09 +01:00
err = login("alice", "test2")
2018-11-25 00:56:34 +01:00
if err == nil {
t.Error("expected a failed login, but error is nil")
}
}
func login(username, password string) error {
resp, err := doLoginRequest(rGuest, username, password)
if err != nil {
return err
2018-04-27 14:38:12 +02:00
}
if resp.getTemplateError() != nil {
2018-11-25 00:56:34 +01:00
return fmt.Errorf("an error is returned %v", resp.getTemplateError().Error())
2018-04-27 14:38:12 +02:00
}
if !resp.isCodeSuccess() {
2018-11-25 00:56:34 +01:00
return fmt.Errorf("got an invalid http response code %d", resp.getStatus())
2018-04-27 14:38:12 +02:00
}
c, err := resp.getCookie("test-session")
if err != nil {
2018-11-25 00:56:34 +01:00
return err
2018-04-27 14:38:12 +02:00
}
if c.HttpOnly == false {
2018-11-25 00:56:34 +01:00
return fmt.Errorf("cookie with session id is missing http only flag")
2018-04-27 14:38:12 +02:00
}
if c.Secure == false {
2018-11-25 00:56:34 +01:00
return fmt.Errorf("cookie with session id is missing secure flag")
2018-04-27 14:38:12 +02:00
}
2018-11-25 00:56:34 +01:00
return nil
2018-04-27 14:38:12 +02:00
}
2018-11-25 00:07:40 +01:00
func doLoginRequest(user reqUser, login, password string) (responseWrapper, error) {
2018-04-27 14:38:12 +02:00
values := url.Values{}
2018-11-25 00:07:40 +01:00
addValue(values, "username", login)
addValue(values, "password", password)
r := request{
url: "/admin/login",
method: "POST",
user: user,
values: values,
2018-04-27 14:38:12 +02:00
}
rr := httptest.NewRecorder()
2020-11-29 16:56:42 +01:00
tpl := handler.LoginPostHandler(ctx, rr, r.buildRequest())
2018-04-27 14:38:12 +02:00
if tpl.Err != nil {
return responseWrapper{response: rr, template: tpl}, tpl.Err
}
return responseWrapper{response: rr, template: tpl}, nil
}