forked from mystiq/dex
repo: functional repo tests
includes changes to ensure uniform errors for DB and in-memory repos
This commit is contained in:
parent
e5db302312
commit
2ed2859896
3 changed files with 65 additions and 2 deletions
|
@ -112,8 +112,12 @@ func (r *userRepo) Disable(tx repo.Transaction, userID string, disable bool) err
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if ct, err := result.RowsAffected(); err == nil && ct == 0 {
|
ct, err := result.RowsAffected()
|
||||||
return user.ErrorInvalidID
|
switch {
|
||||||
|
case err != nil:
|
||||||
|
return err
|
||||||
|
case ct == 0:
|
||||||
|
return user.ErrorNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -35,6 +35,7 @@ var (
|
||||||
ID: "ID-2",
|
ID: "ID-2",
|
||||||
Email: "Email-2@example.com",
|
Email: "Email-2@example.com",
|
||||||
CreatedAt: time.Now(),
|
CreatedAt: time.Now(),
|
||||||
|
Disabled: true,
|
||||||
},
|
},
|
||||||
RemoteIdentities: []user.RemoteIdentity{
|
RemoteIdentities: []user.RemoteIdentity{
|
||||||
{
|
{
|
||||||
|
@ -232,6 +233,61 @@ func TestUpdateUser(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDisableUser(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
id string
|
||||||
|
disable bool
|
||||||
|
err error
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
id: "ID-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "ID-1",
|
||||||
|
disable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "ID-2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "ID-2",
|
||||||
|
disable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "NO SUCH ID",
|
||||||
|
err: user.ErrorNotFound,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "NO SUCH ID",
|
||||||
|
err: user.ErrorNotFound,
|
||||||
|
disable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "",
|
||||||
|
err: user.ErrorInvalidID,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, tt := range tests {
|
||||||
|
repo := makeTestUserRepo()
|
||||||
|
err := repo.Disable(nil, tt.id, tt.disable)
|
||||||
|
switch {
|
||||||
|
case err != tt.err:
|
||||||
|
t.Errorf("case %d: want=%q, got=%q", i, tt.err, err)
|
||||||
|
case tt.err == nil:
|
||||||
|
gotUser, err := repo.Get(nil, tt.id)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("case %d: want nil err, got %q", i, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if gotUser.Disabled != tt.disable {
|
||||||
|
t.Errorf("case %d: disabled status want=%v got=%v",
|
||||||
|
i, tt.disable, gotUser.Disabled)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestAttachRemoteIdentity(t *testing.T) {
|
func TestAttachRemoteIdentity(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
id string
|
id string
|
||||||
|
|
|
@ -257,6 +257,9 @@ func (r *memUserRepo) Update(_ repo.Transaction, user User) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *memUserRepo) Disable(_ repo.Transaction, id string, disable bool) error {
|
func (r *memUserRepo) Disable(_ repo.Transaction, id string, disable bool) error {
|
||||||
|
if id == "" {
|
||||||
|
return ErrorInvalidID
|
||||||
|
}
|
||||||
user, ok := r.usersByID[id]
|
user, ok := r.usersByID[id]
|
||||||
if !ok {
|
if !ok {
|
||||||
return ErrorNotFound
|
return ErrorNotFound
|
||||||
|
|
Loading…
Reference in a new issue