...
1 package requestservice
2
3 import (
4 "testing"
5 "time"
6
7 "github.com/hashicorp/go-version"
8 "github.com/stretchr/testify/assert"
9
10 "edge-infra.dev/pkg/sds/emergencyaccess/types"
11 )
12
13 var (
14 testCacheKey = types.Target{
15 Projectid: "projectID",
16 Bannerid: "bannerID",
17 Storeid: "storeID",
18 Terminalid: "terminalID",
19 }
20 testCacheVal = &version.Version{}
21 )
22
23 func TestCacheGet(t *testing.T) {
24 t.Parallel()
25
26 c := &versionCache{
27 cache: make(map[types.Target]*version.Version),
28 }
29
30 c.cache[testCacheKey] = testCacheVal
31
32 actual, ok := c.Get(testCacheKey)
33 assert.True(t, ok)
34 assert.Equal(t, actual, testCacheVal)
35
36 invalid, ok := c.Get(types.Target{})
37 assert.False(t, ok)
38 assert.Empty(t, invalid)
39 }
40
41 func TestCacheDelete(t *testing.T) {
42 t.Parallel()
43
44 c := &versionCache{
45 cache: make(map[types.Target]*version.Version),
46 }
47
48 c.cache[testCacheKey] = testCacheVal
49 c.Delete(testCacheKey)
50
51 assert.Empty(t, c.cache[testCacheKey])
52 }
53
54 func TestCacheInsert(t *testing.T) {
55 t.Parallel()
56
57 expirationTime := 20 * time.Millisecond
58 c := &versionCache{
59 cache: make(map[types.Target]*version.Version),
60 expiration: expirationTime,
61 }
62
63 c.Insert(testCacheKey, testCacheVal)
64 ver, ok := c.Get(testCacheKey)
65 assert.True(t, ok)
66 assert.Equal(t, ver, testCacheVal)
67
68 assert.Eventually(t, func() bool {
69 _, ok := c.Get(testCacheKey)
70 return !ok
71 }, expirationTime+(5*time.Millisecond), 1*time.Millisecond)
72 }
73
View as plain text