mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 18:24:07 +00:00
Merge pull request #117611 from ii/create-apiresources-test
Write e2e test for APIResources endpoints + 12 Endpoints
This commit is contained in:
commit
e114fc0cdc
@ -18,6 +18,8 @@ package apimachinery
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
@ -31,6 +33,7 @@ import (
|
|||||||
admissionapi "k8s.io/pod-security-admission/api"
|
admissionapi "k8s.io/pod-security-admission/api"
|
||||||
|
|
||||||
"github.com/onsi/ginkgo/v2"
|
"github.com/onsi/ginkgo/v2"
|
||||||
|
"github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
var storageVersionServerVersion = utilversion.MustParseSemantic("v1.13.99")
|
var storageVersionServerVersion = utilversion.MustParseSemantic("v1.13.99")
|
||||||
@ -155,4 +158,147 @@ var _ = SIGDescribe("Discovery", func() {
|
|||||||
framework.ExpectEqual(true, match, "failed to find a valid version for PreferredVersion")
|
framework.ExpectEqual(true, match, "failed to find a valid version for PreferredVersion")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ginkgo.It("should locate the groupVersion and a resource within each APIGroup", func(ctx context.Context) {
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
apiBasePath string
|
||||||
|
apiGroup string
|
||||||
|
apiVersion string
|
||||||
|
validResource string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
apiBasePath: "/api",
|
||||||
|
apiGroup: "",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "namespaces",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "admissionregistration.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "validatingwebhookconfigurations",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "apiextensions.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "customresourcedefinitions",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "apiregistration.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "apiservices",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "apps",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "deployments",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "authentication.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "tokenreviews",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "authorization.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "selfsubjectaccessreviews",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "autoscaling",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "horizontalpodautoscalers",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "autoscaling",
|
||||||
|
apiVersion: "v2",
|
||||||
|
validResource: "horizontalpodautoscalers",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "batch",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "jobs",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "certificates.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "certificatesigningrequests",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "coordination.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "leases",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "discovery.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "endpointslices",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "events.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "events",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "networking.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "ingresses",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "node.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "runtimeclasses",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "policy",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "poddisruptionbudgets",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "scheduling.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "priorityclasses",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiBasePath: "/apis",
|
||||||
|
apiGroup: "storage.k8s.io",
|
||||||
|
apiVersion: "v1",
|
||||||
|
validResource: "csinodes",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, t := range tests {
|
||||||
|
resourceList := &metav1.APIResourceList{}
|
||||||
|
apiPath := path.Join(t.apiBasePath, t.apiGroup, t.apiVersion)
|
||||||
|
ginkgo.By(fmt.Sprintf("Requesting APIResourceList from %q", apiPath))
|
||||||
|
err := f.ClientSet.Discovery().RESTClient().Get().AbsPath(apiPath).Do(ctx).Into(resourceList)
|
||||||
|
framework.ExpectNoError(err, "Fail to access: %s", apiPath)
|
||||||
|
gomega.Expect(resourceList.GroupVersion).To(gomega.Equal((schema.GroupVersion{Group: t.apiGroup, Version: t.apiVersion}).String()))
|
||||||
|
|
||||||
|
foundResource := false
|
||||||
|
for _, r := range resourceList.APIResources {
|
||||||
|
if t.validResource == r.Name {
|
||||||
|
foundResource = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gomega.Expect(foundResource).To(gomega.BeTrue(), "Resource %q was not found inside of resourceList\n%#v", t.validResource, resourceList.APIResources)
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user