(t *testing.T)
| 680 | } |
| 681 | |
| 682 | func TestAutoSyncMultiSourceWithoutSelfHeal(t *testing.T) { |
| 683 | // Simulate OutOfSync caused by object change in cluster |
| 684 | // So our Sync Revisions and SyncStatus Revisions should deep equal |
| 685 | t.Run("ClusterObjectChangeShouldNotTriggerAutoSync", func(t *testing.T) { |
| 686 | app := newFakeMultiSourceApp() |
| 687 | app.Spec.SyncPolicy.Automated.SelfHeal = new(false) |
| 688 | app.Status.OperationState.SyncResult.Revisions = []string{"z", "x", "v"} |
| 689 | ctrl := newFakeController(t.Context(), &fakeData{apps: []runtime.Object{app}}, nil) |
| 690 | syncStatus := v1alpha1.SyncStatus{ |
| 691 | Status: v1alpha1.SyncStatusCodeOutOfSync, |
| 692 | Revisions: []string{"z", "x", "v"}, |
| 693 | } |
| 694 | cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook-1", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}}, true) |
| 695 | assert.Nil(t, cond) |
| 696 | app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(t.Context(), "my-app", metav1.GetOptions{}) |
| 697 | require.NoError(t, err) |
| 698 | assert.Nil(t, app.Operation) |
| 699 | }) |
| 700 | t.Run("NewRevisionChangeShouldTriggerAutoSync", func(t *testing.T) { |
| 701 | app := newFakeMultiSourceApp() |
| 702 | app.Spec.SyncPolicy.Automated.SelfHeal = new(false) |
| 703 | app.Status.OperationState.SyncResult.Revisions = []string{"z", "x", "v"} |
| 704 | ctrl := newFakeController(t.Context(), &fakeData{apps: []runtime.Object{app}}, nil) |
| 705 | syncStatus := v1alpha1.SyncStatus{ |
| 706 | Status: v1alpha1.SyncStatusCodeOutOfSync, |
| 707 | Revisions: []string{"a", "b", "c"}, |
| 708 | } |
| 709 | cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook-1", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}}, true) |
| 710 | assert.Nil(t, cond) |
| 711 | app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(t.Context(), "my-app", metav1.GetOptions{}) |
| 712 | require.NoError(t, err) |
| 713 | assert.NotNil(t, app.Operation) |
| 714 | }) |
| 715 | } |
| 716 | |
| 717 | func TestAutoSyncNotAllowEmpty(t *testing.T) { |
| 718 | app := newFakeApp() |
nothing calls this directly
no test coverage detected