Added more unit tests for authors
This commit is contained in:
parent
ab19edfbd3
commit
7ddbec7a6f
|
@ -60,8 +60,7 @@ func GetUser(user User) (userOut User, exists bool, err error) {
|
||||||
func CheckUserCredentials(u *UserLogin) (User, error) {
|
func CheckUserCredentials(u *UserLogin) (User, error) {
|
||||||
|
|
||||||
// Check if the user exists
|
// Check if the user exists
|
||||||
var user = User{Username: u.Username}
|
user, exists, err := GetUser(User{Username:u.Username})
|
||||||
exists, err := x.Get(&user)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return User{}, err
|
return User{}, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,10 +49,7 @@ func hashPassword(password string) (string, error) {
|
||||||
|
|
||||||
// UpdateUser updates a user
|
// UpdateUser updates a user
|
||||||
func UpdateUser(user User) (updatedUser User, err error) {
|
func UpdateUser(user User) (updatedUser User, err error) {
|
||||||
// Check if we have at least a username
|
|
||||||
if user.Username == "" {
|
|
||||||
return User{}, ErrNoUsername{user.ID}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if it exists
|
// Check if it exists
|
||||||
theUser, exists, err := GetUserByID(user.ID)
|
theUser, exists, err := GetUserByID(user.ID)
|
||||||
|
@ -61,6 +58,11 @@ func UpdateUser(user User) (updatedUser User, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if exists {
|
if exists {
|
||||||
|
// Check if we have at least a username
|
||||||
|
if user.Username == "" {
|
||||||
|
//return User{}, ErrNoUsername{user.ID}
|
||||||
|
user.Username = theUser.Username // Dont change the username if we dont have one
|
||||||
|
}
|
||||||
|
|
||||||
user.Password = theUser.Password // set the password to the one in the database to not accedently resetting it
|
user.Password = theUser.Password // set the password to the one in the database to not accedently resetting it
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ func TestCreateUser(t *testing.T) {
|
||||||
|
|
||||||
// Our dummy user for testing
|
// Our dummy user for testing
|
||||||
dummyuser := User{
|
dummyuser := User{
|
||||||
Name: "testu",
|
Name: "noooem, dief",
|
||||||
Username: "testuu",
|
Username: "testuu",
|
||||||
Password: "1234",
|
Password: "1234",
|
||||||
Email: "noone@example.com",
|
Email: "noone@example.com",
|
||||||
|
@ -33,19 +33,19 @@ func TestCreateUser(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Check if it fails to create the same user again
|
// Check if it fails to create the same user again
|
||||||
createdUser, err = CreateUser(dummyuser)
|
_, err = CreateUser(dummyuser)
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
||||||
// Check if it fails to create a user with just the same username
|
// Check if it fails to create a user with just the same username
|
||||||
createdUser, err = CreateUser(User{Username: "testuu"})
|
_, err = CreateUser(User{Username:dummyuser.Username})
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
||||||
// Check if it fails to create a user without password and username
|
// Check if it fails to create a user without password and username
|
||||||
createdUser, err = CreateUser(User{})
|
_, err = CreateUser(User{})
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
assert.True(t, IsErrNoUsernamePassword(err))
|
assert.True(t, IsErrNoUsernamePassword(err))
|
||||||
|
|
||||||
createdUser, err = CreateUser(User{Name: "blub"})
|
_, err = CreateUser(User{Name: "blub"})
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
assert.True(t, IsErrNoUsernamePassword(err))
|
assert.True(t, IsErrNoUsernamePassword(err))
|
||||||
|
|
||||||
|
@ -69,7 +69,63 @@ func TestCreateUser(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, dummyuser.Name, user.Name)
|
assert.Equal(t, dummyuser.Name, user.Name)
|
||||||
|
|
||||||
// List one user
|
// Check wrong password (should also fail)
|
||||||
|
_, err = CheckUserCredentials(&UserLogin{"testuu", "12345"})
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
// Check usercredentials for a nonexistent user (should fail)
|
||||||
|
_, err = CheckUserCredentials(&UserLogin{"dfstestuu", "1234"})
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.True(t, IsErrUserDoesNotExist(err))
|
||||||
|
|
||||||
|
// Update the user
|
||||||
|
newname := "Test_te"
|
||||||
|
uuser, err := UpdateUser(User{ID:theuser.ID, Name: newname, Password: "444444"})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, newname, uuser.Name)
|
||||||
|
assert.Equal(t, theuser.Password, uuser.Password) // Password should not change
|
||||||
|
assert.Equal(t, theuser.Username, uuser.Username) // Username should not change either
|
||||||
|
|
||||||
|
// Try updating one which does not exist
|
||||||
|
_, err = UpdateUser(User{ID:99999, Username: "dg"})
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.True(t, IsErrUserDoesNotExist(err))
|
||||||
|
|
||||||
|
// Update a users password
|
||||||
|
newpassword := "55555"
|
||||||
|
err = UpdateUserPassword(theuser.ID, newpassword)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Check if it was changed
|
||||||
|
user, err = CheckUserCredentials(&UserLogin{theuser.Username, newpassword})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, newname, user.Name)
|
||||||
|
|
||||||
|
// Check if the searchterm works
|
||||||
|
all, err := ListUsers("test")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, len(all) > 0)
|
||||||
|
|
||||||
|
all, err = ListUsers("")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, len(all) > 0)
|
||||||
|
|
||||||
|
// Try updating the password of a nonexistent user (should fail)
|
||||||
|
err = UpdateUserPassword(9999, newpassword)
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.True(t, IsErrUserDoesNotExist(err))
|
||||||
|
|
||||||
// Delete it
|
// Delete it
|
||||||
|
err = DeleteUserByID(theuser.ID)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Try deleting one with ID = 0
|
||||||
|
err = DeleteUserByID(0)
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.True(t, IsErrIDCannotBeZero(err))
|
||||||
|
|
||||||
|
// Log some user action
|
||||||
|
err = logAction("test something", User{ID: 1}, 1)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue