78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
package user
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/traggo/server/generated/gqlmodel"
|
|
"github.com/traggo/server/model"
|
|
"github.com/traggo/server/test"
|
|
)
|
|
|
|
func TestGQL_UpdateUser_succeeds_updatesUser(t *testing.T) {
|
|
createPassword = fakePassword
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
db.NewUserPass(1, "jmattheis", unicornPW, true)
|
|
|
|
resolver := ResolverForUser{DB: db.DB, PassStrength: 4}
|
|
user, err := resolver.UpdateUser(context.Background(), 1, "broder", pointer("pony"), false)
|
|
require.Nil(t, err)
|
|
|
|
expected := &gqlmodel.User{
|
|
Name: "broder",
|
|
ID: 1,
|
|
Admin: false,
|
|
}
|
|
require.Equal(t, expected, user)
|
|
assertUserCount(t, db, 1)
|
|
assertUserExist(t, db, model.User{
|
|
Name: "broder",
|
|
ID: 1,
|
|
Admin: false,
|
|
Pass: ponyPW,
|
|
})
|
|
}
|
|
|
|
func TestGQL_UpdateUser_succeeds_preservesPassword(t *testing.T) {
|
|
createPassword = fakePassword
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
db.NewUserPass(1, "jmattheis", unicornPW, true)
|
|
|
|
resolver := ResolverForUser{DB: db.DB, PassStrength: 4}
|
|
user, err := resolver.UpdateUser(context.Background(), 1, "broder", nil, false)
|
|
require.Nil(t, err)
|
|
|
|
expected := &gqlmodel.User{
|
|
Name: "broder",
|
|
ID: 1,
|
|
Admin: false,
|
|
}
|
|
require.Equal(t, expected, user)
|
|
assertUserCount(t, db, 1)
|
|
assertUserExist(t, db, model.User{
|
|
Name: "broder",
|
|
ID: 1,
|
|
Admin: false,
|
|
Pass: unicornPW,
|
|
})
|
|
}
|
|
|
|
func TestGQL_UpdateUser_fails_notExistingUser(t *testing.T) {
|
|
createPassword = fakePassword
|
|
db := test.InMemoryDB(t)
|
|
defer db.Close()
|
|
|
|
resolver := ResolverForUser{DB: db.DB, PassStrength: 4}
|
|
_, err := resolver.UpdateUser(context.Background(), 1, "broder", nil, false)
|
|
require.EqualError(t, err, "user with id 1 does not exist")
|
|
|
|
assertUserCount(t, db, 0)
|
|
}
|
|
|
|
func pointer(s string) *string {
|
|
return &s
|
|
}
|