test: add failing test for upload avatar FlushCache

The test populates the cache with multiple size-suffixed keys
and verifies that FlushCache removes all of them. Currently fails
because FlushCache uses Del with the base key which doesn't match
the actual size-suffixed cache keys.
This commit is contained in:
kolaente
2026-02-13 09:00:29 +01:00
parent 1e2b861ea5
commit c93fa1b4ae

View File

@@ -18,6 +18,7 @@ package upload
import (
"os"
"strconv"
"testing"
"code.vikunja.io/api/pkg/log"
@@ -35,6 +36,47 @@ func TestMain(m *testing.M) {
os.Exit(m.Run())
}
func TestFlushCache(t *testing.T) {
keyvalue.InitStorage()
provider := &Provider{}
testUser := &user.User{
ID: 777777,
}
// Populate cache with multiple size variants (matching the real key format from line 65)
sizes := []int64{32, 64, 128, 250}
for _, size := range sizes {
cacheKey := CacheKeyPrefix + strconv.Itoa(int(testUser.ID)) + "_" + strconv.FormatInt(size, 10)
err := keyvalue.Put(cacheKey, CachedAvatar{
Content: []byte("fake_avatar_data"),
MimeType: "image/png",
})
require.NoError(t, err)
}
// Verify all entries exist before flush
for _, size := range sizes {
cacheKey := CacheKeyPrefix + strconv.Itoa(int(testUser.ID)) + "_" + strconv.FormatInt(size, 10)
_, exists, err := keyvalue.Get(cacheKey)
require.NoError(t, err)
assert.True(t, exists, "cache entry for size %d should exist before flush", size)
}
// Flush cache
err := provider.FlushCache(testUser)
require.NoError(t, err)
// Verify ALL size variants are removed
for _, size := range sizes {
cacheKey := CacheKeyPrefix + strconv.Itoa(int(testUser.ID)) + "_" + strconv.FormatInt(size, 10)
_, exists, err := keyvalue.Get(cacheKey)
require.NoError(t, err)
assert.False(t, exists, "cache entry for size %d should be removed after flush", size)
}
}
func TestGetAvatar(t *testing.T) {
// Initialize storage for testing
keyvalue.InitStorage()