Fix resource store errors on empty db
This commit is contained in:
@@ -132,9 +132,14 @@ func (rs *ResourceStore) delete(typename, rkey string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getAll finds all entries under key. If none or found or key
|
||||||
|
// doesn't exist, returns an empty slice.
|
||||||
func (rs *ResourceStore) getAll(key string) ([]string, error) {
|
func (rs *ResourceStore) getAll(key string) ([]string, error) {
|
||||||
resp, err := rs.KeysAPI.Get(context.Background(), key, &client.GetOptions{Recursive: true})
|
resp, err := rs.KeysAPI.Get(context.Background(), key, &client.GetOptions{Recursive: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if client.IsKeyNotFound(err) {
|
||||||
|
return []string{}, nil
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,9 +69,17 @@ func TestResourceStore(t *testing.T) {
|
|||||||
|
|
||||||
// Delete the key first, in case of a panic'd previous test run; ignore errors
|
// Delete the key first, in case of a panic'd previous test run; ignore errors
|
||||||
_ = rs.delete("TestResource", tr.Key())
|
_ = rs.delete("TestResource", tr.Key())
|
||||||
|
ks.Delete(context.Background(), "/TestResource", &client.DeleteOptions{Dir: true})
|
||||||
|
|
||||||
|
// Verify getAll for empty db
|
||||||
|
trs, err := rs.getAll("TestResource")
|
||||||
|
panicIf(err)
|
||||||
|
if len(trs) != 0 {
|
||||||
|
log.Fatalf("Expected zero length slice, got %v", trs)
|
||||||
|
}
|
||||||
|
|
||||||
// Create
|
// Create
|
||||||
err := rs.create(tr)
|
err = rs.create(tr)
|
||||||
panicIf(err)
|
panicIf(err)
|
||||||
defer ks.Delete(context.Background(), "/TestResource", &client.DeleteOptions{Dir: true})
|
defer ks.Delete(context.Background(), "/TestResource", &client.DeleteOptions{Dir: true})
|
||||||
defer rs.delete("TestResource", tr.Key())
|
defer rs.delete("TestResource", tr.Key())
|
||||||
|
|||||||
Reference in New Issue
Block a user