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 }