github.com/opendevstack/tailor@v1.3.5-0.20220119161809-cab064e60a67/pkg/openshift/list_test.go (about) 1 package openshift 2 3 import ( 4 "testing" 5 ) 6 7 func TestConfigFilterByKind(t *testing.T) { 8 byteList := []byte( 9 `apiVersion: v1 10 items: 11 - apiVersion: v1 12 kind: PersistentVolumeClaim 13 metadata: 14 name: foo 15 spec: 16 accessModes: 17 - ReadWriteOnce 18 resources: 19 requests: 20 storage: 5Gi 21 storageClassName: gp2 22 status: {} 23 - apiVersion: v1 24 kind: ConfigMap 25 metadata: 26 name: bar 27 data: 28 bar: baz 29 kind: List 30 metadata: {} 31 `) 32 33 filter := &ResourceFilter{ 34 Kinds: []string{"PersistentVolumeClaim"}, 35 Name: "", 36 Label: "", 37 } 38 39 list, _ := NewTemplateBasedResourceList(filter, byteList) 40 41 if len(list.Items) != 1 { 42 t.Errorf("One item should have been extracted, got %v items.", len(list.Items)) 43 return 44 } 45 46 item := list.Items[0] 47 if item.Kind != "PersistentVolumeClaim" { 48 t.Errorf("Item should have been a PersistentVolumeClaim, got %s.", item.Kind) 49 } 50 } 51 52 func TestConfigFilterByName(t *testing.T) { 53 byteList := []byte( 54 `apiVersion: v1 55 items: 56 - apiVersion: v1 57 kind: PersistentVolumeClaim 58 metadata: 59 name: foo 60 spec: 61 accessModes: 62 - ReadWriteOnce 63 resources: 64 requests: 65 storage: 5Gi 66 storageClassName: gp2 67 status: {} 68 - apiVersion: v1 69 kind: PersistentVolumeClaim 70 metadata: 71 name: bar 72 spec: 73 accessModes: 74 - ReadWriteOnce 75 resources: 76 requests: 77 storage: 1Gi 78 storageClassName: gp2 79 status: {} 80 kind: List 81 metadata: {} 82 `) 83 84 filter := &ResourceFilter{ 85 Kinds: []string{}, 86 Name: "PersistentVolumeClaim/foo", 87 Label: "", 88 } 89 90 list, _ := NewTemplateBasedResourceList(filter, byteList) 91 92 if len(list.Items) != 1 { 93 t.Errorf("One item should have been extracted, got %v items.", len(list.Items)) 94 return 95 } 96 97 item := list.Items[0] 98 if item.Name != "foo" { 99 t.Errorf("Item should have had name foo, got %s.", item.Name) 100 } 101 } 102 103 func TestConfigFilterBySelector(t *testing.T) { 104 byteList := []byte( 105 `apiVersion: v1 106 items: 107 - apiVersion: v1 108 kind: PersistentVolumeClaim 109 metadata: 110 labels: 111 app: foo 112 name: foo 113 spec: 114 accessModes: 115 - ReadWriteOnce 116 resources: 117 requests: 118 storage: 5Gi 119 storageClassName: gp2 120 status: {} 121 - apiVersion: v1 122 kind: PersistentVolumeClaim 123 metadata: 124 labels: 125 app: bar 126 name: bar 127 spec: 128 accessModes: 129 - ReadWriteOnce 130 resources: 131 requests: 132 storage: 1Gi 133 storageClassName: gp2 134 status: {} 135 - apiVersion: v1 136 kind: ConfigMap 137 metadata: 138 labels: 139 app: foo 140 name: foo 141 data: 142 bar: baz 143 - apiVersion: v1 144 kind: ConfigMap 145 metadata: 146 labels: 147 app: bar 148 name: bar 149 data: 150 bar: baz 151 - apiVersion: v1 152 data: 153 auth-token: abcdef 154 kind: Secret 155 metadata: 156 name: bar 157 labels: 158 app: bar 159 type: opaque 160 kind: List 161 metadata: {} 162 `) 163 164 pvcFilter := &ResourceFilter{ 165 Kinds: []string{"PersistentVolumeClaim"}, 166 Name: "", 167 Label: "app=foo", 168 } 169 cmFilter := &ResourceFilter{ 170 Kinds: []string{"ConfigMap"}, 171 Name: "", 172 Label: "app=foo", 173 } 174 secretFilter := &ResourceFilter{ 175 Kinds: []string{"Secret"}, 176 Name: "", 177 Label: "app=foo", 178 } 179 180 pvcList, _ := NewTemplateBasedResourceList(pvcFilter, byteList) 181 182 if len(pvcList.Items) != 1 { 183 t.Errorf("One item should have been extracted, got %v items.", len(pvcList.Items)) 184 } 185 186 _, err := pvcList.getItem("PersistentVolumeClaim", "foo") 187 if err != nil { 188 t.Errorf("Item foo should have been present.") 189 } 190 191 cmList, _ := NewTemplateBasedResourceList(cmFilter, byteList) 192 193 if len(cmList.Items) != 1 { 194 t.Errorf("One item should have been extracted, got %v items.", len(cmList.Items)) 195 } 196 197 _, err = cmList.getItem("ConfigMap", "foo") 198 if err != nil { 199 t.Errorf("Item should have been present.") 200 } 201 202 secretList, _ := NewTemplateBasedResourceList(secretFilter, byteList) 203 204 if len(secretList.Items) != 0 { 205 t.Errorf("No item should have been extracted, got %v items.", len(secretList.Items)) 206 } 207 }