package requestservice import ( "testing" "time" "github.com/hashicorp/go-version" "github.com/stretchr/testify/assert" "edge-infra.dev/pkg/sds/emergencyaccess/types" ) var ( testCacheKey = types.Target{ Projectid: "projectID", Bannerid: "bannerID", Storeid: "storeID", Terminalid: "terminalID", } testCacheVal = &version.Version{} ) func TestCacheGet(t *testing.T) { t.Parallel() c := &versionCache{ cache: make(map[types.Target]*version.Version), } c.cache[testCacheKey] = testCacheVal actual, ok := c.Get(testCacheKey) assert.True(t, ok) assert.Equal(t, actual, testCacheVal) invalid, ok := c.Get(types.Target{}) assert.False(t, ok) assert.Empty(t, invalid) } func TestCacheDelete(t *testing.T) { t.Parallel() c := &versionCache{ cache: make(map[types.Target]*version.Version), } c.cache[testCacheKey] = testCacheVal c.Delete(testCacheKey) assert.Empty(t, c.cache[testCacheKey]) } func TestCacheInsert(t *testing.T) { t.Parallel() expirationTime := 20 * time.Millisecond c := &versionCache{ cache: make(map[types.Target]*version.Version), expiration: expirationTime, } c.Insert(testCacheKey, testCacheVal) ver, ok := c.Get(testCacheKey) assert.True(t, ok) assert.Equal(t, ver, testCacheVal) assert.Eventually(t, func() bool { _, ok := c.Get(testCacheKey) return !ok }, expirationTime+(5*time.Millisecond), 1*time.Millisecond) }