diff --git a/internal/services/applications.go b/internal/services/applications.go index ad6298de3..10e533c40 100644 --- a/internal/services/applications.go +++ b/internal/services/applications.go @@ -113,9 +113,14 @@ func updateApplication(applicationModel *wrappers.ApplicationConfiguration, appl } func associateProjectToApplication(applicationID, projectID string, associatedProjectIds []string, applicationsWrapper wrappers.ApplicationsWrapper) error { - associatedProjectIds = append(associatedProjectIds, projectID) + for _, id := range associatedProjectIds { + if id == projectID { + logger.PrintfIfVerbose("Project is already associated with the application. Skipping association") + return nil + } + } associateProjectsModel := &wrappers.AssociateProjectModel{ - ProjectIds: associatedProjectIds, + ProjectIds: []string{projectID}, } errorModel, err := applicationsWrapper.CreateProjectAssociation(applicationID, associateProjectsModel) return handleApplicationUpdateResponse(errorModel, err) diff --git a/internal/services/applications_test.go b/internal/services/applications_test.go index 48e13dc91..ca1398c3e 100644 --- a/internal/services/applications_test.go +++ b/internal/services/applications_test.go @@ -1,13 +1,14 @@ package services import ( + "reflect" + "strings" + "testing" + errorConstants "github.com/checkmarx/ast-cli/internal/constants/errors" "github.com/checkmarx/ast-cli/internal/wrappers" "github.com/checkmarx/ast-cli/internal/wrappers/mock" "gotest.tools/assert" - "reflect" - "strings" - "testing" ) func Test_createApplicationIds(t *testing.T) { @@ -87,3 +88,12 @@ func Test_ProjectAssociation_ToApplicationWithoutDirectAssociation(t *testing.T) }) } } + +func Test_AssociateProjectToApplication_ProjectAlreadyAssociated(t *testing.T) { + projectID := "project-123" + associatedProjectIds := []string{"project-123", "project-456"} + applicationName := "app-1" + applicationWrapper := &mock.ApplicationsMockWrapper{} + err := associateProjectToApplication(applicationName, projectID, associatedProjectIds, applicationWrapper) + assert.NilError(t, err) +}