Refactor User and DB handling #123

Merged
konrad merged 19 commits from refactor/user into master 2020-01-26 17:08:08 +00:00
11 changed files with 25 additions and 35 deletions
Showing only changes of commit be733b5b0d - Show all commits

View File

@ -54,10 +54,8 @@ func CreateTestEngine() (engine *xorm.Engine, err error) {
return
}
// InitTestFixtures populates the db with all fixtures from the fixtures folder
func InitTestFixtures() (err error) {
// Create the db schema
// migration.Migrate(x)
// Create all fixtures
config.InitDefaultConfig()
// We need to set the root path even if we're not using the config, otherwise fixtures are not loaded correctly
@ -76,13 +74,3 @@ func InitTestFixtures() (err error) {
return nil
}
func InitTestDB() (x *xorm.Engine, err error) {
x, err = CreateTestEngine()
if err != nil {
return
}
err = InitTestFixtures()
return x, err
}

View File

@ -42,7 +42,7 @@ type Token struct {
// @Failure 403 {object} models.Message "Invalid username or password."
// @Router /login [post]
func Login(c echo.Context) error {
u := user2.UserLogin{}
u := user2.Login{}
if err := c.Bind(&u); err != nil {
return c.JSON(http.StatusBadRequest, models.Message{"Please provide a username and password."})
}

View File

@ -42,7 +42,7 @@ func UserConfirmEmail(c echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, "No token provided.")
}
err := user.UserEmailConfirm(&emailConfirm)
err := user.ConfirmEmail(&emailConfirm)
if err != nil {
return handler.HandleHTTPError(err, c)
}

View File

@ -42,7 +42,7 @@ func UserResetPassword(c echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, "No password provided.")
}
err := user.UserPasswordReset(&pwReset)
err := user.ResetPassword(&pwReset)
if err != nil {
return handler.HandleHTTPError(err, c)
}

View File

@ -61,7 +61,7 @@ func UserChangePassword(c echo.Context) error {
}
// Check the current password
if _, err = user.CheckUserCredentials(&user.UserLogin{Username: doer.Username, Password: newPW.OldPassword}); err != nil {
if _, err = user.CheckUserCredentials(&user.Login{Username: doer.Username, Password: newPW.OldPassword}); err != nil {
return handler.HandleHTTPError(err, c)
}

View File

@ -408,7 +408,7 @@ func registerCalDavRoutes(c *echo.Group) {
}
func caldavBasicAuth(username, password string, c echo.Context) (bool, error) {
creds := &user.UserLogin{
creds := &user.Login{
Username: username,
Password: password,
}

View File

@ -30,8 +30,8 @@ import (
"reflect"
)
// UserLogin Object to recive user credentials in JSON format
type UserLogin struct {
// Login Object to recive user credentials in JSON format
type Login struct {
// The username used to log in.
Username string `json:"username"`
// The password for the user.
@ -77,6 +77,8 @@ func (User) TableName() string {
return "users"
}
// GetFromAuth returns a user object from a web.Auth object and returns an error if the underlying type
// is not a user object
func GetFromAuth(a web.Auth) (*User, error) {
u, is := a.(*User)
if !is {
@ -154,7 +156,7 @@ func getUser(user *User, withEmail bool) (userOut *User, err error) {
}
// CheckUserCredentials checks user credentials
func CheckUserCredentials(u *UserLogin) (*User, error) {
func CheckUserCredentials(u *Login) (*User, error) {
// Check if we have any credentials
if u.Password == "" || u.Username == "" {
return &User{}, ErrNoUsernamePassword{}

View File

@ -23,8 +23,8 @@ type EmailConfirm struct {
Token string `json:"token"`
}
// UserEmailConfirm handles the confirmation of an email address
func UserEmailConfirm(c *EmailConfirm) (err error) {
// ConfirmEmail handles the confirmation of an email address
func ConfirmEmail(c *EmailConfirm) (err error) {
// Check if we have an email confirm token
if c.Token == "" {

View File

@ -62,8 +62,8 @@ func TestUserEmailConfirm(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := UserEmailConfirm(tt.args.c); (err != nil) != tt.wantErr {
t.Errorf("UserEmailConfirm() error = %v, wantErr %v", err, tt.wantErr)
if err := ConfirmEmail(tt.args.c); (err != nil) != tt.wantErr {
t.Errorf("ConfirmEmail() error = %v, wantErr %v", err, tt.wantErr)
}
})
}

View File

@ -31,8 +31,8 @@ type PasswordReset struct {
NewPassword string `json:"new_password"`
}
// UserPasswordReset resets a users password
func UserPasswordReset(reset *PasswordReset) (err error) {
// ResetPassword resets a users password
func ResetPassword(reset *PasswordReset) (err error) {
// Check if the password is not empty
if reset.NewPassword == "" {

View File

@ -79,24 +79,24 @@ func TestCreateUser(t *testing.T) {
assert.True(t, IsErrUserDoesNotExist(err))
// Check the user credentials with an unverified email
_, err = CheckUserCredentials(&UserLogin{"user5", "1234"})
_, err = CheckUserCredentials(&Login{"user5", "1234"})
assert.Error(t, err)
assert.True(t, IsErrEmailNotConfirmed(err))
// Update everything and check again
_, err = x.Cols("is_active").Where("true").Update(User{IsActive: true})
assert.NoError(t, err)
user, err := CheckUserCredentials(&UserLogin{"testuu", "1234"})
user, err := CheckUserCredentials(&Login{"testuu", "1234"})
assert.NoError(t, err)
assert.Equal(t, "testuu", user.Username)
// Check wrong password (should also fail)
_, err = CheckUserCredentials(&UserLogin{"testuu", "12345"})
_, err = CheckUserCredentials(&Login{"testuu", "12345"})
assert.Error(t, err)
assert.True(t, IsErrWrongUsernameOrPassword(err))
// Check usercredentials for a nonexistent user (should fail)
_, err = CheckUserCredentials(&UserLogin{"dfstestuu", "1234"})
_, err = CheckUserCredentials(&Login{"dfstestuu", "1234"})
assert.Error(t, err)
assert.True(t, IsErrWrongUsernameOrPassword(err))
@ -117,7 +117,7 @@ func TestCreateUser(t *testing.T) {
assert.NoError(t, err)
// Check if it was changed
_, err = CheckUserCredentials(&UserLogin{theuser.Username, newpassword})
_, err = CheckUserCredentials(&Login{theuser.Username, newpassword})
assert.NoError(t, err)
// Check if the searchterm works
@ -154,17 +154,17 @@ func TestUserPasswordReset(t *testing.T) {
// Try resetting it without a password
reset.NewPassword = ""
err = UserPasswordReset(reset)
err = ResetPassword(reset)
assert.True(t, IsErrNoUsernamePassword(err))
// Reset it
reset.NewPassword = "1234"
err = UserPasswordReset(reset)
err = ResetPassword(reset)
assert.NoError(t, err)
// Try resetting it with a wrong token
reset.Token = utils.MakeRandomString(400)
err = UserPasswordReset(reset)
err = ResetPassword(reset)
assert.Error(t, err)
assert.True(t, IsErrInvalidPasswordResetToken(err))
}