diff --git a/pkg/fortify/fortify.go b/pkg/fortify/fortify.go index fb0436329..9de75bff5 100644 --- a/pkg/fortify/fortify.go +++ b/pkg/fortify/fortify.go @@ -197,17 +197,17 @@ func (sys *SystemInstance) GetProjectByName(projectName string, autoCreate bool, // GetProjectVersionDetailsByProjectIDAndVersionName returns the project version details of the project version identified by the id and project versionname // projectName parameter is only used if autoCreate=true func (sys *SystemInstance) GetProjectVersionDetailsByProjectIDAndVersionName(id int64, versionName string, autoCreate bool, projectName string) (*models.ProjectVersion, error) { - nameParam := fmt.Sprintf("name=%v", versionName) + nameParam := fmt.Sprintf("name:%v", versionName) params := &project_version_of_project_controller.ListProjectVersionOfProjectParams{ParentID: id, Q: &nameParam} params.WithTimeout(sys.timeout) result, err := sys.client.ProjectVersionOfProjectController.ListProjectVersionOfProject(params, sys) if err != nil { return nil, err } - for _, projectVersion := range result.GetPayload().Data { - if *projectVersion.Name == versionName { - return projectVersion, nil - } + + if result.Payload.Count > 0 { + projectVersion := result.GetPayload().Data[0] + return projectVersion, nil } // projectVersion not found for specified project id and name, check if autoCreate is enabled if !autoCreate { diff --git a/pkg/fortify/fortify_test.go b/pkg/fortify/fortify_test.go index 853c2668d..a2a402275 100644 --- a/pkg/fortify/fortify_test.go +++ b/pkg/fortify/fortify_test.go @@ -259,6 +259,21 @@ func TestGetProjectVersionDetailsByProjectIDAndVersionName(t *testing.T) { "first":{"href":"https://fortify/ssc/api/v1/projects/815/versions?start=0"}}}`)) return } + if req.URL.Path == "/projects/8888/versions" && req.URL.RawQuery == "q=name%3A1" { + header := rw.Header() + header.Add("Content-type", "application/json") + rw.Write([]byte(`{"data":[{"id":9910,"project":{"id":8888,"name":"test","description":"Created by Go script","creationDate":"2022-06-24T04:44:12.344+0000", + "createdBy":"jajajajja","issueTemplateId":"asxasca-asff-b57aedaf41"},"name":"1","description":"","createdBy":"afsafa","creationDate":"2021-07-17T04:09:17.909+0000", + "sourceBasePath":null,"committed":true,"issueTemplateId":"asdawffbcad88eb041","issueTemplateName":"aiudfnwofn","loadProperties":null,"staleIssueTemplate":false, + "snapshotOutOfDate":false,"refreshRequired":false,"attachmentsOutOfDate":false,"migrationVersion":null,"masterAttrGuid":"akjnfkjsnfkj686b","tracesOutOfDate":false, + "issueTemplateModifiedTime":1556502937909,"active":true,"obfuscatedId":null,"owner":"","serverVersion":21.2,"siteId":null,"latestScanId":null,"mode":"BASIC", + "currentState":{"id":9910,"committed":true,"attentionRequired":false,"analysisResultsExist":false,"auditEnabled":false,"lastFprUploadDate":null,"extraMessage":null, + "analysisUploadEnabled":true,"batchBugSubmissionExists":false,"hasCustomIssues":false,"metricEvaluationDate":null,"deltaPeriod":7,"issueCountDelta":0,"percentAuditedDelta":0, + "criticalPriorityIssueCountDelta":0,"percentCriticalPriorityIssuesAuditedDelta":0},"bugTrackerPluginId":null,"bugTrackerEnabled":false,"securityGroup":null,"status":null, + "assignedIssuesCount":0,"customTagValuesAutoApply":null,"autoPredict":null,"predictionPolicy":null,"_href":"https://fortify/ssc/api/v1/projectVersions/8888"}],"count":1, + "responseCode":200,"links":{"last":{"href":"https://fortify/ssc/api/v1/projects/8888/versions?q=name%3A1&start=0"},"first":{"href":"https://fortify/ssc/api/v1/projects/8888/versions?q=name%3A1&start=0"}}}`)) + return + } }) // Close the server when test finishes @@ -286,6 +301,11 @@ func TestGetProjectVersionDetailsByProjectIDAndVersionName(t *testing.T) { assert.Equal(t, "0", *result.Name, "Expected to get project version with different name") assert.Equal(t, "autocreate", *result.Project.Name, "Expected to get project with different name") }) + t.Run("test filter projectVersion", func(t *testing.T) { + result, err := sys.GetProjectVersionDetailsByProjectIDAndVersionName(8888, "1", true, "autocreate") + assert.NoError(t, err, "GetProjectVersionDetailsByNameAndProjectID call not successful") + assert.Equal(t, "1", *result.Name, "Expected to get exact project version") + }) } func TestGetProjectVersionAttributesByProjectVersionID(t *testing.T) {