github.com/argoproj/argo-cd/v3@v3.2.1/util/cache/appstate/cache_test.go (about)

     1  package appstate
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/spf13/cobra"
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  
    11  	. "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1"
    12  	cacheutil "github.com/argoproj/argo-cd/v3/util/cache"
    13  )
    14  
    15  type fixtures struct {
    16  	*Cache
    17  }
    18  
    19  func newFixtures() *fixtures {
    20  	return &fixtures{NewCache(
    21  		cacheutil.NewCache(cacheutil.NewInMemoryCache(1*time.Hour)),
    22  		1*time.Minute,
    23  	)}
    24  }
    25  
    26  func TestCache_GetAppManagedResources(t *testing.T) {
    27  	cache := newFixtures().Cache
    28  	// cache miss
    29  	value := &[]*ResourceDiff{}
    30  	err := cache.GetAppManagedResources("my-appname", value)
    31  	assert.Equal(t, ErrCacheMiss, err)
    32  	// populate cache
    33  	err = cache.SetAppManagedResources("my-appname", []*ResourceDiff{{Name: "my-name"}})
    34  	require.NoError(t, err)
    35  	// cache miss
    36  	err = cache.GetAppManagedResources("other-appname", value)
    37  	assert.Equal(t, ErrCacheMiss, err)
    38  	// cache hit
    39  	err = cache.GetAppManagedResources("my-appname", value)
    40  	require.NoError(t, err)
    41  	assert.Equal(t, &[]*ResourceDiff{{Name: "my-name"}}, value)
    42  }
    43  
    44  func TestCache_GetAppResourcesTree(t *testing.T) {
    45  	cache := newFixtures().Cache
    46  	// cache miss
    47  	value := &ApplicationTree{}
    48  	err := cache.GetAppResourcesTree("my-appname", value)
    49  	assert.Equal(t, ErrCacheMiss, err)
    50  	// populate cache
    51  	err = cache.SetAppResourcesTree("my-appname", &ApplicationTree{Nodes: []ResourceNode{{}}})
    52  	require.NoError(t, err)
    53  	// cache miss
    54  	err = cache.GetAppResourcesTree("other-appname", value)
    55  	assert.Equal(t, ErrCacheMiss, err)
    56  	// cache hit
    57  	err = cache.GetAppResourcesTree("my-appname", value)
    58  	require.NoError(t, err)
    59  	assert.Equal(t, &ApplicationTree{Nodes: []ResourceNode{{}}}, value)
    60  }
    61  
    62  func TestCache_GetClusterInfo(t *testing.T) {
    63  	cache := newFixtures().Cache
    64  	// cache miss
    65  	res := &ClusterInfo{}
    66  	err := cache.GetClusterInfo("http://minikube", res)
    67  	assert.Equal(t, ErrCacheMiss, err)
    68  	// populate cache
    69  	err = cache.SetClusterInfo("http://kind-cluster", &ClusterInfo{ServerVersion: "0.24.0"})
    70  	require.NoError(t, err)
    71  	// cache miss
    72  	err = cache.GetClusterInfo("http://kind-clusterss", res)
    73  	assert.Equal(t, ErrCacheMiss, err)
    74  	// cache hit
    75  	err = cache.GetClusterInfo("http://kind-cluster", res)
    76  	require.NoError(t, err)
    77  	assert.Equal(t, &ClusterInfo{ServerVersion: "0.24.0"}, res)
    78  }
    79  
    80  func TestAddCacheFlagsToCmd(t *testing.T) {
    81  	cache, err := AddCacheFlagsToCmd(&cobra.Command{})()
    82  	require.NoError(t, err)
    83  	assert.Equal(t, 1*time.Hour, cache.appStateCacheExpiration)
    84  }