Skip to content

Commit 9049b74

Browse files
committed
Added tests
1 parent a5a2b92 commit 9049b74

23 files changed

+678
-183
lines changed

.github/workflows/analysis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ jobs:
1818
with:
1919
go-version-file: go.mod
2020

21+
- name: Build
22+
run: make build
23+
2124
- name: Static Code Analysis
2225
uses: golangci/golangci-lint-action@v6
2326
with:

.golangci.yml

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
11
# Options for analysis running
22
# More info could be found at https://golangci-lint.run/usage/configuration/
33
run:
4-
# timeout for analysis, e.g. 30s, 5m, default is 1m
5-
timeout: 5m
6-
modules-download-mode: readonly
4+
# timeout for analysis, e.g. 30s, 5m, default is 1m
5+
timeout: 5m
6+
modules-download-mode: readonly
77

88
# List of useful linters could be found at https://github.com/golangci/awesome-go-linters
99
linters:
10-
disable-all: true
11-
enable:
12-
- errcheck
13-
- copyloopvar
14-
- gofumpt
15-
- goimports
16-
- gosimple
17-
- govet
18-
- ineffassign
19-
- makezero
20-
- misspell
21-
- noctx
22-
- nolintlint
23-
- rowserrcheck
24-
- sqlclosecheck
25-
- staticcheck
26-
- unconvert
27-
- unused
28-
- wastedassign
29-
- gosec
10+
disable-all: true
11+
enable:
12+
- errcheck
13+
- copyloopvar
14+
- gofumpt
15+
- goimports
16+
- gosimple
17+
- govet
18+
- ineffassign
19+
- makezero
20+
- misspell
21+
- noctx
22+
- nolintlint
23+
- rowserrcheck
24+
- sqlclosecheck
25+
- staticcheck
26+
- unconvert
27+
- unused
28+
- wastedassign
29+
- gosec
3030

3131
linters-settings:
32-
staticcheck:
33-
# https://staticcheck.io/docs/options#checks
34-
checks: [ "all","-SA1019","-SA1029" ]
35-
gosec:
36-
excludes: ["G204", "G301", "G302", "G304", "G306", "G601", "G101", "G407"]
37-
exclude-generated: true
38-
exclude-test-files: true
39-
config:
40-
global:
41-
nosec: true
32+
staticcheck:
33+
# https://staticcheck.io/docs/options#checks
34+
checks: [ "all","-SA1019","-SA1029" ]
35+
gosec:
36+
excludes: [ "G204", "G301", "G302", "G304", "G306", "G601", "G101", "G407" ]
37+
exclude-generated: true
38+
exclude-test-files: true
39+
config:
40+
global:
41+
nosec: true
4242

4343
issues:
44-
exclude-use-default: false
45-
# Maximum issues count per one linter. Set to 0 to disable. Default is 50.
46-
max-issues-per-linter: 0
47-
# Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
48-
max-same-issues: 0
44+
exclude-use-default: false
45+
# Maximum issues count per one linter. Set to 0 to disable. Default is 50.
46+
max-issues-per-linter: 0
47+
# Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
48+
max-same-issues: 0

Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ GOIMPORTS:
3434
########## ANALYSE ##########
3535

3636
GOLANGCI_LINT = ${TOOLS_DIR}/golangci-lint
37-
GOLANGCI_LINT_VERSION = 1.62.2
37+
GOLANGCI_LINT_VERSION = 1.63.4
3838

3939
verify: GOLANGCI_LINT
4040
echo $(GO_SOURCES)
@@ -63,7 +63,12 @@ build-install:: build
6363
.PHONY: clean-mock
6464
clean-mock:
6565
@echo Cleaning generated mock files
66-
find . -path "*/mocks/*.go" -delete
66+
@find . -name "*_mock.go" -delete
67+
68+
.PHONY: clean
69+
clean:: clean-mock
70+
@echo Cleaning generated files
71+
@rm -rf ${BINARY_CLI}
6772

6873
.PHONY: generate-mock
6974
generate-mock: clean-mock

application/app/auth/app_details.go

Lines changed: 0 additions & 15 deletions
This file was deleted.

application/app/context.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,33 @@
11
package app
22

33
import (
4-
"github.com/jfrog/jfrog-cli-application/application/service"
4+
"github.com/jfrog/jfrog-cli-application/application/service/systems"
5+
"github.com/jfrog/jfrog-cli-application/application/service/versions"
56
)
67

78
type Context interface {
8-
GetVersionService() service.VersionService
9-
GetSystemService() service.SystemService
9+
GetVersionService() versions.VersionService
10+
GetSystemService() systems.SystemService
1011
GetConfig() interface{}
1112
}
1213

1314
type context struct {
14-
versionService service.VersionService
15-
systemService service.SystemService
15+
versionService versions.VersionService
16+
systemService systems.SystemService
1617
}
1718

1819
func NewAppContext() Context {
1920
return &context{
20-
versionService: service.NewVersionService(),
21-
systemService: service.NewSystemService(),
21+
versionService: versions.NewVersionService(),
22+
systemService: systems.NewSystemService(),
2223
}
2324
}
2425

25-
func (c *context) GetVersionService() service.VersionService {
26+
func (c *context) GetVersionService() versions.VersionService {
2627
return c.versionService
2728
}
2829

29-
func (c *context) GetSystemService() service.SystemService {
30+
func (c *context) GetSystemService() systems.SystemService {
3031
return c.systemService
3132
}
3233

application/app/context_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package app
2+
3+
import (
4+
"testing"
5+
6+
mocksystems "github.com/jfrog/jfrog-cli-application/application/service/systems/mocks"
7+
mockversions "github.com/jfrog/jfrog-cli-application/application/service/versions/mocks"
8+
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
func TestNewAppContext(t *testing.T) {
13+
ctx := NewAppContext()
14+
assert.NotNil(t, ctx)
15+
assert.NotNil(t, ctx.GetVersionService())
16+
assert.NotNil(t, ctx.GetSystemService())
17+
}
18+
19+
func TestGetVersionService(t *testing.T) {
20+
mockVersionService := &mockversions.MockVersionService{}
21+
ctx := &context{
22+
versionService: mockVersionService,
23+
}
24+
assert.Equal(t, mockVersionService, ctx.GetVersionService())
25+
}
26+
27+
func TestGetSystemService(t *testing.T) {
28+
mockSystemService := &mocksystems.MockSystemService{}
29+
ctx := &context{
30+
systemService: mockSystemService,
31+
}
32+
assert.Equal(t, mockSystemService, ctx.GetSystemService())
33+
}
34+
35+
func TestGetConfig(t *testing.T) {
36+
ctx := &context{}
37+
assert.Nil(t, ctx.GetConfig())
38+
}

application/commands/system/ping_cmd.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
11
package system
22

3+
//go:generate ${PROJECT_DIR}/scripts/mockgen.sh ${GOFILE}
4+
35
import (
46
"github.com/jfrog/jfrog-cli-application/application/app"
57
"github.com/jfrog/jfrog-cli-application/application/commands"
68
"github.com/jfrog/jfrog-cli-application/application/commands/utils"
79
"github.com/jfrog/jfrog-cli-application/application/common"
810
"github.com/jfrog/jfrog-cli-application/application/service"
11+
"github.com/jfrog/jfrog-cli-application/application/service/systems"
912
commonCLiCommands "github.com/jfrog/jfrog-cli-core/v2/common/commands"
1013
"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
1114
coreConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config"
1215
)
1316

1417
type pingCommand struct {
15-
systemService service.SystemService
18+
systemService systems.SystemService
1619
serverDetails *coreConfig.ServerDetails
1720
}
1821

1922
func (pc *pingCommand) Run() error {
20-
ctx := &service.Context{ServerDetails: pc.serverDetails}
23+
ctx, err := service.NewContext(*pc.serverDetails)
24+
if err != nil {
25+
return err
26+
}
27+
2128
return pc.systemService.Ping(ctx)
2229
}
2330

application/commands/version/create_app_version_cmd.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package version
33
import (
44
"encoding/json"
55

6+
"github.com/jfrog/jfrog-cli-application/application/service/versions"
7+
68
"github.com/jfrog/jfrog-cli-application/application/app"
79
"github.com/jfrog/jfrog-cli-application/application/commands"
810
"github.com/jfrog/jfrog-cli-application/application/commands/utils"
@@ -19,7 +21,7 @@ import (
1921
)
2022

2123
type createAppVersionCommand struct {
22-
versionService service.VersionService
24+
versionService versions.VersionService
2325
serverDetails *coreConfig.ServerDetails
2426
requestPayload *model.CreateAppVersionRequest
2527
}
@@ -29,7 +31,11 @@ type createVersionSpec struct {
2931
}
3032

3133
func (cv *createAppVersionCommand) Run() error {
32-
ctx := &service.Context{ServerDetails: cv.serverDetails}
34+
ctx, err := service.NewContext(*cv.serverDetails)
35+
if err != nil {
36+
return err
37+
}
38+
3339
return cv.versionService.CreateAppVersion(ctx, cv.requestPayload)
3440
}
3541

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package version
2+
3+
import (
4+
"errors"
5+
"testing"
6+
7+
mockversions "github.com/jfrog/jfrog-cli-application/application/service/versions/mocks"
8+
"go.uber.org/mock/gomock"
9+
10+
"github.com/jfrog/jfrog-cli-application/application/model"
11+
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
12+
"github.com/stretchr/testify/assert"
13+
)
14+
15+
func TestCreateAppVersionCommand_Run(t *testing.T) {
16+
ctrl := gomock.NewController(t)
17+
defer ctrl.Finish()
18+
19+
serverDetails := &config.ServerDetails{Url: "https://example.com"}
20+
requestPayload := &model.CreateAppVersionRequest{
21+
ApplicationKey: "app-key",
22+
Version: "1.0.0",
23+
Packages: []model.CreateVersionPackage{
24+
{
25+
Type: "type",
26+
Name: "name",
27+
Version: "1.0.0",
28+
Repository: "repo",
29+
},
30+
},
31+
}
32+
33+
mockVersionService := mockversions.NewMockVersionService(ctrl)
34+
mockVersionService.EXPECT().CreateAppVersion(gomock.Any(), requestPayload).
35+
Return(nil).Times(1)
36+
37+
cmd := &createAppVersionCommand{
38+
versionService: mockVersionService,
39+
serverDetails: serverDetails,
40+
requestPayload: requestPayload,
41+
}
42+
43+
err := cmd.Run()
44+
assert.NoError(t, err)
45+
}
46+
47+
func TestCreateAppVersionCommand_Run_ContextError(t *testing.T) {
48+
ctrl := gomock.NewController(t)
49+
defer ctrl.Finish()
50+
51+
serverDetails := &config.ServerDetails{Url: "https://example.com"}
52+
requestPayload := &model.CreateAppVersionRequest{
53+
ApplicationKey: "app-key",
54+
Version: "1.0.0",
55+
Packages: []model.CreateVersionPackage{
56+
{
57+
Type: "type",
58+
Name: "name",
59+
Version: "1.0.0",
60+
Repository: "repo",
61+
},
62+
},
63+
}
64+
65+
mockVersionService := mockversions.NewMockVersionService(ctrl)
66+
mockVersionService.EXPECT().CreateAppVersion(gomock.Any(), requestPayload).
67+
Return(errors.New("context error")).Times(1)
68+
69+
cmd := &createAppVersionCommand{
70+
versionService: mockVersionService,
71+
serverDetails: serverDetails,
72+
requestPayload: requestPayload,
73+
}
74+
75+
err := cmd.Run()
76+
assert.Error(t, err)
77+
assert.Equal(t, "context error", err.Error())
78+
}

application/commands/version/promote_app_version_cmd.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package version
22

3+
//go:generate ${PROJECT_DIR}/scripts/mockgen.sh ${GOFILE}
4+
35
import (
46
"github.com/jfrog/jfrog-cli-application/application/app"
57
"github.com/jfrog/jfrog-cli-application/application/commands"
68
"github.com/jfrog/jfrog-cli-application/application/commands/utils"
79
"github.com/jfrog/jfrog-cli-application/application/common"
810
"github.com/jfrog/jfrog-cli-application/application/model"
911
"github.com/jfrog/jfrog-cli-application/application/service"
12+
"github.com/jfrog/jfrog-cli-application/application/service/versions"
1013
commonCLiCommands "github.com/jfrog/jfrog-cli-core/v2/common/commands"
1114
pluginsCommon "github.com/jfrog/jfrog-cli-core/v2/plugins/common"
1215
"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
@@ -15,13 +18,17 @@ import (
1518
)
1619

1720
type promoteAppVersionCommand struct {
18-
versionService service.VersionService
21+
versionService versions.VersionService
1922
serverDetails *coreConfig.ServerDetails
2023
requestPayload *model.PromoteAppVersionRequest
2124
}
2225

2326
func (pv *promoteAppVersionCommand) Run() error {
24-
ctx := &service.Context{ServerDetails: pv.serverDetails}
27+
ctx, err := service.NewContext(*pv.serverDetails)
28+
if err != nil {
29+
return err
30+
}
31+
2532
return pv.versionService.PromoteAppVersion(ctx, pv.requestPayload)
2633
}
2734

0 commit comments

Comments
 (0)