This is an automated email from the ASF dual-hosted git repository. zhangjintao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git
The following commit(s) were added to refs/heads/master by this push: new cc9b6be fix json unmarshal error when list plguins (#888) cc9b6be is described below commit cc9b6be606b4d41267064c45e7ef1e9f5a6d8e47 Author: cmssczy <caozhiyuan_y...@cmss.chinamobile.com> AuthorDate: Wed Mar 2 09:01:39 2022 +0800 fix json unmarshal error when list plguins (#888) --- pkg/apisix/cluster.go | 9 +++++++-- pkg/apisix/plugin_test.go | 10 +++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pkg/apisix/cluster.go b/pkg/apisix/cluster.go index 4a5dbd7..8b7a938 100644 --- a/pkg/apisix/cluster.go +++ b/pkg/apisix/cluster.go @@ -750,10 +750,15 @@ func (c *cluster) getList(ctx context.Context, url, resource string) ([]string, return nil, err } - var listResponse []string + var listResponse map[string]interface{} dec := json.NewDecoder(resp.Body) if err := dec.Decode(&listResponse); err != nil { return nil, err } - return listResponse, nil + res := make([]string, 0, len(listResponse)) + + for name := range listResponse { + res = append(res, name) + } + return res, nil } diff --git a/pkg/apisix/plugin_test.go b/pkg/apisix/plugin_test.go index dd64201..2d5c15a 100644 --- a/pkg/apisix/plugin_test.go +++ b/pkg/apisix/plugin_test.go @@ -19,6 +19,7 @@ import ( "encoding/json" "net/http" "net/url" + "sort" "strings" "testing" @@ -46,8 +47,13 @@ func (srv *fakeAPISIXPluginSrv) ServeHTTP(w http.ResponseWriter, r *http.Request return } + fakePluginsResp := make(map[string]interface{}, len(srv.plugins)) + for _, fp := range srv.plugins { + fakePluginsResp[fp] = struct{}{} + } + if r.Method == http.MethodGet { - data, _ := json.Marshal(srv.plugins) + data, _ := json.Marshal(fakePluginsResp) _, _ = w.Write(data) w.WriteHeader(http.StatusOK) return @@ -101,6 +107,8 @@ func TestPluginClient(t *testing.T) { objs, err := cli.List(context.Background()) assert.Nil(t, err) assert.Len(t, objs, len(fakePluginNames)) + sort.Strings(fakePluginNames) + sort.Strings(objs) for i := range fakePluginNames { assert.Equal(t, fakePluginNames[i], objs[i]) }