memos/server/router/api/v1/test/instance_owner_cache_test.go

59 lines
1.7 KiB
Go

package test
import (
"context"
"testing"
"github.com/stretchr/testify/require"
v1pb "github.com/usememos/memos/proto/gen/api/v1"
)
func TestInstanceOwnerCache(t *testing.T) {
ctx := context.Background()
t.Run("Instance becomes initialized after first admin user is created", func(t *testing.T) {
// Create test service
ts := NewTestService(t)
defer ts.Cleanup()
// Verify instance is not initialized initially
profile1, err := ts.Service.GetInstanceProfile(ctx, &v1pb.GetInstanceProfileRequest{})
require.NoError(t, err)
require.False(t, profile1.Initialized, "Instance should not be initialized before first admin user")
// Create the first admin user
user, err := ts.CreateHostUser(ctx, "admin")
require.NoError(t, err)
require.NotNil(t, user)
// Verify instance is now initialized
profile2, err := ts.Service.GetInstanceProfile(ctx, &v1pb.GetInstanceProfileRequest{})
require.NoError(t, err)
require.True(t, profile2.Initialized, "Instance should be initialized after first admin user is created")
})
t.Run("ClearInstanceOwnerCache works correctly", func(t *testing.T) {
// Create test service
ts := NewTestService(t)
defer ts.Cleanup()
// Create admin user
_, err := ts.CreateHostUser(ctx, "admin")
require.NoError(t, err)
// Verify initialized
profile1, err := ts.Service.GetInstanceProfile(ctx, &v1pb.GetInstanceProfileRequest{})
require.NoError(t, err)
require.True(t, profile1.Initialized)
// Clear cache
ts.Service.ClearInstanceOwnerCache()
// Should still be initialized (cache is refilled from DB)
profile2, err := ts.Service.GetInstanceProfile(ctx, &v1pb.GetInstanceProfileRequest{})
require.NoError(t, err)
require.True(t, profile2.Initialized)
})
}