Skip to content

Commit fae4c9f

Browse files
author
Mengqi Yu
committed
✨ use more reasonable status code for ValidationResponse
1 parent 4276f38 commit fae4c9f

File tree

3 files changed

+33
-6
lines changed

3 files changed

+33
-6
lines changed

pkg/builder/build_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ var _ = Describe("application", func() {
271271
Expect(w.Code).To(Equal(http.StatusOK))
272272
By("sanity checking the response contains reasonable field")
273273
Expect(w.Body).To(ContainSubstring(`"allowed":false`))
274-
Expect(w.Body).To(ContainSubstring(`"code":200`))
274+
Expect(w.Body).To(ContainSubstring(`"code":403`))
275275
})
276276

277277
It("should scaffold defaulting and validating webhooks if the type implements both Defaulter and Validator interfaces", func() {

pkg/webhook/admission/response.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,22 @@ func Errored(code int32, err error) Response {
6262

6363
// ValidationResponse returns a response for admitting a request.
6464
func ValidationResponse(allowed bool, reason string) Response {
65+
var code int32
66+
if allowed {
67+
code = http.StatusOK
68+
} else {
69+
code = http.StatusForbidden
70+
}
6571
resp := Response{
6672
AdmissionResponse: admissionv1beta1.AdmissionResponse{
6773
Allowed: allowed,
74+
Result: &metav1.Status{
75+
Code: code,
76+
},
6877
},
6978
}
7079
if len(reason) > 0 {
71-
resp.Result = &metav1.Status{
72-
Reason: metav1.StatusReason(reason),
73-
}
80+
resp.Result.Reason = metav1.StatusReason(reason)
7481
}
7582
return resp
7683
}

pkg/webhook/admission/response_test.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
3535
Response{
3636
AdmissionResponse: admissionv1beta1.AdmissionResponse{
3737
Allowed: true,
38+
Result: &metav1.Status{
39+
Code: http.StatusOK,
40+
},
3841
},
3942
},
4043
))
@@ -46,6 +49,7 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
4649
AdmissionResponse: admissionv1beta1.AdmissionResponse{
4750
Allowed: true,
4851
Result: &metav1.Status{
52+
Code: http.StatusOK,
4953
Reason: "acceptable",
5054
},
5155
},
@@ -60,6 +64,9 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
6064
Response{
6165
AdmissionResponse: admissionv1beta1.AdmissionResponse{
6266
Allowed: false,
67+
Result: &metav1.Status{
68+
Code: http.StatusForbidden,
69+
},
6370
},
6471
},
6572
))
@@ -71,6 +78,7 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
7178
AdmissionResponse: admissionv1beta1.AdmissionResponse{
7279
Allowed: false,
7380
Result: &metav1.Status{
81+
Code: http.StatusForbidden,
7482
Reason: "UNACCEPTABLE!",
7583
},
7684
},
@@ -96,6 +104,9 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
96104
Response{
97105
AdmissionResponse: admissionv1beta1.AdmissionResponse{
98106
Allowed: true,
107+
Result: &metav1.Status{
108+
Code: http.StatusOK,
109+
},
99110
},
100111
Patches: ops,
101112
},
@@ -107,6 +118,7 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
107118
AdmissionResponse: admissionv1beta1.AdmissionResponse{
108119
Allowed: true,
109120
Result: &metav1.Status{
121+
Code: http.StatusOK,
110122
Reason: "some changes",
111123
},
112124
},
@@ -141,6 +153,7 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
141153
AdmissionResponse: admissionv1beta1.AdmissionResponse{
142154
Allowed: true,
143155
Result: &metav1.Status{
156+
Code: http.StatusOK,
144157
Reason: "acceptable",
145158
},
146159
},
@@ -153,6 +166,7 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
153166
AdmissionResponse: admissionv1beta1.AdmissionResponse{
154167
Allowed: false,
155168
Result: &metav1.Status{
169+
Code: http.StatusForbidden,
156170
Reason: "UNACCEPTABLE!",
157171
},
158172
},
@@ -161,20 +175,26 @@ var _ = Describe("Admission Webhook Response Helpers", func() {
161175
})
162176

163177
It("should return an admission decision", func() {
164-
By("checking that it returns a 'denied' response when allowed is false")
178+
By("checking that it returns an 'allowed' response when allowed is true")
165179
Expect(ValidationResponse(true, "")).To(Equal(
166180
Response{
167181
AdmissionResponse: admissionv1beta1.AdmissionResponse{
168182
Allowed: true,
183+
Result: &metav1.Status{
184+
Code: http.StatusOK,
185+
},
169186
},
170187
},
171188
))
172189

173-
By("checking that it returns an 'allowed' response when allowed is true")
190+
By("checking that it returns an 'denied' response when allowed is false")
174191
Expect(ValidationResponse(false, "")).To(Equal(
175192
Response{
176193
AdmissionResponse: admissionv1beta1.AdmissionResponse{
177194
Allowed: false,
195+
Result: &metav1.Status{
196+
Code: http.StatusForbidden,
197+
},
178198
},
179199
},
180200
))

0 commit comments

Comments
 (0)