From 63c00a64f412b05d81f17bca7f03059cfa92aee5 Mon Sep 17 00:00:00 2001
From: ko_oler <kooler89@gmail.com>
Date: Tue, 26 Sep 2023 11:33:40 +0300
Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?=
 =?UTF-8?q?=D0=BE=20=D0=9F=D0=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pkg/extension/action_url.go        | 14 ++++-----
 pkg/extension/action_url_test.go   | 47 +++++++++++++++---------------
 pkg/extension/server.go            |  8 ++---
 pkg/extension/service/extension.go |  8 ++---
 4 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/pkg/extension/action_url.go b/pkg/extension/action_url.go
index c0285f1c..5552b81a 100644
--- a/pkg/extension/action_url.go
+++ b/pkg/extension/action_url.go
@@ -9,11 +9,11 @@ import (
 
 // ActionURL структура для хранения данных о переданном действии
 type ActionURL struct {
-	actionURL   string
-	actionID    string
-	extensionID string
-	scheme      string
-	url         *url.URL
+	actionURL string
+	actionID  string
+	extension string
+	scheme    string
+	url       *url.URL
 }
 
 // NewActionURL возвращает пустую структуру ActionURL, если передано пустое действие
@@ -29,7 +29,7 @@ func (p *ActionURL) ID() string {
 
 // Extension возвращает сохраненный в ActionURL id расширения
 func (p *ActionURL) Extension() string {
-	return p.extensionID
+	return p.extension
 }
 
 // Scheme возвращает сохраненную в ActionURL схему
@@ -59,7 +59,7 @@ func parseActionURL(action string) (*ActionURL, error) {
 		if len(splitPath) < 2 {
 			return nil, errors.Errorf("incorrect action URL, no action id: '%s'", action)
 		}
-		parsed.extensionID = splitPath[0]
+		parsed.extension = splitPath[0]
 		parsed.actionID = splitPath[1]
 	}
 	return parsed, nil
diff --git a/pkg/extension/action_url_test.go b/pkg/extension/action_url_test.go
index 7c5ef5e4..e71ef1b6 100644
--- a/pkg/extension/action_url_test.go
+++ b/pkg/extension/action_url_test.go
@@ -9,53 +9,49 @@ import (
 )
 
 func TestNewActionURL(t *testing.T) {
-	u1, _ := url.Parse("build-site")
-	u2, _ := url.Parse("grpc:///perxisweb/build-site")
-	u3, _ := url.Parse("ui:///space/env/coll")
-	u4, _ := url.Parse("https://perx.ru")
 	tests := []struct {
 		name    string
 		action  string
 		want    *ActionURL
+		url     string
 		wantErr assert.ErrorAssertionFunc
 	}{
 		{
-			"Without action",
-			"",
-			&ActionURL{},
-			assert.NoError,
+			name:    "Without action",
+			want:    &ActionURL{},
+			wantErr: assert.NoError,
 		},
 		{
-			"Without deprecated action call",
-			"build-site",
-			&ActionURL{
+			name:   "Without deprecated action call",
+			action: "build-site",
+			want: &ActionURL{
 				actionURL: "build-site",
-				url:       u1,
 			},
-			assert.NoError,
+			url:     "build-site",
+			wantErr: assert.NoError,
 		},
 		{
 			name:   "With grpc action",
 			action: "grpc:///perxisweb/build-site",
 			want: &ActionURL{
-				actionURL:   "grpc:///perxisweb/build-site",
-				actionID:    "build-site",
-				extensionID: "perxisweb",
-				scheme:      "grpc",
-				url:         u2,
+				actionURL: "grpc:///perxisweb/build-site",
+				actionID:  "build-site",
+				extension: "perxisweb",
+				scheme:    "grpc",
 			},
+			url:     "grpc:///perxisweb/build-site",
 			wantErr: assert.NoError,
 		},
 		{
 			name:   "With ui action",
 			action: "ui:///space/env/coll",
 			want: &ActionURL{
-				actionURL:   "ui:///space/env/coll",
-				actionID:    "",
-				extensionID: "",
-				scheme:      "ui",
-				url:         u3,
+				actionURL: "ui:///space/env/coll",
+				actionID:  "",
+				extension: "",
+				scheme:    "ui",
 			},
+			url:     "ui:///space/env/coll",
 			wantErr: assert.NoError,
 		},
 		{
@@ -64,8 +60,8 @@ func TestNewActionURL(t *testing.T) {
 			want: &ActionURL{
 				actionURL: "https://perx.ru",
 				scheme:    "https",
-				url:       u4,
 			},
+			url:     "https://perx.ru",
 			wantErr: assert.NoError,
 		},
 		{
@@ -77,6 +73,9 @@ func TestNewActionURL(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
+			if tt.url != "" {
+				tt.want.url, _ = url.Parse(tt.url)
+			}
 			got, err := NewActionURL(tt.action)
 			if !tt.wantErr(t, err, fmt.Sprintf("NewActionURL(%v)", tt.action)) {
 				return
diff --git a/pkg/extension/server.go b/pkg/extension/server.go
index bdeac58c..aec70ff7 100644
--- a/pkg/extension/server.go
+++ b/pkg/extension/server.go
@@ -80,16 +80,16 @@ func (srv *Server) Update(ctx context.Context, request *UpdateRequest) (*UpdateR
 }
 
 func (srv *Server) Action(ctx context.Context, in *pb.ActionRequest) (*pb.ActionResponse, error) {
-	extensionID := in.Extension
-	if extensionID == "" {
+	ext := in.Extension
+	if ext == "" {
 		actionURL, err := NewActionURL(in.Action)
 		if err != nil {
 			return nil, err
 		}
-		extensionID = actionURL.extensionID
+		ext = actionURL.extension
 	}
 
-	svc, ok := srv.services[extensionID]
+	svc, ok := srv.services[ext]
 	if !ok {
 		return nil, ErrUnknownExtension
 	}
diff --git a/pkg/extension/service/extension.go b/pkg/extension/service/extension.go
index 5b9263e0..2fd57ee7 100644
--- a/pkg/extension/service/extension.go
+++ b/pkg/extension/service/extension.go
@@ -155,15 +155,15 @@ func (s *Extension) Uninstall(ctx context.Context, in *extension.UninstallReques
 }
 
 func (s *Extension) Action(ctx context.Context, in *extension.ActionRequest) (*extension.ActionResponse, error) {
-	extensionID := in.Extension
-	if extensionID == "" {
+	ext := in.Extension
+	if ext == "" {
 		actionURL, err := extension.NewActionURL(in.Action)
 		if err != nil {
 			return nil, err
 		}
-		extensionID = actionURL.Extension()
+		ext = actionURL.Extension()
 	}
-	ok, err := extension.CheckInstalled(ctx, s.Content, in.SpaceId, in.EnvId, extensionID)
+	ok, err := extension.CheckInstalled(ctx, s.Content, in.SpaceId, in.EnvId, ext)
 	if err != nil {
 		return nil, errors.Wrap(err, "check extension installed")
 	}
-- 
GitLab