Add tests

This commit is contained in:
jennybuckley 2019-08-22 13:27:38 -07:00 committed by Jennifer Buckley
parent 9a12e37a6d
commit 3279c73945
2 changed files with 101 additions and 1 deletions

View File

@ -72,6 +72,29 @@ func TestFieldManagerCreation(t *testing.T) {
}
}
func TestUpdateOnlyDoesNotTrackManagedFields(t *testing.T) {
f := NewTestFieldManager()
liveObj := &corev1.Pod{}
updatedObj := liveObj.DeepCopy()
updatedObj.ObjectMeta.Labels = map[string]string{"k": "v"}
newObj, err := f.Update(liveObj, updatedObj, "fieldmanager_test")
if err != nil {
t.Fatalf("failed to update object: %v", err)
}
accessor, err := meta.Accessor(newObj)
if err != nil {
t.Fatalf("couldn't get accessor: %v", err)
}
if m := accessor.GetManagedFields(); len(m) != 0 {
t.Fatalf("managedFields were tracked on update only: %v", m)
}
}
func TestApplyStripsFields(t *testing.T) {
f := NewTestFieldManager()

View File

@ -180,9 +180,11 @@ func TestNoOpUpdateSameResourceVersion(t *testing.T) {
}
}`)
_, err := client.CoreV1().RESTClient().Post().
_, err := client.CoreV1().RESTClient().Patch(types.ApplyPatchType).
Namespace("default").
Param("fieldManager", "apply_test").
Resource(podResource).
Name(podName).
Body(podBytes).
Do().
Get()
@ -367,6 +369,81 @@ func TestApplyUpdateApplyConflictForced(t *testing.T) {
}
}
// TestUpdateApplyConflict tests that applying to an object, which wasn't created by apply, will give conflicts
func TestUpdateApplyConflict(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.ServerSideApply, true)()
_, client, closeFn := setup(t)
defer closeFn()
obj := []byte(`{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "deployment",
"labels": {"app": "nginx"}
},
"spec": {
"replicas": 3,
"selector": {
"matchLabels": {
"app": "nginx"
}
},
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [{
"name": "nginx",
"image": "nginx:latest"
}]
}
}
}
}`)
_, err := client.CoreV1().RESTClient().Post().
AbsPath("/apis/apps/v1").
Namespace("default").
Resource("deployments").
Body(obj).Do().Get()
if err != nil {
t.Fatalf("Failed to create object using post: %v", err)
}
obj = []byte(`{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "deployment",
},
"spec": {
"replicas": 101,
}
}`)
_, err = client.CoreV1().RESTClient().Patch(types.ApplyPatchType).
AbsPath("/apis/apps/v1").
Namespace("default").
Resource("deployments").
Name("deployment").
Param("fieldManager", "apply_test").
Body([]byte(obj)).Do().Get()
if err == nil {
t.Fatalf("Expecting to get conflicts when applying object")
}
status, ok := err.(*errors.StatusError)
if !ok {
t.Fatalf("Expecting to get conflicts as API error")
}
if len(status.Status().Details.Causes) < 1 {
t.Fatalf("Expecting to get at least one conflict when applying object, got: %v", status.Status().Details.Causes)
}
}
// TestApplyManagedFields makes sure that managedFields api does not change
func TestApplyManagedFields(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.ServerSideApply, true)()