From e41505e8d5da7cb6e416e1c8f3d2fe38a9871dc9 Mon Sep 17 00:00:00 2001 From: yuluo-yx Date: Fri, 3 Apr 2026 21:22:46 +0800 Subject: [PATCH] fix: fix accessing atest web pages err Signed-off-by: yuluo-yx --- go.sum | 2 -- pkg/server/remote_server_test.go | 37 ++++++++++++++++++++++++++++++++ pkg/testing/store.go | 11 +++++++--- pkg/testing/store_test.go | 30 ++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 5 deletions(-) diff --git a/go.sum b/go.sum index 2bd658124..d2a614765 100644 --- a/go.sum +++ b/go.sum @@ -131,8 +131,6 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/linuxsuren/go-fake-runtime v0.0.5 h1:x1qvuGMfly3L4BTwx6Hq5oUcuf/1u0kSVPzQylHHpwI= github.com/linuxsuren/go-fake-runtime v0.0.5/go.mod h1:hlE6bZp76N3YPDsKi5YKOf1XmcJy4rvf8EtkTLYRYLw= -github.com/linuxsuren/go-service v0.0.2-0.20251117091849-c58edc8748d9 h1:w5prP6ROOxInPV38KL+0laf7ZDIHlidBerhrphHqWHU= -github.com/linuxsuren/go-service v0.0.2-0.20251117091849-c58edc8748d9/go.mod h1:QX22v61PxpOfJa4Xug8qzGTbPjclDZFx2j1PlGLknJw= github.com/linuxsuren/go-service v0.0.2 h1:4pq+LEXs1/V6qBCVW749PZbaXSQb3dyz/VR+xsdf95o= github.com/linuxsuren/go-service v0.0.2/go.mod h1:QX22v61PxpOfJa4Xug8qzGTbPjclDZFx2j1PlGLknJw= github.com/linuxsuren/http-downloader v0.0.99 h1:fEu+HkHdYeLM932c7IfmuaDJqWxVU5sIEnS/Aln8h9o= diff --git a/pkg/server/remote_server_test.go b/pkg/server/remote_server_test.go index 065f25ae2..18eb80de2 100644 --- a/pkg/server/remote_server_test.go +++ b/pkg/server/remote_server_test.go @@ -883,6 +883,17 @@ func TestStoreManager(t *testing.T) { } }) + t.Run("GetStores without extension config", func(t *testing.T) { + server, clean := getRemoteServerInTempDirWithoutExtensions() + defer clean() + + reply, err := server.GetStores(ctx, &SimpleQuery{}) + assert.NoError(t, err) + if assert.Equal(t, 1, len(reply.Data)) { + assert.Equal(t, "local", reply.Data[0].Name) + } + }) + t.Run("CreateStore", func(t *testing.T) { server, clean := getRemoteServerInTempDir() defer clean() @@ -979,6 +990,23 @@ func getRemoteServerInTempDir() (server RunnerServer, call func()) { return } +func getRemoteServerInTempDirWithoutExtensions() (server RunnerServer, call func()) { + dir, _ := os.MkdirTemp(os.TempDir(), "remote-server-no-extension") + call = func() { os.RemoveAll(dir) } + + themePath := filepath.Join(dir, "data", "theme") + os.MkdirAll(themePath, 0755) + os.WriteFile(filepath.Join(themePath, "simple.json"), []byte(simplePostman), 0755) + + bindinPath := filepath.Join(dir, "data", "key-binding") + os.MkdirAll(bindinPath, 0755) + os.WriteFile(filepath.Join(bindinPath, "default.json"), binding, 0755) + + writer := atest.NewFileWriter(dir) + server = NewRemoteServer(writer, newLocalloaderFromStore(), nil, nil, dir, 1024*1024*4) + return +} + type fakeLocalLoaderFactory struct { } @@ -1073,6 +1101,15 @@ func TestGetStoreKinds(t *testing.T) { assert.Equal(t, 1, len(reply.Data)) } +func TestGetStoreKindsWithoutExtensionConfig(t *testing.T) { + server, clean := getRemoteServerInTempDirWithoutExtensions() + defer clean() + + reply, err := server.GetStoreKinds(context.Background(), &Empty{}) + assert.NoError(t, err) + assert.Empty(t, reply.Data) +} + func TestGetThemes(t *testing.T) { server, clean := getRemoteServerInTempDir() defer clean() diff --git a/pkg/testing/store.go b/pkg/testing/store.go index 69d109dba..2e27d3023 100644 --- a/pkg/testing/store.go +++ b/pkg/testing/store.go @@ -278,10 +278,15 @@ func (s *storeFactory) GetStoreKinds() (kinds []StoreKind, err error) { storeConfig := &StoreConfig{} var data []byte - if data, err = os.ReadFile(path.Join(s.configDir, "data", "core", "extension.yaml")); err == nil { - if err = yaml.Unmarshal(data, storeConfig); err == nil { - kinds = storeConfig.Extensions + if data, err = os.ReadFile(path.Join(s.configDir, "data", "core", "extension.yaml")); err != nil { + if os.IsNotExist(err) { + err = nil } + return + } + + if err = yaml.Unmarshal(data, storeConfig); err == nil { + kinds = storeConfig.Extensions } return } diff --git a/pkg/testing/store_test.go b/pkg/testing/store_test.go index 311c2fee6..1c0390efa 100644 --- a/pkg/testing/store_test.go +++ b/pkg/testing/store_test.go @@ -18,6 +18,7 @@ package testing import ( "os" + "path/filepath" "testing" "github.com/stretchr/testify/assert" @@ -48,6 +49,35 @@ func TestStoreFactory(t *testing.T) { assert.NoError(t, err) }) + t.Run("GetStoreKinds when extension config missing", func(t *testing.T) { + dir, err := os.MkdirTemp(os.TempDir(), "store-kind-missing") + assert.NoError(t, err) + defer os.RemoveAll(dir) + + factory := NewStoreFactory(dir) + kinds, err := factory.GetStoreKinds() + assert.NoError(t, err) + assert.Empty(t, kinds) + }) + + t.Run("GetStoreKinds when extension config invalid", func(t *testing.T) { + dir, err := os.MkdirTemp(os.TempDir(), "store-kind-invalid") + assert.NoError(t, err) + defer os.RemoveAll(dir) + + coreDir := filepath.Join(dir, "data", "core") + err = os.MkdirAll(coreDir, 0755) + assert.NoError(t, err) + + err = os.WriteFile(filepath.Join(coreDir, "extension.yaml"), []byte("items: ["), 0644) + assert.NoError(t, err) + + factory := NewStoreFactory(dir) + kinds, err := factory.GetStoreKinds() + assert.Error(t, err) + assert.Nil(t, kinds) + }) + t.Run("GetStore", func(t *testing.T) { store, err := factory.GetStore("db") assert.Nil(t, err)