Start refactoring user tests
continuous-integration/drone/pr Build is failing Details

This commit is contained in:
kolaente 2020-01-26 14:37:20 +01:00
parent fc58082cab
commit 4906db8c2b
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 73 additions and 38 deletions

View File

@ -23,9 +23,6 @@ import (
)
func TestUserEmailConfirm(t *testing.T) {
db.LoadAndAssertFixtures(t)
type args struct {
c *EmailConfirm
}
@ -66,6 +63,7 @@ func TestUserEmailConfirm(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
db.LoadAndAssertFixtures(t)
if err := ConfirmEmail(tt.args.c); (err != nil) != tt.wantErr {
t.Errorf("ConfirmEmail() error = %v, wantErr %v", err, tt.wantErr)
}

View File

@ -25,43 +25,73 @@ import (
)
func TestCreateUser(t *testing.T) {
db.LoadAndAssertFixtures(t)
// Our dummy user for testing
dummyuser := &User{
Username: "testuu",
Username: "testuser",
Password: "1234",
Email: "noone@example.com",
}
// Create a new user
createdUser, err := CreateUser(dummyuser)
assert.NoError(t, err)
// Create a second new user
_, err = CreateUser(&User{Username: dummyuser.Username + "2", Email: dummyuser.Email + "m", Password: dummyuser.Password})
assert.NoError(t, err)
// Check if it fails to create the same user again
_, err = CreateUser(dummyuser)
assert.Error(t, err)
// Check if it fails to create a user with just the same username
_, err = CreateUser(&User{Username: dummyuser.Username, Password: "12345", Email: "email@example.com"})
assert.Error(t, err)
assert.True(t, IsErrUsernameExists(err))
// Check if it fails to create one with the same email
_, err = CreateUser(&User{Username: "noone", Password: "1234", Email: dummyuser.Email})
assert.Error(t, err)
assert.True(t, IsErrUserEmailExists(err))
// Check if it fails to create a user without password and username
_, err = CreateUser(&User{})
assert.Error(t, err)
assert.True(t, IsErrNoUsernamePassword(err))
t.Run("normal", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
createdUser, err := CreateUser(dummyuser)
assert.NoError(t, err)
assert.NotZero(t, createdUser.Created)
})
t.Run("already existing", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
_, err := CreateUser(&User{
Username: "user1",
Password: "12345",
Email: "email@example.com",
})
assert.Error(t, err)
assert.True(t, IsErrUsernameExists(err))
})
t.Run("same email", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
_, err := CreateUser(&User{
Username: "testuser",
Password: "12345",
Email: "user1@example.com",
})
assert.Error(t, err)
assert.True(t, IsErrUserEmailExists(err))
})
t.Run("no username", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
_, err := CreateUser(&User{
Username: "",
Password: "12345",
Email: "user1@example.com",
})
assert.Error(t, err)
assert.True(t, IsErrNoUsernamePassword(err))
})
t.Run("no password", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
_, err := CreateUser(&User{
Username: "testuser",
Password: "",
Email: "user1@example.com",
})
assert.Error(t, err)
assert.True(t, IsErrNoUsernamePassword(err))
})
t.Run("no email", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
db.LoadAndAssertFixtures(t)
_, err := CreateUser(&User{
Username: "testuser",
Password: "12345",
Email: "",
})
assert.Error(t, err)
assert.True(t, IsErrNoUsernamePassword(err))
})
}
func TestGetUser(t *testing.T) {
// Check if he exists
theuser, err := GetUser(createdUser)
assert.NoError(t, err)
@ -75,6 +105,9 @@ func TestCreateUser(t *testing.T) {
assert.Error(t, err)
assert.True(t, IsErrUserDoesNotExist(err))
}
func TestCheckUserCredentials(t *testing.T) {
// Check the user credentials with an unverified email
_, err = CheckUserCredentials(&Login{"user5", "1234"})
assert.Error(t, err)
@ -96,7 +129,9 @@ func TestCreateUser(t *testing.T) {
_, err = CheckUserCredentials(&Login{"dfstestuu", "1234"})
assert.Error(t, err)
assert.True(t, IsErrWrongUsernameOrPassword(err))
}
func TestUpdateUser(t *testing.T) {
// Update the user
uuser, err := UpdateUser(&User{ID: theuser.ID, Password: "444444"})
assert.NoError(t, err)
@ -117,6 +152,13 @@ func TestCreateUser(t *testing.T) {
_, err = CheckUserCredentials(&Login{theuser.Username, newpassword})
assert.NoError(t, err)
// Try updating the password of a nonexistent user (should fail)
err = UpdateUserPassword(&User{ID: 9999}, newpassword)
assert.Error(t, err)
assert.True(t, IsErrUserDoesNotExist(err))
}
func TestListUsers(t *testing.T) {
// Check if the searchterm works
all, err := ListUsers("test")
assert.NoError(t, err)
@ -125,11 +167,6 @@ func TestCreateUser(t *testing.T) {
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(&User{ID: 9999}, newpassword)
assert.Error(t, err)
assert.True(t, IsErrUserDoesNotExist(err))
}
func TestUserPasswordReset(t *testing.T) {