Skip to content

Commit 41d4e4c

Browse files
fixed lint and added more unit tests
1 parent 32d961a commit 41d4e4c

File tree

4 files changed

+70
-3
lines changed

4 files changed

+70
-3
lines changed

internal/services/applications.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func verifyApplicationNameExactMatch(applicationName string, resp *wrappers.Appl
6464
return application
6565
}
6666

67-
func findApplicationAndUpdate(applicationName string, applicationsWrapper wrappers.ApplicationsWrapper, projectName string, projectID string, featureFlagsWrapper wrappers.FeatureFlagsWrapper) error {
67+
func findApplicationAndUpdate(applicationName string, applicationsWrapper wrappers.ApplicationsWrapper, projectName, projectID string, featureFlagsWrapper wrappers.FeatureFlagsWrapper) error {
6868
if applicationName == "" {
6969
logger.PrintfIfVerbose("No application name provided. Skipping application update")
7070
return nil
@@ -112,7 +112,7 @@ func updateApplication(applicationModel *wrappers.ApplicationConfiguration, appl
112112
return handleApplicationUpdateResponse(errorModel, err)
113113
}
114114

115-
func associateProjectToApplication(applicationID string, projectID string, associatedProjectIds []string, applicationsWrapper wrappers.ApplicationsWrapper) error {
115+
func associateProjectToApplication(applicationID, projectID string, associatedProjectIds []string, applicationsWrapper wrappers.ApplicationsWrapper) error {
116116
associatedProjectIds = append(associatedProjectIds, projectID)
117117
associateProjectsModel := &wrappers.AssociateProjectModel{
118118
ProjectIds: associatedProjectIds,

internal/services/applications_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package services
22

33
import (
4+
errorConstants "github.com/checkmarx/ast-cli/internal/constants/errors"
5+
"github.com/checkmarx/ast-cli/internal/wrappers"
6+
"github.com/checkmarx/ast-cli/internal/wrappers/mock"
7+
"gotest.tools/assert"
48
"reflect"
9+
"strings"
510
"testing"
611
)
712

@@ -36,3 +41,49 @@ func Test_createApplicationIds(t *testing.T) {
3641
})
3742
}
3843
}
44+
func Test_ProjectAssociation_ToApplicationDirectly(t *testing.T) {
45+
applicationWrapper := &mock.ApplicationsMockWrapper{}
46+
47+
tests := []struct {
48+
description string
49+
applicationName string
50+
projectName string
51+
error string
52+
}{
53+
{"Project association to Application should fail with 403 forbidden permission error", mock.FakeForbidden403, "random-project", errorConstants.NoPermissionToUpdateApplication},
54+
{"Project association to Application should fail with 401 unauthorized error", mock.FakeUnauthorized401, "random-project", errorConstants.StatusUnauthorized},
55+
{"Project association to Application should fail with 400 BadRequest error", mock.FakeBadRequest400, "random-project", errorConstants.FailedToUpdateApplication},
56+
}
57+
58+
for _, test := range tests {
59+
tt := test
60+
t.Run(tt.description, func(t *testing.T) {
61+
err := associateProjectToApplication(tt.applicationName, tt.projectName, []string{}, applicationWrapper)
62+
assert.Assert(t, strings.Contains(err.Error(), tt.error), err.Error())
63+
})
64+
}
65+
}
66+
67+
func Test_ProjectAssociation_ToApplicationWithoutDirectAssociation(t *testing.T) {
68+
applicationModel := wrappers.ApplicationConfiguration{}
69+
applicationWrapper := &mock.ApplicationsMockWrapper{}
70+
71+
tests := []struct {
72+
description string
73+
applicationId string
74+
projectName string
75+
error string
76+
}{
77+
{"Application update should fail with 403 forbidden permission error", mock.FakeForbidden403, "random-project", errorConstants.NoPermissionToUpdateApplication},
78+
{"Application update should fail with 401 unauthorized error", mock.FakeUnauthorized401, "random-project", errorConstants.StatusUnauthorized},
79+
{"Application update should fail with 400 BadRequest error", mock.FakeBadRequest400, "random-project", errorConstants.FailedToUpdateApplication},
80+
}
81+
82+
for _, test := range tests {
83+
tt := test
84+
t.Run(tt.description, func(t *testing.T) {
85+
err := updateApplication(&applicationModel, applicationWrapper, tt.applicationId)
86+
assert.Assert(t, strings.Contains(err.Error(), tt.error), err.Error())
87+
})
88+
}
89+
}

internal/wrappers/mock/application-mock.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ func (a ApplicationsMockWrapper) Update(applicationID string, applicationBody *w
6161
if applicationID == FakeUnauthorized401 {
6262
return nil, errors.Errorf(errorConstants.StatusUnauthorized)
6363
}
64+
if applicationID == FakeBadRequest400 {
65+
return &wrappers.ErrorModel{
66+
Message: "invalid applicationBody",
67+
Code: 355,
68+
Type: "validation",
69+
}, nil
70+
}
6471
return nil, nil
6572
}
6673

@@ -72,5 +79,14 @@ func (a ApplicationsMockWrapper) CreateProjectAssociation(applicationID string,
7279
if applicationID == FakeUnauthorized401 {
7380
return nil, errors.Errorf(errorConstants.StatusUnauthorized)
7481
}
82+
83+
if applicationID == FakeBadRequest400 {
84+
return &wrappers.ErrorModel{
85+
Message: "invalid applicationBody",
86+
Code: 355,
87+
Type: "validation",
88+
}, nil
89+
}
90+
7591
return nil, nil
7692
}

test/integration/scan_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ func TestScanCreate_ExistingApplicationAndExistingProject_CreateScanSuccessfully
299299
_, projectName := createNewProject(t, nil, nil, GenerateRandomProjectNameForScan())
300300
args := []string{
301301
"scan", "create",
302-
flag(params.ApplicationName), "my-application",
302+
flag(params.ApplicationName), "test-app",
303303
flag(params.ProjectName), projectName,
304304
flag(params.SourcesFlag), ".",
305305
flag(params.ScanTypes), params.IacType,

0 commit comments

Comments
 (0)