1 package cmd
2
3 import (
4 "bufio"
5 "bytes"
6 "fmt"
7 "io"
8 "os"
9 "testing"
10
11 charts "github.com/linkerd/linkerd2/pkg/charts/linkerd2"
12 )
13
14
15
16 func TestUninjectYAML(t *testing.T) {
17
18 testCases := []struct {
19 inputFileName string
20 goldenFileName string
21 reportFileName string
22 }{
23 {
24 inputFileName: "inject_emojivoto_deployment.golden.yml",
25 goldenFileName: "inject_emojivoto_deployment.input.yml",
26 reportFileName: "inject_emojivoto_deployment_uninject.report",
27 },
28 {
29
30 inputFileName: "inject_emojivoto_deployment_overridden_noinject.golden.yml",
31 goldenFileName: "inject_emojivoto_deployment_uninjected.input.yml",
32 reportFileName: "inject_emojivoto_deployment_uninject.report",
33 },
34 {
35 inputFileName: "inject_emojivoto_list.golden.yml",
36 goldenFileName: "inject_emojivoto_list.input.yml",
37 reportFileName: "inject_emojivoto_list_uninject.report",
38 },
39 {
40 inputFileName: "inject_emojivoto_deployment_hostNetwork_true.input.yml",
41 goldenFileName: "inject_emojivoto_deployment_hostNetwork_true.input.yml",
42 reportFileName: "inject_emojivoto_deployment_hostNetwork_true_uninject.report",
43 },
44 {
45 inputFileName: "inject_emojivoto_deployment_injectDisabled.input.yml",
46 goldenFileName: "inject_emojivoto_deployment_injectDisabled.input.yml",
47 reportFileName: "inject_emojivoto_deployment_injectDisabled_uninject.report",
48 },
49 {
50 inputFileName: "inject_emojivoto_deployment_controller_name.golden.yml",
51 goldenFileName: "inject_emojivoto_deployment_controller_name.input.yml",
52 reportFileName: "inject_emojivoto_deployment_controller_name_uninject.report",
53 },
54 {
55 inputFileName: "inject_emojivoto_statefulset.golden.yml",
56 goldenFileName: "inject_emojivoto_statefulset.input.yml",
57 reportFileName: "inject_emojivoto_statefulset_uninject.report",
58 },
59 {
60 inputFileName: "inject_emojivoto_pod.golden.yml",
61 goldenFileName: "inject_emojivoto_pod.input.yml",
62 reportFileName: "inject_emojivoto_pod_uninject.report",
63 },
64 {
65 inputFileName: "inject_emojivoto_pod_nativesidecar.golden.yml",
66 goldenFileName: "inject_emojivoto_pod.input.yml",
67 reportFileName: "inject_emojivoto_pod_uninject.report",
68 },
69 {
70 inputFileName: "inject_emojivoto_deployment_udp.golden.yml",
71 goldenFileName: "inject_emojivoto_deployment_udp.input.yml",
72 reportFileName: "inject_emojivoto_deployment_udp_uninject.report",
73 },
74 {
75 inputFileName: "inject_emojivoto_istio.input.yml",
76 goldenFileName: "inject_emojivoto_istio.input.yml",
77 reportFileName: "inject_emojivoto_istio_uninject.report",
78 },
79 {
80 inputFileName: "inject_contour.golden.yml",
81 goldenFileName: "inject_contour.input.yml",
82 reportFileName: "inject_contour_uninject.report",
83 },
84 {
85 inputFileName: "inject_emojivoto_deployment_config_overrides.golden.yml",
86 goldenFileName: "inject_emojivoto_deployment_config_overrides.input.yml",
87 reportFileName: "inject_emojivoto_deployment_uninject.report",
88 },
89 {
90 inputFileName: "inject_emojivoto_namespace_good.golden.yml",
91 goldenFileName: "inject_emojivoto_namespace_uninjected_good.golden.yml",
92 reportFileName: "inject_emojivoto_namespace_uninjected_good.golden.report",
93 },
94 {
95 inputFileName: "inject_emojivoto_namespace_overidden_good.golden.yml",
96 goldenFileName: "inject_emojivoto_namespace_uninjected_good.golden.yml",
97 reportFileName: "inject_emojivoto_namespace_uninjected_good.golden.report",
98 },
99 }
100
101 values, err := charts.NewValues()
102 if err != nil {
103 t.Fatal(err)
104 }
105
106 for i, tc := range testCases {
107 tc := tc
108 t.Run(fmt.Sprintf("%d: %s", i, tc.inputFileName), func(t *testing.T) {
109 file, err := os.Open("testdata/" + tc.inputFileName)
110 if err != nil {
111 t.Errorf("error opening test input file: %v\n", err)
112 }
113
114 read := []io.Reader{bufio.NewReader(file)}
115
116 output := new(bytes.Buffer)
117 report := new(bytes.Buffer)
118
119 exitCode := runUninjectCmd(read, report, output, values, "yaml")
120 if exitCode != 0 {
121 t.Errorf("Failed to uninject %s", tc.inputFileName)
122 }
123
124 if err := testDataDiffer.DiffTestYAML(tc.goldenFileName, output.String()); err != nil {
125 t.Error(err)
126 }
127 testDataDiffer.DiffTestdata(t, tc.reportFileName, report.String())
128 })
129 }
130 }
131
View as plain text