...
1
16
17 package explain
18
19 import (
20 "bytes"
21 "testing"
22
23 "k8s.io/apimachinery/pkg/runtime/schema"
24 tst "k8s.io/kubectl/pkg/util/openapi/testing"
25 )
26
27 func TestRecursiveFields(t *testing.T) {
28 schema := resources.LookupResource(schema.GroupVersionKind{
29 Group: "",
30 Version: "v1",
31 Kind: "OneKind",
32 })
33 if schema == nil {
34 t.Fatal("Couldn't find schema v1.OneKind")
35 }
36
37 want := `field1 <Object>
38 array <[]integer>
39 int <integer>
40 object <map[string]string>
41 primitive <string>
42 string <string>
43 field2 <[]map[string]string>
44 `
45
46 buf := bytes.Buffer{}
47 f := Formatter{
48 Writer: &buf,
49 Wrap: 80,
50 }
51 s, err := LookupSchemaForField(schema, []string{})
52 if err != nil {
53 t.Fatalf("Invalid path %v: %v", []string{}, err)
54 }
55 if err := (fieldsPrinterBuilder{Recursive: true}).BuildFieldsPrinter(&f).PrintFields(s); err != nil {
56 t.Fatalf("Failed to print fields: %v", err)
57 }
58 got := buf.String()
59 if got != want {
60 t.Errorf("Got:\n%v\nWant:\n%v\n", buf.String(), want)
61 }
62 }
63
64 func TestRecursiveFieldsWithSelfReferenceObjects(t *testing.T) {
65 var resources = tst.NewFakeResources("test-recursive-swagger.json")
66 schema := resources.LookupResource(schema.GroupVersionKind{
67 Group: "",
68 Version: "v2",
69 Kind: "OneKind",
70 })
71 if schema == nil {
72 t.Fatal("Couldn't find schema v2.OneKind")
73 }
74
75 want := `field1 <Object>
76 referencefield <Object>
77 referencesarray <[]Object>
78 field2 <Object>
79 reference <Object>
80 referencefield <Object>
81 referencesarray <[]Object>
82 string <string>
83 `
84
85 buf := bytes.Buffer{}
86 f := Formatter{
87 Writer: &buf,
88 Wrap: 80,
89 }
90 s, err := LookupSchemaForField(schema, []string{})
91 if err != nil {
92 t.Fatalf("Invalid path %v: %v", []string{}, err)
93 }
94 if err := (fieldsPrinterBuilder{Recursive: true}).BuildFieldsPrinter(&f).PrintFields(s); err != nil {
95 t.Fatalf("Failed to print fields: %v", err)
96 }
97 got := buf.String()
98 if got != want {
99 t.Errorf("Got:\n%v\nWant:\n%v\n", buf.String(), want)
100 }
101 }
102
View as plain text