diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 0783344048fba0439fff85d6ad508024553e4220..2988744f4b88b734c4085b5aa20ceb95fe0657da 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -19,19 +19,7 @@ func TestActionURL_New(t *testing.T) { { name: "Without action", want: &URL{ - URL: &url.URL{ - Scheme: "", - Opaque: "", - User: nil, - Host: "", - Path: "", - RawPath: "", - OmitHost: false, - ForceQuery: false, - RawQuery: "", - Fragment: "", - RawFragment: "", - }, + URL: &url.URL{}, }, wantErr: assert.NoError, }, @@ -40,17 +28,7 @@ func TestActionURL_New(t *testing.T) { action: "build-site", want: &URL{ URL: &url.URL{ - Scheme: "", - Opaque: "", - User: nil, - Host: "", - Path: "build-site", - RawPath: "", - OmitHost: false, - ForceQuery: false, - RawQuery: "", - Fragment: "", - RawFragment: "", + Path: "build-site", }, }, url: "build-site", @@ -61,17 +39,8 @@ func TestActionURL_New(t *testing.T) { action: "grpc:///perxisweb/build-site", want: &URL{ URL: &url.URL{ - Scheme: "grpc", - Opaque: "", - User: nil, - Host: "", - Path: "/perxisweb/build-site", - RawPath: "", - OmitHost: false, - ForceQuery: false, - RawQuery: "", - Fragment: "", - RawFragment: "", + Scheme: "grpc", + Path: "/perxisweb/build-site", }, }, url: "grpc:///perxisweb/build-site", @@ -82,17 +51,8 @@ func TestActionURL_New(t *testing.T) { action: "ui:///space/env/coll", want: &URL{ URL: &url.URL{ - Scheme: "ui", - Opaque: "", - User: nil, - Host: "", - Path: "/space/env/coll", - RawPath: "", - OmitHost: false, - ForceQuery: false, - RawQuery: "", - Fragment: "", - RawFragment: "", + Scheme: "ui", + Path: "/space/env/coll", }, }, url: "ui:///space/env/coll", @@ -103,17 +63,8 @@ func TestActionURL_New(t *testing.T) { action: "https://perx.ru", want: &URL{ URL: &url.URL{ - Scheme: "https", - Opaque: "", - User: nil, - Host: "perx.ru", - Path: "", - RawPath: "", - OmitHost: false, - ForceQuery: false, - RawQuery: "", - Fragment: "", - RawFragment: "", + Scheme: "https", + Host: "perx.ru", }, }, url: "https://perx.ru", @@ -130,17 +81,8 @@ func TestActionURL_New(t *testing.T) { action: "grpc:///perxisweb", want: &URL{ URL: &url.URL{ - Scheme: "grpc", - Opaque: "", - User: nil, - Host: "", - Path: "/perxisweb", - RawPath: "", - OmitHost: false, - ForceQuery: false, - RawQuery: "", - Fragment: "", - RawFragment: "", + Scheme: "grpc", + Path: "/perxisweb", }, }, wantErr: assert.NoError, @@ -166,33 +108,28 @@ func TestActionURL_String(t *testing.T) { { name: "GRPC action", url: "grpc:///perxisweb/build-site", - want: "grpc:///perxisweb/build-site", }, { name: "UI action #1", url: "ui:///space/env/coll", - want: "ui:///space/env/coll", }, { name: "UI action deprecated call #2", url: "space/env/coll", - want: "space/env/coll", }, { name: "Https action", url: "https://perx.ru", - want: "https://perx.ru", }, { name: "With action deprecated call", url: "extension-id", - want: "extension-id", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { p, _ := NewURL(tt.url) - assert.Equalf(t, tt.want, p.String(), "String()") + assert.Equalf(t, tt.url, p.String(), "String()") }) } } diff --git a/pkg/extension/server.go b/pkg/extension/server.go index 6f2c24425222c687f4a39513893028ffe8475dd8..f9b603f50ffb6109f89551a7e3b92b5c355761d4 100644 --- a/pkg/extension/server.go +++ b/pkg/extension/server.go @@ -86,9 +86,12 @@ func (srv *Server) Action(ctx context.Context, in *pb.ActionRequest) (*pb.Action return nil, err } ext := actionURL.Extension() - if ext == "" && in.Extension != "" { + if ext == "" { ext = in.Extension } + if ext == "" { + return nil, errors.New("extension ID required") + } svc, ok := srv.services[ext] if !ok { diff --git a/pkg/extension/server_test.go b/pkg/extension/server_test.go index 9e8b8f4c71bbdcfc8fa46bcf5651c9e4e0fe81a5..3f8e408b21a25159cb94ea7527d899150354f278 100644 --- a/pkg/extension/server_test.go +++ b/pkg/extension/server_test.go @@ -168,6 +168,16 @@ func TestServer_Action(t *testing.T) { want: nil, wantErr: assert.Error, }, + { + name: "Error (deprecated call, no action and extension)", + services: map[string]Extension{"test-extension": getDummyExtension("test-extension")}, + in: &ActionRequest{ + SpaceId: "sp", + EnvId: "env", + }, + want: nil, + wantErr: assert.Error, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/pkg/extension/service/extension.go b/pkg/extension/service/extension.go index 8b9aefd3db639a5ab400c6ed32f8ee607485dd6c..6d9608ab6877acdc94bfcad0bd62e5fa21eef181 100644 --- a/pkg/extension/service/extension.go +++ b/pkg/extension/service/extension.go @@ -161,9 +161,12 @@ func (s *Extension) Action(ctx context.Context, in *extension.ActionRequest) (*e return nil, err } ext := actionURL.Extension() - if ext == "" && in.Extension != "" { + if ext == "" { ext = in.Extension } + if ext == "" { + return nil, errors.New("extension ID required") + } ok, err := extension.CheckInstalled(ctx, s.Content, in.SpaceId, in.EnvId, ext) if err != nil { return nil, errors.Wrap(err, "check extension installed")