...
1
16
17 package webhook
18
19 import (
20 "fmt"
21 "math/rand"
22 "reflect"
23 "testing"
24
25 "github.com/google/go-cmp/cmp"
26 fuzz "github.com/google/gofuzz"
27
28 v1 "k8s.io/api/admission/v1"
29 "k8s.io/api/admission/v1beta1"
30 "k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
31 "k8s.io/apimachinery/pkg/runtime"
32 "k8s.io/apimachinery/pkg/runtime/serializer"
33 admissionfuzzer "k8s.io/kubernetes/pkg/apis/admission/fuzzer"
34 )
35
36 func TestConvertAdmissionRequestToV1(t *testing.T) {
37 f := fuzzer.FuzzerFor(admissionfuzzer.Funcs, rand.NewSource(rand.Int63()), serializer.NewCodecFactory(runtime.NewScheme()))
38 for i := 0; i < 100; i++ {
39 t.Run(fmt.Sprintf("Run %d/100", i), func(t *testing.T) {
40 orig := &v1beta1.AdmissionRequest{}
41 f.Fuzz(orig)
42 converted := convertAdmissionRequestToV1(orig)
43 rt := convertAdmissionRequestToV1beta1(converted)
44 if !reflect.DeepEqual(orig, rt) {
45 t.Errorf("expected all request fields to be in converted object but found unaccounted for differences, diff:\n%s", cmp.Diff(orig, converted))
46 }
47 })
48 }
49 }
50
51 func TestConvertAdmissionResponseToV1beta1(t *testing.T) {
52 f := fuzz.New()
53 for i := 0; i < 100; i++ {
54 t.Run(fmt.Sprintf("Run %d/100", i), func(t *testing.T) {
55 orig := &v1.AdmissionResponse{}
56 f.Fuzz(orig)
57 converted := convertAdmissionResponseToV1beta1(orig)
58 rt := convertAdmissionResponseToV1(converted)
59 if !reflect.DeepEqual(orig, rt) {
60 t.Errorf("expected all fields to be in converted object but found unaccounted for differences, diff:\n%s", cmp.Diff(orig, converted))
61 }
62 })
63 }
64 }
65
View as plain text