github.com/argoproj/argo-cd/v2@v2.10.9/pkg/apiclient/application/forwarder_overwrite_test.go (about)

     1  package application
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
     8  
     9  	"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
    10  	"github.com/argoproj/argo-cd/v2/test"
    11  )
    12  
    13  func TestProcessApplicationListField_SyncOperation(t *testing.T) {
    14  	list := v1alpha1.ApplicationList{
    15  		Items: []v1alpha1.Application{{Operation: &v1alpha1.Operation{Sync: &v1alpha1.SyncOperation{
    16  			Revision: "abc",
    17  		}}}},
    18  	}
    19  
    20  	res, err := processApplicationListField(&list, map[string]interface{}{"items.operation.sync": true}, false)
    21  	require.NoError(t, err)
    22  	resMap, ok := res.(map[string]interface{})
    23  	require.True(t, ok)
    24  
    25  	items, ok := resMap["items"].([]map[string]interface{})
    26  	require.True(t, ok)
    27  	item := test.ToMap(items[0])
    28  
    29  	val, ok, err := unstructured.NestedString(item, "operation", "sync", "revision")
    30  	require.NoError(t, err)
    31  	require.True(t, ok)
    32  
    33  	require.Equal(t, "abc", val)
    34  }
    35  
    36  func TestProcessApplicationListField_SyncOperationMissing(t *testing.T) {
    37  	list := v1alpha1.ApplicationList{
    38  		Items: []v1alpha1.Application{{Operation: nil}},
    39  	}
    40  
    41  	res, err := processApplicationListField(&list, map[string]interface{}{"items.operation.sync": true}, false)
    42  	require.NoError(t, err)
    43  	resMap, ok := res.(map[string]interface{})
    44  	require.True(t, ok)
    45  
    46  	items, ok := resMap["items"].([]map[string]interface{})
    47  	require.True(t, ok)
    48  	item := test.ToMap(items[0])
    49  
    50  	_, ok, err = unstructured.NestedString(item, "operation")
    51  	require.NoError(t, err)
    52  	require.False(t, ok)
    53  }