Creating function for preflight check.

Migrated code that checks for common programmer errors to a separated
function and added test coverage for it. Wrong comment stating that a
typed error is returned was also removed.

Kubernetes-commit: ad5fafd6ade2838098890a4e7727c8e347686867
This commit is contained in:
Ricardo Maraschini
2019-09-12 19:22:46 +02:00
committed by Kubernetes Publisher
parent e318746e79
commit e6a1dc4b13
2 changed files with 92 additions and 8 deletions

View File

@@ -1994,3 +1994,66 @@ func defaultResourcePathWithPrefix(prefix, resource, namespace, name string) str
}
return path
}
func TestRequestPreflightCheck(t *testing.T) {
for _, tt := range []struct {
name string
verbs []string
namespace string
resourceName string
namespaceSet bool
expectsErr bool
}{
{
name: "no namespace set",
verbs: []string{"GET", "PUT", "DELETE", "POST"},
namespaceSet: false,
expectsErr: false,
},
{
name: "empty resource name and namespace",
verbs: []string{"GET", "PUT", "DELETE"},
namespaceSet: true,
expectsErr: false,
},
{
name: "resource name with empty namespace",
verbs: []string{"GET", "PUT", "DELETE"},
namespaceSet: true,
resourceName: "ResourceName",
expectsErr: true,
},
{
name: "post empty resource name and namespace",
verbs: []string{"POST"},
namespaceSet: true,
expectsErr: true,
},
{
name: "working requests",
verbs: []string{"GET", "PUT", "DELETE", "POST"},
namespaceSet: true,
resourceName: "ResourceName",
namespace: "Namespace",
expectsErr: false,
},
} {
t.Run(tt.name, func(t *testing.T) {
for _, verb := range tt.verbs {
r := &Request{
verb: verb,
namespace: tt.namespace,
resourceName: tt.resourceName,
namespaceSet: tt.namespaceSet,
}
err := r.requestPreflightCheck()
hasErr := err != nil
if hasErr == tt.expectsErr {
return
}
t.Errorf("%s: expects error: %v, has error: %v", verb, tt.expectsErr, hasErr)
}
})
}
}