mirror of
https://github.com/k8sgpt-ai/k8sgpt.git
synced 2026-03-18 11:06:08 +00:00
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package cache
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/spf13/viper"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewReturnsExpectedCache(t *testing.T) {
|
|
require.IsType(t, &FileBasedCache{}, New("file"))
|
|
require.IsType(t, &AzureCache{}, New("azure"))
|
|
require.IsType(t, &GCSCache{}, New("gcs"))
|
|
require.IsType(t, &S3Cache{}, New("s3"))
|
|
require.IsType(t, &InterplexCache{}, New("interplex"))
|
|
// default fallback
|
|
require.IsType(t, &FileBasedCache{}, New("unknown"))
|
|
}
|
|
|
|
func TestNewCacheProvider_InterplexAndInvalid(t *testing.T) {
|
|
// valid: interplex
|
|
cp, err := NewCacheProvider("interplex", "", "", "localhost:1", "", "", "", false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, "interplex", cp.CurrentCacheType)
|
|
require.Equal(t, "localhost:1", cp.Interplex.ConnectionString)
|
|
|
|
// invalid type
|
|
_, err = NewCacheProvider("not-a-type", "", "", "", "", "", "", false)
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestAddRemoveRemoteCacheAndGet(t *testing.T) {
|
|
// isolate viper with temp config file
|
|
tmpFile, err := os.CreateTemp("", "k8sgpt-cache-config-*.yaml")
|
|
require.NoError(t, err)
|
|
defer func() {
|
|
_ = os.Remove(tmpFile.Name())
|
|
}()
|
|
viper.Reset()
|
|
viper.SetConfigFile(tmpFile.Name())
|
|
|
|
// add interplex remote cache
|
|
cp := CacheProvider{}
|
|
cp.CurrentCacheType = "interplex"
|
|
cp.Interplex.ConnectionString = "localhost:1"
|
|
require.NoError(t, AddRemoteCache(cp))
|
|
|
|
// read back via GetCacheConfiguration
|
|
c, err := GetCacheConfiguration()
|
|
require.NoError(t, err)
|
|
require.IsType(t, &InterplexCache{}, c)
|
|
|
|
// remove remote cache
|
|
require.NoError(t, RemoveRemoteCache())
|
|
// now default should be file-based
|
|
c2, err := GetCacheConfiguration()
|
|
require.NoError(t, err)
|
|
require.IsType(t, &FileBasedCache{}, c2)
|
|
}
|