mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 10:18:13 +00:00 
			
		
		
		
	add apply cmd tests for TPR
This commit is contained in:
		| @@ -1259,17 +1259,7 @@ __EOF__ | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   # Test that we can create a new resource of type Foo | ||||
|   kubectl "${kube_flags[@]}" create -f - "${kube_flags[@]}" << __EOF__ | ||||
| { | ||||
|   "kind": "Foo", | ||||
|   "apiVersion": "company.com/v1", | ||||
|   "metadata": { | ||||
|     "name": "test" | ||||
|   }, | ||||
|   "some-field": "field1", | ||||
|   "other-field": "field2" | ||||
| } | ||||
| __EOF__ | ||||
|   kubectl "${kube_flags[@]}" create -f hack/testdata/TPR/foo.yaml "${kube_flags[@]}" | ||||
|  | ||||
|   # Test that we can list this new third party resource | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test:' | ||||
| @@ -1291,10 +1281,10 @@ __EOF__ | ||||
|   kubectl "${kube_flags[@]}" get foos/test -o json | ||||
|   kubectl "${kube_flags[@]}" get foos      -o yaml | ||||
|   kubectl "${kube_flags[@]}" get foos/test -o yaml | ||||
|   kubectl "${kube_flags[@]}" get foos      -o "jsonpath={.items[*].some-field}" --allow-missing-template-keys=false | ||||
|   kubectl "${kube_flags[@]}" get foos/test -o "jsonpath={.some-field}"          --allow-missing-template-keys=false | ||||
|   kubectl "${kube_flags[@]}" get foos      -o "go-template={{range .items}}{{index . \"some-field\"}}{{end}}" --allow-missing-template-keys=false | ||||
|   kubectl "${kube_flags[@]}" get foos/test -o "go-template={{index . \"some-field\"}}"                        --allow-missing-template-keys=false | ||||
|   kubectl "${kube_flags[@]}" get foos      -o "jsonpath={.items[*].someField}" --allow-missing-template-keys=false | ||||
|   kubectl "${kube_flags[@]}" get foos/test -o "jsonpath={.someField}"          --allow-missing-template-keys=false | ||||
|   kubectl "${kube_flags[@]}" get foos      -o "go-template={{range .items}}{{.someField}}{{end}}" --allow-missing-template-keys=false | ||||
|   kubectl "${kube_flags[@]}" get foos/test -o "go-template={{.someField}}"                        --allow-missing-template-keys=false | ||||
|  | ||||
|   # Test patching | ||||
|   kube::log::status "Testing ThirdPartyResource patching" | ||||
| @@ -1348,17 +1338,7 @@ __EOF__ | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   # Test that we can create a new resource of type Bar | ||||
|   kubectl "${kube_flags[@]}" create -f - "${kube_flags[@]}" << __EOF__ | ||||
| { | ||||
|   "kind": "Bar", | ||||
|   "apiVersion": "company.com/v1", | ||||
|   "metadata": { | ||||
|     "name": "test" | ||||
|   }, | ||||
|   "some-field": "field1", | ||||
|   "other-field": "field2" | ||||
| } | ||||
| __EOF__ | ||||
|   kubectl "${kube_flags[@]}" create -f hack/testdata/TPR/bar.yaml "${kube_flags[@]}" | ||||
|  | ||||
|   # Test that we can list this new third party resource | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" 'test:' | ||||
| @@ -1369,6 +1349,136 @@ __EOF__ | ||||
|   # Make sure it's gone | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   # Test that we can create single item via apply | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo.yaml | ||||
|  | ||||
|   # Test that we have create a foo named test | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test:' | ||||
|  | ||||
|   # Test that the field has the expected value | ||||
|   kube::test::get_object_assert foos/test '{{.someField}}' 'field1' | ||||
|  | ||||
|   # Test that apply an empty patch doesn't change fields | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo.yaml | ||||
|  | ||||
|   # Test that the field has the same value after re-apply | ||||
|   kube::test::get_object_assert foos/test '{{.someField}}' 'field1' | ||||
|  | ||||
|   # Test that apply has updated the subfield | ||||
|   kube::test::get_object_assert foos/test '{{.nestedField.someSubfield}}' 'subfield1' | ||||
|  | ||||
|   # Update a subfield and then apply the change | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo-updated-subfield.yaml | ||||
|  | ||||
|   # Test that apply has updated the subfield | ||||
|   kube::test::get_object_assert foos/test '{{.nestedField.someSubfield}}' 'modifiedSubfield' | ||||
|  | ||||
|   # Test that the field has the expected value | ||||
|   kube::test::get_object_assert foos/test '{{.nestedField.otherSubfield}}' 'subfield2' | ||||
|  | ||||
|   # Delete a subfield and then apply the change | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo-deleted-subfield.yaml | ||||
|  | ||||
|   # Test that apply has deleted the field | ||||
|   kube::test::get_object_assert foos/test '{{.nestedField.otherSubfield}}' '<no value>' | ||||
|  | ||||
|   # Test that the field does not exist | ||||
|   kube::test::get_object_assert foos/test '{{.nestedField.newSubfield}}' '<no value>' | ||||
|  | ||||
|   # Add a field and then apply the change | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo-added-subfield.yaml | ||||
|  | ||||
|   # Test that apply has added the field | ||||
|   kube::test::get_object_assert foos/test '{{.nestedField.newSubfield}}' 'subfield3' | ||||
|  | ||||
|   # Delete the resource | ||||
|   kubectl "${kube_flags[@]}" delete -f hack/testdata/TPR/foo.yaml | ||||
|  | ||||
|   # Make sure it's gone | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   # Test that we can create list via apply | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list.yaml | ||||
|  | ||||
|   # Test that we have create a foo and a bar from a list | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test-list:' | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" 'test-list:' | ||||
|  | ||||
|   # Test that the field has the expected value | ||||
|   kube::test::get_object_assert foos/test-list '{{.someField}}' 'field1' | ||||
|   kube::test::get_object_assert bars/test-list '{{.someField}}' 'field1' | ||||
|  | ||||
|   # Test that re-apply an list doesn't change anything | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list.yaml | ||||
|  | ||||
|   # Test that the field has the same value after re-apply | ||||
|   kube::test::get_object_assert foos/test-list '{{.someField}}' 'field1' | ||||
|   kube::test::get_object_assert bars/test-list '{{.someField}}' 'field1' | ||||
|  | ||||
|   # Test that the fields have the expected value | ||||
|   kube::test::get_object_assert foos/test-list '{{.someField}}' 'field1' | ||||
|   kube::test::get_object_assert bars/test-list '{{.someField}}' 'field1' | ||||
|  | ||||
|   # Update fields and then apply the change | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list-updated-field.yaml | ||||
|  | ||||
|   # Test that apply has updated the fields | ||||
|   kube::test::get_object_assert foos/test-list '{{.someField}}' 'modifiedField' | ||||
|   kube::test::get_object_assert bars/test-list '{{.someField}}' 'modifiedField' | ||||
|  | ||||
|   # Test that the field has the expected value | ||||
|   kube::test::get_object_assert foos/test-list '{{.otherField}}' 'field2' | ||||
|   kube::test::get_object_assert bars/test-list '{{.otherField}}' 'field2' | ||||
|  | ||||
|   # Delete fields and then apply the change | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list-deleted-field.yaml | ||||
|  | ||||
|   # Test that apply has deleted the fields | ||||
|   kube::test::get_object_assert foos/test-list '{{.otherField}}' '<no value>' | ||||
|   kube::test::get_object_assert bars/test-list '{{.otherField}}' '<no value>' | ||||
|  | ||||
|   # Test that the fields does not exist | ||||
|   kube::test::get_object_assert foos/test-list '{{.newField}}' '<no value>' | ||||
|   kube::test::get_object_assert bars/test-list '{{.newField}}' '<no value>' | ||||
|  | ||||
|   # Add a field and then apply the change | ||||
|   kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list-added-field.yaml | ||||
|  | ||||
|   # Test that apply has added the field | ||||
|   kube::test::get_object_assert foos/test-list '{{.newField}}' 'field3' | ||||
|   kube::test::get_object_assert bars/test-list '{{.newField}}' 'field3' | ||||
|  | ||||
|   # Delete the resource | ||||
|   kubectl "${kube_flags[@]}" delete -f hack/testdata/TPR/multi-tpr-list.yaml | ||||
|  | ||||
|   # Make sure it's gone | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   ## kubectl apply --prune | ||||
|   # Test that no foo or bar exist | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   # apply --prune on foo.yaml that has foo/test | ||||
|   kubectl apply --prune -l pruneGroup=true -f hack/testdata/TPR/foo.yaml "${kube_flags[@]}" --prune-whitelist=company.com/v1/Foo --prune-whitelist=company.com/v1/Bar | ||||
|   # check right tprs exist | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test:' | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   # apply --prune on bar.yaml that has bar/test | ||||
|   kubectl apply --prune -l pruneGroup=true -f hack/testdata/TPR/bar.yaml "${kube_flags[@]}" --prune-whitelist=company.com/v1/Foo --prune-whitelist=company.com/v1/Bar | ||||
|   # check right tprs exist | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" 'test:' | ||||
|  | ||||
|   # Delete the resource | ||||
|   kubectl "${kube_flags[@]}" delete -f hack/testdata/TPR/bar.yaml | ||||
|  | ||||
|   # Make sure it's gone | ||||
|   kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|   kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" '' | ||||
|  | ||||
|   # teardown | ||||
|   kubectl delete thirdpartyresources foo.company.com "${kube_flags[@]}" | ||||
|   kubectl delete thirdpartyresources bar.company.com "${kube_flags[@]}" | ||||
|   | ||||
							
								
								
									
										8
									
								
								hack/testdata/TPR/bar.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								hack/testdata/TPR/bar.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| kind: Bar | ||||
| apiVersion: company.com/v1 | ||||
| metadata: | ||||
|   name: test | ||||
|   labels: | ||||
|     pruneGroup: "true" | ||||
| someField: field1 | ||||
| otherField: field2 | ||||
							
								
								
									
										11
									
								
								hack/testdata/TPR/foo-added-subfield.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								hack/testdata/TPR/foo-added-subfield.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| kind: Foo | ||||
| apiVersion: company.com/v1 | ||||
| metadata: | ||||
|   name: test | ||||
|   labels: | ||||
|     pruneGroup: "true" | ||||
| someField: field1 | ||||
| otherField: field2 | ||||
| nestedField: | ||||
|   someSubfield: modifiedSubfield | ||||
|   newSubfield: subfield3 | ||||
							
								
								
									
										10
									
								
								hack/testdata/TPR/foo-deleted-subfield.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								hack/testdata/TPR/foo-deleted-subfield.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| kind: Foo | ||||
| apiVersion: company.com/v1 | ||||
| metadata: | ||||
|   name: test | ||||
|   labels: | ||||
|     pruneGroup: "true" | ||||
| someField: field1 | ||||
| otherField: field2 | ||||
| nestedField: | ||||
|   someSubfield: modifiedSubfield | ||||
							
								
								
									
										11
									
								
								hack/testdata/TPR/foo-updated-subfield.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								hack/testdata/TPR/foo-updated-subfield.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| kind: Foo | ||||
| apiVersion: company.com/v1 | ||||
| metadata: | ||||
|   name: test | ||||
|   labels: | ||||
|     pruneGroup: "true" | ||||
| someField: field1 | ||||
| otherField: field2 | ||||
| nestedField: | ||||
|   someSubfield: modifiedSubfield | ||||
|   otherSubfield: subfield2 | ||||
							
								
								
									
										11
									
								
								hack/testdata/TPR/foo.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								hack/testdata/TPR/foo.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| kind: Foo | ||||
| apiVersion: company.com/v1 | ||||
| metadata: | ||||
|   name: test | ||||
|   labels: | ||||
|     pruneGroup: "true" | ||||
| someField: field1 | ||||
| otherField: field2 | ||||
| nestedField: | ||||
|   someSubfield: subfield1 | ||||
|   otherSubfield: subfield2 | ||||
							
								
								
									
										19
									
								
								hack/testdata/TPR/multi-tpr-list-added-field.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								hack/testdata/TPR/multi-tpr-list-added-field.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| apiVersion: v1 | ||||
| kind: List | ||||
| items: | ||||
| - kind: Foo | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: modifiedField | ||||
|   newField: field3 | ||||
| - kind: Bar | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: modifiedField | ||||
|   newField: field3 | ||||
							
								
								
									
										17
									
								
								hack/testdata/TPR/multi-tpr-list-deleted-field.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								hack/testdata/TPR/multi-tpr-list-deleted-field.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| apiVersion: v1 | ||||
| kind: List | ||||
| items: | ||||
| - kind: Foo | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: modifiedField | ||||
| - kind: Bar | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: modifiedField | ||||
							
								
								
									
										19
									
								
								hack/testdata/TPR/multi-tpr-list-updated-field.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								hack/testdata/TPR/multi-tpr-list-updated-field.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| apiVersion: v1 | ||||
| kind: List | ||||
| items: | ||||
| - kind: Foo | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: modifiedField | ||||
|   otherField: field2 | ||||
| - kind: Bar | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: modifiedField | ||||
|   otherField: field2 | ||||
							
								
								
									
										19
									
								
								hack/testdata/TPR/multi-tpr-list.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								hack/testdata/TPR/multi-tpr-list.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| apiVersion: v1 | ||||
| kind: List | ||||
| items: | ||||
| - kind: Foo | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: field1 | ||||
|   otherField: field2 | ||||
| - kind: Bar | ||||
|   apiVersion: company.com/v1 | ||||
|   metadata: | ||||
|     name: test-list | ||||
|     labels: | ||||
|       pruneGroup: "true" | ||||
|   someField: field1 | ||||
|   otherField: field2 | ||||
		Reference in New Issue
	
	Block a user
	 ymqytw
					ymqytw