Add UT for pkg/discovery

Signed-off-by: Ming <mqiu@vmware.com>
This commit is contained in:
Ming
2023-06-15 02:45:34 +00:00
parent 78025a09b6
commit e2bb5b3fe8
11 changed files with 619 additions and 38 deletions
+37 -2
View File
@@ -19,13 +19,15 @@ package test
import (
"github.com/pkg/errors"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
type FakeMapper struct {
meta.RESTMapper
AutoReturnResource bool
Resources map[schema.GroupVersionResource]schema.GroupVersionResource
AutoReturnResource bool
Resources map[schema.GroupVersionResource]schema.GroupVersionResource
KindToPluralResource map[schema.GroupVersionKind]schema.GroupVersionResource
}
func (m *FakeMapper) ResourceFor(input schema.GroupVersionResource) (schema.GroupVersionResource, error) {
@@ -56,3 +58,36 @@ func (m *FakeMapper) ResourceFor(input schema.GroupVersionResource) (schema.Grou
return schema.GroupVersionResource{}, errors.Errorf("invalid resource %q", input.String())
}
func (m *FakeMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*meta.RESTMapping, error) {
potentialGVK := make([]schema.GroupVersionKind, 0)
// Pick an appropriate version
for _, version := range versions {
if len(version) == 0 || version == runtime.APIVersionInternal {
continue
}
currGVK := gk.WithVersion(version)
if _, ok := m.KindToPluralResource[currGVK]; ok {
potentialGVK = append(potentialGVK, currGVK)
break
}
}
if len(potentialGVK) == 0 {
return nil, &meta.NoKindMatchError{GroupKind: gk, SearchedVersions: versions}
}
for _, gvk := range potentialGVK {
//Ensure we have a REST mapping
res, ok := m.KindToPluralResource[gvk]
if !ok {
continue
}
return &meta.RESTMapping{
Resource: res,
GroupVersionKind: gvk,
Scope: meta.RESTScopeNamespace,
}, nil
}
return nil, &meta.NoResourceMatchError{PartialResource: schema.GroupVersionResource{Group: gk.Group, Resource: gk.Kind}}
}