Unverified Commit d82cf373 authored by Kubernetes Prow Robot's avatar Kubernetes Prow Robot Committed by GitHub

Merge pull request #72577 from dims/strengthen-error-to-api-status-against-bad-input

Strengthen ErrorToAPIStatus against bad input
parents 8dbda225 6858a248
......@@ -38,11 +38,18 @@ func ErrorToAPIStatus(err error) *metav1.Status {
if len(status.Status) == 0 {
status.Status = metav1.StatusFailure
}
if status.Code == 0 {
switch status.Status {
case metav1.StatusSuccess:
switch status.Status {
case metav1.StatusSuccess:
if status.Code == 0 {
status.Code = http.StatusOK
case metav1.StatusFailure:
}
case metav1.StatusFailure:
if status.Code == 0 {
status.Code = http.StatusInternalServerError
}
default:
runtime.HandleError(fmt.Errorf("apiserver received an error with wrong status field : %#+v", err))
if status.Code == 0 {
status.Code = http.StatusInternalServerError
}
}
......
......@@ -27,6 +27,19 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
)
func TestBadStatusErrorToAPIStatus(t *testing.T) {
err := errors.StatusError{}
actual := ErrorToAPIStatus(&err)
expected := &metav1.Status{
TypeMeta: metav1.TypeMeta{Kind: "Status", APIVersion: "v1"},
Status: metav1.StatusFailure,
Code: 500,
}
if !reflect.DeepEqual(actual, expected) {
t.Errorf("%s: Expected %#v, Got %#v", actual, expected, actual)
}
}
func TestAPIStatus(t *testing.T) {
cases := map[error]metav1.Status{
errors.NewNotFound(schema.GroupResource{Group: "legacy.kubernetes.io", Resource: "foos"}, "bar"): {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment