Expand newly created cmd-test

Modify newly created cmd-test to work for both
client-side and server-side validation
This commit is contained in:
Kevin Delgado 2022-03-25 20:58:36 +00:00
parent fe3772890f
commit 0bb1a32411

View File

@ -154,6 +154,27 @@ run_kubectl_create_kustomization_directory_tests() {
set +o errexit
}
has_one_of_error_message() {
local message=$1
local match1=$2
local match2=$3
if (grep -q "${match1}" <<< "${message}") || (grep -q "${match2}" <<< "${message}"); then
echo "Successful"
echo "message:${message}"
echo "has either:${match1}"
echo "or:${match2}"
return 0
else
echo "FAIL!"
echo "message:${message}"
echo "has neither:${match1}"
echo "nor:${match2}"
caller
return 1
fi
}
# Runs tests related to kubectl create --validate
run_kubectl_create_validate_tests() {
set -o nounset
@ -165,7 +186,7 @@ run_kubectl_create_validate_tests() {
kube::log::status "Testing kubectl create --validate=true"
# create and verify
output_message=$(! kubectl create -f hack/testdata/invalid-deployment-unknown-and-duplicate-fields.yaml --validate=true 2>&1)
kube::test::if_has_string "${output_message}" 'error validating data'
has_one_of_error_message "${output_message}" 'strict decoding error' 'error validating data'
## test --validate=false
kube::log::status "Testing kubectl create --validate=false"
@ -179,7 +200,7 @@ run_kubectl_create_validate_tests() {
kube::log::status "Testing kubectl create --validate=strict"
# create and verify
output_message=$(! kubectl create -f hack/testdata/invalid-deployment-unknown-and-duplicate-fields.yaml --validate=strict 2>&1)
kube::test::if_has_string "${output_message}" 'error validating data'
has_one_of_error_message "${output_message}" 'strict decoding error' 'error validating data'
## test --validate=warn
kube::log::status "Testing kubectl create --validate=warn"
@ -201,7 +222,7 @@ run_kubectl_create_validate_tests() {
kube::log::status "Testing kubectl create"
# create and verify
output_message=$(! kubectl create -f hack/testdata/invalid-deployment-unknown-and-duplicate-fields.yaml 2>&1)
kube::test::if_has_string "${output_message}" 'error validating data'
has_one_of_error_message "${output_message}" 'strict decoding error' 'error validating data'
## test invalid validate value
kube::log::status "Testing kubectl create --validate=foo"