avoid panic when subresource is a list

Kubernetes-commit: 2e3b937dcdb02cab74213a5608cc4dac39c6423e
This commit is contained in:
Ryan McKinley
2024-09-09 09:40:38 +03:00
committed by Kubernetes Publisher
parent 51f5488cb9
commit fae3dcdbf6
2 changed files with 18 additions and 2 deletions

View File

@@ -64,6 +64,12 @@ func getObject(version, kind, name string) *unstructured.Unstructured {
}
}
func getObjectFromJSON(b []byte) *unstructured.Unstructured {
obj := &unstructured.Unstructured{}
_ = obj.UnmarshalJSON(b) // can ignore parse error because the comparison will fail
return obj
}
func getClientServer(h func(http.ResponseWriter, *http.Request)) (Interface, *httptest.Server, error) {
srv := httptest.NewServer(http.HandlerFunc(h))
cl, err := NewForConfig(&restclient.Config{
@@ -359,6 +365,15 @@ func TestGet(t *testing.T) {
resp: getJSON("vTest", "srTest", "namespaced_subresource_get"),
want: getObject("vTest", "srTest", "namespaced_subresource_get"),
},
{
resource: "rtest",
subresource: []string{"srtest"},
namespace: "nstest",
name: "namespaced_subresource_get_list",
path: "/apis/gtest/vtest/namespaces/nstest/rtest/namespaced_subresource_get_list/srtest",
resp: getListJSON("vTest", "srTest", getJSON("vTest", "srTest", "a1")),
want: getObjectFromJSON(getListJSON("vTest", "srTest", getJSON("vTest", "srTest", "a1"))),
},
}
for _, tc := range tcs {
resource := schema.GroupVersionResource{Group: "gtest", Version: "vtest", Resource: tc.resource}