github.com/storacha/go-ucanto@v0.7.2/server/retrieval/cache_test.go (about) 1 package retrieval 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/storacha/go-ucanto/core/delegation" 8 "github.com/storacha/go-ucanto/testing/fixtures" 9 "github.com/storacha/go-ucanto/ucan" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestMemoryDelegationCache(t *testing.T) { 14 dlg, err := delegation.Delegate( 15 fixtures.Alice, 16 fixtures.Alice, 17 []ucan.Capability[ucan.NoCaveats]{ 18 ucan.NewCapability( 19 "test/cache", 20 fixtures.Alice.DID().String(), 21 ucan.NoCaveats{}, 22 ), 23 }, 24 ) 25 require.NoError(t, err) 26 27 t.Run("put", func(t *testing.T) { 28 cache, err := NewMemoryDelegationCache(5) 29 require.NoError(t, err) 30 err = cache.Put(t.Context(), dlg) 31 require.NoError(t, err) 32 }) 33 34 t.Run("get", func(t *testing.T) { 35 cache, err := NewMemoryDelegationCache(5) 36 require.NoError(t, err) 37 38 err = cache.Put(t.Context(), dlg) 39 require.NoError(t, err) 40 41 cached, ok, err := cache.Get(t.Context(), dlg.Link()) 42 require.NoError(t, err) 43 require.True(t, ok) 44 require.Equal(t, dlg.Link().String(), cached.Link().String()) 45 }) 46 47 t.Run("miss", func(t *testing.T) { 48 cache, err := NewMemoryDelegationCache(5) 49 require.NoError(t, err) 50 51 cached, ok, err := cache.Get(t.Context(), dlg.Link()) 52 require.NoError(t, err) 53 require.False(t, ok) 54 require.Nil(t, cached) 55 }) 56 57 t.Run("uses default size if not specified", func(t *testing.T) { 58 cache, err := NewMemoryDelegationCache(-1) 59 require.NoError(t, err) 60 61 for i := range MemoryDelegationCacheSize + 1 { 62 dlg, err := delegation.Delegate( 63 fixtures.Alice, 64 fixtures.Alice, 65 []ucan.Capability[ucan.NoCaveats]{ 66 ucan.NewCapability( 67 "test/cache", 68 fixtures.Alice.DID().String(), 69 ucan.NoCaveats{}, 70 ), 71 }, 72 delegation.WithNonce(fmt.Sprintf("%d", i)), 73 ) 74 require.NoError(t, err) 75 76 err = cache.Put(t.Context(), dlg) 77 require.NoError(t, err) 78 } 79 80 require.Equal(t, MemoryDelegationCacheSize, cache.data.Len()) 81 }) 82 }