Skip to content

Commit 81241dc

Browse files
committed
fix: round 6 — upstream nodes array format, secret_providers path, PUT for plugin-metadata, credential name, skip unsupported resources
- upstream nodes: map format → array format in all test fixtures (API7 EE only accepts arrays) - secret paths: /apisix/admin/secrets → /apisix/admin/secret_providers (matches API7 EE SDK) - skip consumer_group and plugin_config e2e tests (no REST API endpoint in API7 EE) - plugin-metadata create: POST → PUT (API7 EE uses PUT for create) - credential type: add Name field required by API7 EE - gateway group CRUD: use timestamp-based unique name to avoid conflicts
1 parent e4fdff5 commit 81241dc

27 files changed

Lines changed: 90 additions & 177 deletions

pkg/api/types_credential.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package api
44
// Credentials are scoped to a consumer (path: /consumers/{username}/credentials).
55
type Credential struct {
66
ID string `json:"id,omitempty" yaml:"id,omitempty"`
7+
Name string `json:"name,omitempty" yaml:"name,omitempty"`
78
Desc string `json:"desc,omitempty" yaml:"desc,omitempty"`
89
Plugins map[string]interface{} `json:"plugins,omitempty" yaml:"plugins,omitempty"`
910
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`

pkg/cmd/config/configutil/configutil.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func FetchRemoteConfig(client *api.Client, gatewayGroup string) (*api.ConfigFile
157157
if err != nil {
158158
return nil, err
159159
}
160-
secrets, err := fetchPaginated[api.Secret](client, "/apisix/admin/secrets", query)
160+
secrets, err := fetchPaginated[api.Secret](client, "/apisix/admin/secret_providers", query)
161161
if err != nil {
162162
return nil, err
163163
}

pkg/cmd/config/diff/diff_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func registerEmptyResources(reg *httpmock.Registry, skip map[string]bool) {
4646
"/apisix/admin/consumer_groups",
4747
"/apisix/admin/stream_routes",
4848
"/apisix/admin/protos",
49-
"/apisix/admin/secrets",
49+
"/apisix/admin/secret_providers",
5050
}
5151
for _, path := range resources {
5252
if skip != nil && skip[path] {

pkg/cmd/config/dump/dump_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func registerEmptyResources(reg *httpmock.Registry, skip map[string]bool) {
4747
"/apisix/admin/consumer_groups",
4848
"/apisix/admin/stream_routes",
4949
"/apisix/admin/protos",
50-
"/apisix/admin/secrets",
50+
"/apisix/admin/secret_providers",
5151
}
5252
for _, path := range resources {
5353
if skip != nil && skip[path] {
@@ -107,10 +107,10 @@ func TestConfigDump_RoutesOnly(t *testing.T) {
107107
func TestConfigDump_MultipleResources(t *testing.T) {
108108
reg := &httpmock.Registry{}
109109
registerEmptyResources(reg, map[string]bool{
110-
"/apisix/admin/routes": true,
111-
"/apisix/admin/services": true,
112-
"/apisix/admin/secrets": true,
113-
"/apisix/admin/plugins/list": true,
110+
"/apisix/admin/routes": true,
111+
"/apisix/admin/services": true,
112+
"/apisix/admin/secret_providers": true,
113+
"/apisix/admin/plugins/list": true,
114114
})
115115

116116
reg.Register(http.MethodGet, "/apisix/admin/routes", httpmock.JSONResponse(`{
@@ -121,7 +121,7 @@ func TestConfigDump_MultipleResources(t *testing.T) {
121121
"total": 1,
122122
"list": [{"id":"1","name":"svc-1","upstream_id":"1"}]
123123
}`))
124-
reg.Register(http.MethodGet, "/apisix/admin/secrets", httpmock.JSONResponse(`{
124+
reg.Register(http.MethodGet, "/apisix/admin/secret_providers", httpmock.JSONResponse(`{
125125
"total": 1,
126126
"list": [{"id":"vault/my-vault","uri":"https://vault.example.com"}]
127127
}`))

pkg/cmd/config/sync/sync.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ func putPathAndBody(resourceType, key string, payload map[string]interface{}) (s
223223
case "protos":
224224
return fmt.Sprintf("/apisix/admin/protos/%s", key), payload, nil
225225
case "secrets":
226-
return fmt.Sprintf("/apisix/admin/secrets/%s", key), payload, nil
226+
return fmt.Sprintf("/apisix/admin/secret_providers/%s", key), payload, nil
227227
case "plugin_metadata":
228228
delete(payload, "plugin_name")
229229
return fmt.Sprintf("/apisix/admin/plugin_metadata/%s", key), payload, nil
@@ -255,7 +255,7 @@ func deletePath(resourceType, key string) (string, error) {
255255
case "protos":
256256
return fmt.Sprintf("/apisix/admin/protos/%s", key), nil
257257
case "secrets":
258-
return fmt.Sprintf("/apisix/admin/secrets/%s", key), nil
258+
return fmt.Sprintf("/apisix/admin/secret_providers/%s", key), nil
259259
case "plugin_metadata":
260260
return fmt.Sprintf("/apisix/admin/plugin_metadata/%s", key), nil
261261
default:

pkg/cmd/config/sync/sync_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func registerEmptyResources(reg *httpmock.Registry, skip map[string]bool) {
4545
"/apisix/admin/consumer_groups",
4646
"/apisix/admin/stream_routes",
4747
"/apisix/admin/protos",
48-
"/apisix/admin/secrets",
48+
"/apisix/admin/secret_providers",
4949
}
5050
for _, path := range resources {
5151
if skip != nil && skip[path] {

pkg/cmd/plugin-metadata/create/create.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func actionRun(opts *Options) error {
8383
}
8484

8585
client := api.NewClient(httpClient, cfg.BaseURL())
86-
body, err := client.Post("/apisix/admin/plugin_metadata/"+pluginName+"?gateway_group_id="+ggID, payload)
86+
body, err := client.Put("/apisix/admin/plugin_metadata/"+pluginName+"?gateway_group_id="+ggID, payload)
8787
if err != nil {
8888
return fmt.Errorf("%s", cmdutil.FormatAPIError(err))
8989
}
@@ -113,7 +113,7 @@ func actionRun(opts *Options) error {
113113
bodyReq := api.PluginMetadata{Metadata: metadata}
114114

115115
client := api.NewClient(httpClient, cfg.BaseURL())
116-
body, err := client.Post("/apisix/admin/plugin_metadata/"+opts.PluginName+"?gateway_group_id="+ggID, bodyReq)
116+
body, err := client.Put("/apisix/admin/plugin_metadata/"+opts.PluginName+"?gateway_group_id="+ggID, bodyReq)
117117
if err != nil {
118118
return fmt.Errorf("%s", cmdutil.FormatAPIError(err))
119119
}

pkg/cmd/plugin-metadata/create/create_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (m *mockConfig) Save() error { return n
3333
func TestCreatePluginMetadata_JSON(t *testing.T) {
3434
ios, _, out, _ := iostreams.Test()
3535
registry := &httpmock.Registry{}
36-
registry.Register(http.MethodPost, "/apisix/admin/plugin_metadata/key-auth", httpmock.JSONResponse(`{"id":"key-auth","metadata":{"header":"x-api-key"}}`))
36+
registry.Register(http.MethodPut, "/apisix/admin/plugin_metadata/key-auth", httpmock.JSONResponse(`{"id":"key-auth","metadata":{"header":"x-api-key"}}`))
3737

3838
opts := &Options{
3939
IO: ios,

pkg/cmd/secret/create/create.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ func actionRun(opts *Options) error {
8080
client := api.NewClient(httpClient, cfg.BaseURL())
8181
var body []byte
8282
if id, ok := payload["id"]; ok {
83-
body, err = client.Put(fmt.Sprintf("/apisix/admin/secrets/%v?gateway_group_id=%s", id, ggID), payload)
83+
body, err = client.Put(fmt.Sprintf("/apisix/admin/secret_providers/%v?gateway_group_id=%s", id, ggID), payload)
8484
} else {
85-
body, err = client.Post("/apisix/admin/secrets?gateway_group_id="+ggID, payload)
85+
body, err = client.Post("/apisix/admin/secret_providers?gateway_group_id="+ggID, payload)
8686
}
8787
if err != nil {
8888
return fmt.Errorf("%s", cmdutil.FormatAPIError(err))
@@ -123,7 +123,7 @@ func actionRun(opts *Options) error {
123123
}
124124

125125
client := api.NewClient(httpClient, cfg.BaseURL())
126-
body, err := client.Post("/apisix/admin/secrets?gateway_group_id="+ggID, bodyReq)
126+
body, err := client.Post("/apisix/admin/secret_providers?gateway_group_id="+ggID, bodyReq)
127127
if err != nil {
128128
return fmt.Errorf("%s", cmdutil.FormatAPIError(err))
129129
}

pkg/cmd/secret/create/create_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (m *mockConfig) Save() error { return n
3333
func TestCreateSecret_JSON(t *testing.T) {
3434
ios, _, out, _ := iostreams.Test()
3535
registry := &httpmock.Registry{}
36-
registry.Register(http.MethodPost, "/apisix/admin/secrets", httpmock.JSONResponse(`{"id":"vault/s1","uri":"http://vault","prefix":"kv","token":"tok"}`))
36+
registry.Register(http.MethodPost, "/apisix/admin/secret_providers", httpmock.JSONResponse(`{"id":"vault/s1","uri":"http://vault","prefix":"kv","token":"tok"}`))
3737

3838
opts := &Options{
3939
IO: ios,

0 commit comments

Comments
 (0)