mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.2 KiB
125 lines
2.2 KiB
package db |
|
|
|
import ( |
|
"errors" |
|
"reflect" |
|
"testing" |
|
) |
|
|
|
type staticPurger struct { |
|
err error |
|
} |
|
|
|
func (p staticPurger) purge() error { |
|
return p.err |
|
} |
|
|
|
func TestPurgeAll(t *testing.T) { |
|
tests := []struct { |
|
pm []namedPurger |
|
want []purgeError |
|
}{ |
|
{ |
|
pm: []namedPurger{ |
|
namedPurger{ |
|
name: "foo", |
|
purger: staticPurger{err: nil}, |
|
}, |
|
}, |
|
want: []purgeError{}, |
|
}, |
|
{ |
|
pm: []namedPurger{ |
|
namedPurger{ |
|
name: "foo", |
|
purger: staticPurger{err: errors.New("foo fail")}, |
|
}, |
|
}, |
|
want: []purgeError{ |
|
purgeError{name: "foo", err: errors.New("foo fail")}, |
|
}, |
|
}, |
|
|
|
{ |
|
pm: []namedPurger{ |
|
namedPurger{ |
|
name: "foo", |
|
purger: staticPurger{err: nil}, |
|
}, |
|
namedPurger{ |
|
name: "bar", |
|
purger: staticPurger{err: errors.New("bar fail")}, |
|
}, |
|
namedPurger{ |
|
name: "baz", |
|
purger: staticPurger{err: nil}, |
|
}, |
|
namedPurger{ |
|
name: "fum", |
|
purger: staticPurger{err: errors.New("fum fail")}, |
|
}, |
|
}, |
|
want: []purgeError{ |
|
purgeError{name: "bar", err: errors.New("bar fail")}, |
|
purgeError{name: "fum", err: errors.New("fum fail")}, |
|
}, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
got := make([]purgeError, 0) |
|
for perr := range purgeAll(tt.pm) { |
|
got = append(got, perr) |
|
} |
|
if !reflect.DeepEqual(tt.want, got) { |
|
t.Errorf("case %d: want=%v, got=%v", i, tt.want, got) |
|
} |
|
} |
|
} |
|
|
|
func TestAnyPurgeErrors(t *testing.T) { |
|
tests := []struct { |
|
chanFunc func() chan purgeError |
|
want bool |
|
}{ |
|
{ |
|
chanFunc: func() chan purgeError { |
|
errchan := make(chan purgeError) |
|
close(errchan) |
|
return errchan |
|
}, |
|
want: false, |
|
}, |
|
|
|
{ |
|
chanFunc: func() chan purgeError { |
|
errchan := make(chan purgeError, 1) |
|
errchan <- purgeError{} |
|
close(errchan) |
|
return errchan |
|
}, |
|
want: true, |
|
}, |
|
|
|
{ |
|
chanFunc: func() chan purgeError { |
|
errchan := make(chan purgeError, 4) |
|
errchan <- purgeError{} |
|
errchan <- purgeError{} |
|
errchan <- purgeError{} |
|
errchan <- purgeError{} |
|
close(errchan) |
|
return errchan |
|
}, |
|
want: true, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
errchan := tt.chanFunc() |
|
got := anyPurgeErrors(errchan) |
|
if tt.want != got { |
|
t.Errorf("case %d: want=%t got=%t", i, tt.want, got) |
|
} |
|
} |
|
}
|
|
|