Fixes bug with Root not handling Group without Version

Kubernetes-commit: 17cd59ec1cf5c0a83d52bc94995025e802f1a123
This commit is contained in:
Sean Sullivan 2023-03-01 21:24:02 +00:00 committed by Kubernetes Publisher
parent 91199a69ee
commit 6ddf61b8c1
2 changed files with 22 additions and 7 deletions

View File

@ -157,6 +157,10 @@ func pathToGroupVersion(path string) (schema.GroupVersion, error) {
}
apiPrefix := parts[0]
if apiPrefix == "apis" {
// Example: apis/apps (without version)
if len(parts) < 3 {
return gv, fmt.Errorf("Group without Version not allowed")
}
gv.Group = parts[1]
gv.Version = parts[2]
} else if apiPrefix == "api" {

View File

@ -70,6 +70,7 @@ func TestOpenAPIV3Root_GroupVersions(t *testing.T) {
"foo/apps/v1": nil, // bad prefix
"apis/networking.k8s.io/v1alpha1": nil,
"api": nil, // No version
"apis/apps": nil, // Missing Version
"apis/apps/v1": nil,
},
// Alphabetical ordering, since GV's are returned sorted.
@ -271,15 +272,21 @@ func TestOpenAPIV3Root_PathToGroupVersion(t *testing.T) {
name string
path string
expectedGV schema.GroupVersion
expectedErr bool
}{
{
name: "OpenAPI V3 Root: Path to GroupVersion apps group",
name: "OpenAPI V3 Root: Path to GroupVersion apps/v1 group",
path: "apis/apps/v1",
expectedGV: schema.GroupVersion{
Group: "apps",
Version: "v1",
},
},
{
name: "Group without Version throws error",
path: "apis/apps",
expectedErr: true,
},
{
name: "OpenAPI V3 Root: Path to GroupVersion batch group",
path: "apis/batch/v1beta1",
@ -300,9 +307,13 @@ func TestOpenAPIV3Root_PathToGroupVersion(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
actualGV, err := pathToGroupVersion(test.path)
require.NoError(t, err)
if test.expectedErr {
require.Error(t, err, "should have received error for path: %s", test.path)
} else {
require.NoError(t, err, "expected no error, got (%v)", err)
assert.Equal(t, test.expectedGV, actualGV, "expected GroupVersion (%s), got (%s)",
test.expectedGV, actualGV)
}
})
}
}