Merge pull request #117611 from ii/create-apiresources-test

Write e2e test for APIResources endpoints + 12 Endpoints
This commit is contained in:
Kubernetes Prow Robot 2023-05-02 08:18:51 -07:00 committed by GitHub
commit e114fc0cdc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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)
}
})
}) })