diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7501a2ac9..f5ef6cf266 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: - version: v1.49 + version: v1.51 args: --timeout=10m working-directory: server - name: test diff --git a/server/internal/usecase/interactor/scene_plugin_test.go b/server/internal/usecase/interactor/scene_plugin_test.go index 554596054a..5081af5a64 100644 --- a/server/internal/usecase/interactor/scene_plugin_test.go +++ b/server/internal/usecase/interactor/scene_plugin_test.go @@ -7,10 +7,12 @@ import ( "github.com/reearth/reearth/server/internal/infrastructure/fs" "github.com/reearth/reearth/server/internal/infrastructure/memory" "github.com/reearth/reearth/server/internal/usecase" + "github.com/reearth/reearth/server/internal/usecase/gateway" "github.com/reearth/reearth/server/internal/usecase/interfaces" "github.com/reearth/reearth/server/pkg/id" "github.com/reearth/reearth/server/pkg/layer" "github.com/reearth/reearth/server/pkg/plugin" + "github.com/reearth/reearth/server/pkg/plugin/pluginpack" "github.com/reearth/reearth/server/pkg/property" "github.com/reearth/reearth/server/pkg/scene" "github.com/reearth/reearthx/rerror" @@ -85,8 +87,9 @@ func TestScene_InstallPlugin(t *testing.T) { } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { - t.Parallel() + // t.Parallel() // avoid data race assert := assert.New(t) ctx := context.Background() @@ -96,7 +99,6 @@ func TestScene_InstallPlugin(t *testing.T) { sc.Plugins().Add(p) } sr := memory.NewSceneWith(sc) - pl := plugin.New().ID(pid).MustBuild() pl2 := plugin.New().ID(pid3).Schema(id.NewPropertySchemaID(pid3, "@").Ref()).MustBuild() pl3 := plugin.New().ID(pid4).MustBuild() @@ -105,10 +107,11 @@ func TestScene_InstallPlugin(t *testing.T) { prr := memory.NewProperty() uc := &Scene{ - sceneRepo: sr, - pluginRepo: pr, - propertyRepo: prr, - transaction: &usecasex.NopTransaction{}, + sceneRepo: sr, + pluginRepo: pr, + pluginRegistry: &mockPluginRegistry{}, + propertyRepo: prr, + transaction: &usecasex.NopTransaction{}, } o := tt.args.operator @@ -194,6 +197,7 @@ func TestScene_UninstallPlugin(t *testing.T) { } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() assert := assert.New(t) @@ -332,6 +336,7 @@ func TestScene_UpgradePlugin(t *testing.T) { } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() assert := assert.New(t) @@ -364,6 +369,7 @@ func TestScene_UpgradePlugin(t *testing.T) { propertySchemaRepo: psr, layerRepo: lr, datasetRepo: dsr, + pluginRegistry: &mockPluginRegistry{}, transaction: &usecasex.NopTransaction{}, } @@ -389,3 +395,15 @@ func TestScene_UpgradePlugin(t *testing.T) { }) } } + +type mockPluginRegistry struct { + gateway.PluginRegistry +} + +func (g *mockPluginRegistry) FetchPluginPackage(context.Context, id.PluginID) (*pluginpack.Package, error) { + return nil, rerror.ErrNotFound +} + +func (g *mockPluginRegistry) NotifyDownload(context.Context, id.PluginID) error { + return nil +} diff --git a/server/internal/usecase/interactor/usecase.go b/server/internal/usecase/interactor/usecase.go index 1e520c3687..a03004dcaf 100644 --- a/server/internal/usecase/interactor/usecase.go +++ b/server/internal/usecase/interactor/usecase.go @@ -101,6 +101,10 @@ func Run3[A, B, C any](ctx context.Context, op *usecase.Operator, r *repo.Contai } func (u *uc) checkPermission(op *usecase.Operator) error { + if op == nil { + return nil + } + ok := true if u.readableWorkspaces != nil { ok = op.IsReadableWorkspace(u.readableWorkspaces...) diff --git a/server/internal/usecase/interactor/usecase_test.go b/server/internal/usecase/interactor/usecase_test.go index d49a9ab81e..342684551e 100644 --- a/server/internal/usecase/interactor/usecase_test.go +++ b/server/internal/usecase/interactor/usecase_test.go @@ -14,7 +14,7 @@ import ( ) func TestUc_checkPermission(t *testing.T) { - tid := id.NewWorkspaceID() + wid := id.NewWorkspaceID() sid := id.NewSceneID() tests := []struct { @@ -37,11 +37,11 @@ func TestUc_checkPermission(t *testing.T) { }, { name: "can read a workspace", - readableWorkspaces: id.WorkspaceIDList{tid}, + readableWorkspaces: id.WorkspaceIDList{wid}, op: &usecase.Operator{ - ReadableWorkspaces: id.WorkspaceIDList{tid}, + ReadableWorkspaces: id.WorkspaceIDList{wid}, }, - wantErr: true, + wantErr: false, }, { name: "cannot read a workspace", @@ -53,15 +53,15 @@ func TestUc_checkPermission(t *testing.T) { }, { name: "can write a workspace", - writableWorkspaces: id.WorkspaceIDList{tid}, + writableWorkspaces: id.WorkspaceIDList{wid}, op: &usecase.Operator{ - WritableWorkspaces: id.WorkspaceIDList{tid}, + WritableWorkspaces: id.WorkspaceIDList{wid}, }, - wantErr: true, + wantErr: false, }, { name: "cannot write a workspace", - writableWorkspaces: id.WorkspaceIDList{tid}, + writableWorkspaces: id.WorkspaceIDList{wid}, op: &usecase.Operator{ WritableWorkspaces: id.WorkspaceIDList{}, }, @@ -73,7 +73,7 @@ func TestUc_checkPermission(t *testing.T) { op: &usecase.Operator{ ReadableScenes: id.SceneIDList{sid}, }, - wantErr: true, + wantErr: false, }, { name: "cannot read a scene", @@ -89,7 +89,7 @@ func TestUc_checkPermission(t *testing.T) { op: &usecase.Operator{ WritableScenes: id.SceneIDList{sid}, }, - wantErr: true, + wantErr: false, }, { name: "cannot write a scene", @@ -102,6 +102,7 @@ func TestUc_checkPermission(t *testing.T) { } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() diff --git a/server/pkg/layer/merged_test.go b/server/pkg/layer/merged_test.go index 652c7451e3..53b6c94e8b 100644 --- a/server/pkg/layer/merged_test.go +++ b/server/pkg/layer/merged_test.go @@ -367,7 +367,7 @@ func TestMerge(t *testing.T) { for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - t.Parallel() + // t.Parallel() // avoid data race actual := Merge(tt.o, tt.p) assert.Equal(t, tt.want, actual) }) diff --git a/server/pkg/tag/group_test.go b/server/pkg/tag/group_test.go index 4763248de7..bd37128469 100644 --- a/server/pkg/tag/group_test.go +++ b/server/pkg/tag/group_test.go @@ -126,11 +126,12 @@ func TestGroup_AddTag(t *testing.T) { expected: IDList{tid}, }, } - for _, tc := range tests { - t.Run(tc.name, func(tt *testing.T) { - tt.Parallel() - tc.tag.AddTag(tc.input...) - assert.Equal(tt, tc.tag.tags, tc.expected) + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + tt.tag.AddTag(tt.input...) + assert.Equal(t, tt.tag.tags, tt.expected) }) } } @@ -152,11 +153,12 @@ func TestGroup_RemoveTag(t *testing.T) { expected: IDList{tid}, }, } - for _, tc := range tests { - t.Run(tc.name, func(tt *testing.T) { - tt.Parallel() - tc.tag.RemoveTag(tc.input...) - assert.Equal(tt, tc.tag.tags, tc.expected) + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + tt.tag.RemoveTag(tt.input...) + assert.Equal(t, tt.tag.tags, tt.expected) }) } }