161 lines
3.2 KiB
Go
161 lines
3.2 KiB
Go
package controllers_test
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"git.hoogi.eu/snafu/go-blog/controllers"
|
|
"git.hoogi.eu/snafu/go-blog/models"
|
|
)
|
|
|
|
func TestAccountActivation(t *testing.T) {
|
|
setup(t)
|
|
|
|
defer teardown()
|
|
|
|
ui := &models.UserInvite{
|
|
DisplayName: "Homer Simpson",
|
|
Email: "homer@example.com",
|
|
Username: "homer",
|
|
IsAdmin: false,
|
|
}
|
|
|
|
_, hash, err := doAdminCreateUserInviteRequest(rAdminUser, ui)
|
|
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
err = doActivateAccountRequest(rGuest, "1234567890123", "1234567890123", hash)
|
|
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
err = login("homer", "1234567890123")
|
|
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestProfileUpdate(t *testing.T) {
|
|
setup(t)
|
|
|
|
defer teardown()
|
|
|
|
user := &models.User{
|
|
DisplayName: "Homer Simpson",
|
|
Email: "homer@example.com",
|
|
Username: "homer",
|
|
PlainPassword: []byte("123456789012"),
|
|
Active: true,
|
|
IsAdmin: false,
|
|
}
|
|
|
|
userID, err := doAdminCreateUserRequest(rAdminUser, user)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
user.Username = "marge"
|
|
user.PlainPassword = []byte("2109876543210")
|
|
user.DisplayName = "Marge Simpson"
|
|
user.IsAdmin = true
|
|
user.Email = "marge@example.com"
|
|
|
|
err = doAdminProfileRequest(reqUser(userID), user, "123456789012")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
err = login(user.Username, string(user.PlainPassword))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func doAdminProfileRequest(user reqUser, u *models.User, currentPassword string) error {
|
|
values := url.Values{}
|
|
addValue(values, "username", u.Username)
|
|
addValue(values, "email", u.Email)
|
|
addValue(values, "displayname", u.DisplayName)
|
|
addValue(values, "password", string(u.PlainPassword))
|
|
addValue(values, "retyped_password", string(u.PlainPassword))
|
|
addValue(values, "current_password", string(currentPassword))
|
|
|
|
r := request{
|
|
url: "/admin/profile",
|
|
user: user,
|
|
method: "POST",
|
|
values: values,
|
|
}
|
|
|
|
rw := httptest.NewRecorder()
|
|
re := r.buildRequest()
|
|
tpl := controllers.AdminProfilePostHandler(ctx, rw, re)
|
|
|
|
if tpl.Err != nil {
|
|
return tpl.Err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func doActivateAccountRequest(user reqUser, password, passwordRepeat, hash string) error {
|
|
values := url.Values{}
|
|
addValue(values, "password", password)
|
|
addValue(values, "password_repeat", passwordRepeat)
|
|
|
|
r := request{
|
|
url: "/admin/activate-account/" + hash,
|
|
user: user,
|
|
method: "POST",
|
|
values: values,
|
|
pathVar: []pathVar{
|
|
pathVar{
|
|
key: "hash",
|
|
value: hash,
|
|
},
|
|
},
|
|
}
|
|
|
|
rw := httptest.NewRecorder()
|
|
tpl := controllers.ActivateAccountPostHandler(ctx, rw, r.buildRequest())
|
|
|
|
if tpl.Err != nil {
|
|
return tpl.Err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func doResetPasswordRequest(user reqUser, password, passwordRepeat, hash string) error {
|
|
values := url.Values{}
|
|
addValue(values, "password", password)
|
|
addValue(values, "password_repeat", passwordRepeat)
|
|
|
|
r := request{
|
|
url: "/admin/reset-password/" + hash,
|
|
user: user,
|
|
method: "POST",
|
|
values: values,
|
|
pathVar: []pathVar{
|
|
pathVar{
|
|
key: "hash",
|
|
value: hash,
|
|
},
|
|
},
|
|
}
|
|
|
|
rw := httptest.NewRecorder()
|
|
tpl := controllers.AdminSiteEditPostHandler(ctx, rw, r.buildRequest())
|
|
|
|
if tpl.Err != nil {
|
|
return tpl.Err
|
|
}
|
|
|
|
return nil
|
|
}
|