[fix]after rbac is enabled, filter kvs may return null (#276)
Co-authored-by: SphaIris <aaalixiaopei123>
diff --git a/server/datasource/auth/filter_kvdoc.go b/server/datasource/auth/filter_kvdoc.go
index 87a410c..2a973b0 100644
--- a/server/datasource/auth/filter_kvdoc.go
+++ b/server/datasource/auth/filter_kvdoc.go
@@ -20,7 +20,7 @@
import "github.com/apache/servicecomb-kie/pkg/model"
func FilterKVs(kvs []*model.KVDoc, labelsList []map[string]string) []*model.KVDoc {
- var permKVs []*model.KVDoc
+ var permKVs = make([]*model.KVDoc, 0, len(kvs))
for _, kv := range kvs {
for _, labels := range labelsList {
if !matchOne(kv, labels) {
diff --git a/server/datasource/auth/filter_kvdoc_test.go b/server/datasource/auth/filter_kvdoc_test.go
index 1dcdaf2..4984b7e 100644
--- a/server/datasource/auth/filter_kvdoc_test.go
+++ b/server/datasource/auth/filter_kvdoc_test.go
@@ -53,3 +53,13 @@
r := FilterKVs(kvs, permResourceLabel)
assert.Equal(t, 1, len(r))
}
+
+func TestFilterKVsWithEmptyKvs(t *testing.T) {
+ permResourceLabel := []map[string]string{
+ {"environment": "production", "appId": "default", "service": "s1"},
+ {"environment": "testing"},
+ }
+ var kvs = make([]*model.KVDoc, 0, 3)
+ r := FilterKVs(kvs, permResourceLabel)
+ assert.NotNil(t, r)
+}