@@ -14,12 +14,15 @@ import (
1414 "testing"
1515 "time"
1616
17+ buildinfo "github.com/jfrog/build-info-go/entities"
1718 "github.com/jfrog/jfrog-cli-application/apptrust/model"
1819 "github.com/jfrog/jfrog-cli-application/apptrust/service"
1920 "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
21+ "github.com/jfrog/jfrog-cli-core/v2/common/build"
2022 accessServices "github.com/jfrog/jfrog-client-go/access/services"
2123 "github.com/jfrog/jfrog-client-go/artifactory"
2224 "github.com/jfrog/jfrog-client-go/artifactory/services"
25+ artClientUtils "github.com/jfrog/jfrog-client-go/artifactory/services/utils"
2326 "github.com/jfrog/jfrog-client-go/utils/errorutils"
2427 "github.com/jfrog/jfrog-client-go/utils/log"
2528 "github.com/stretchr/testify/assert"
@@ -45,6 +48,7 @@ func deleteTestProject() {
4548 if testProjectKey == "" {
4649 return
4750 }
51+ deleteBuild ()
4852 deleteNpmRepo ()
4953 accessManager , err := utils .CreateAccessServiceManager (serverDetails , false )
5054 if err != nil {
@@ -110,15 +114,28 @@ func uploadPackageToArtifactory(t *testing.T) {
110114 npmPackageFilePath := filepath .Join (filepath .Dir (testFilePath ), "testdata" , "pizza-frontend.tgz" )
111115
112116 targetPath := testRepoKey + "/pizza-frontend.tgz"
117+ buildName := generateUniqueKey ("apptrust-cli-tests-build" )
118+ buildNumber := "1"
119+ buildProps , _ := build .CreateBuildProperties (buildName , buildNumber , "" )
120+
113121 servicesManager := getArtifactoryServicesManager (t )
114122 uploadParams := services .NewUploadParams ()
115123 uploadParams .Pattern = npmPackageFilePath
116124 uploadParams .Target = targetPath
117125 uploadParams .Flat = true
118- uploaded , failed , err := servicesManager .UploadFiles (artifactory.UploadServiceOptions {FailFast : false }, uploadParams )
126+ uploadParams .BuildProps = buildProps
127+ summary , err := servicesManager .UploadFilesWithSummary (artifactory.UploadServiceOptions {FailFast : false }, uploadParams )
128+ require .NoError (t , err )
129+ require .Equal (t , 1 , summary .TotalSucceeded , "Expected exactly one uploaded file" )
130+ require .Equal (t , 0 , summary .TotalFailed , "Expected zero failed uploads" )
131+ defer func () {
132+ err = summary .Close ()
133+ require .NoError (t , err )
134+ }()
135+
136+ artifactDetails := new (artClientUtils.ArtifactDetails )
137+ err = summary .ArtifactsDetailsReader .NextRecord (artifactDetails )
119138 require .NoError (t , err )
120- require .Equal (t , 1 , uploaded , "Expected exactly one uploaded file" )
121- require .Equal (t , 0 , failed , "Expected zero failed uploads" )
122139
123140 testPackageType = "npm"
124141 testPackageName = "@gpizza/pizza-frontend"
@@ -127,6 +144,8 @@ func uploadPackageToArtifactory(t *testing.T) {
127144
128145 // Wait for the package to be indexed in Artifactory
129146 waitForPackageIndexing (t , testPackageName , testPackageVersion )
147+
148+ createBuild (t , buildName , buildNumber , artifactDetails .Checksums .Sha256 )
130149}
131150
132151func waitForPackageIndexing (t * testing.T , packageName , packageVersion string ) {
@@ -217,6 +236,46 @@ func getArtifactoryServicesManager(t *testing.T) artifactory.ArtifactoryServices
217236 return artifactoryServicesManager
218237}
219238
239+ func createBuild (t * testing.T , buildName , buildNumber , sha256 string ) {
240+ buildInfo := & buildinfo.BuildInfo {
241+ Name : buildName ,
242+ Number : buildNumber ,
243+ Started : "2024-01-01T12:00:00.000Z" ,
244+ Modules : []buildinfo.Module {
245+ {
246+ Id : "build-module" ,
247+ Artifacts : []buildinfo.Artifact {
248+ {
249+ Name : testPackageName ,
250+ Checksum : buildinfo.Checksum {
251+ Sha256 : sha256 ,
252+ },
253+ },
254+ },
255+ },
256+ },
257+ }
258+ servicesManager := getArtifactoryServicesManager (t )
259+ summary , err := servicesManager .PublishBuildInfo (buildInfo , "" )
260+ require .NoError (t , err )
261+ require .NotNil (t , summary )
262+ require .True (t , summary .IsSucceeded ())
263+
264+ testBuildName = buildName
265+ testBuildNumber = buildNumber
266+ }
267+
268+ func deleteBuild () {
269+ if testBuildName == "" {
270+ return
271+ }
272+
273+ err := artifactoryServicesManager .DeleteBuildInfo (& buildinfo.BuildInfo {Name : testBuildName , Number : testBuildNumber }, "" , 1 )
274+ if err != nil {
275+ log .Error ("Failed to delete build-info" , err )
276+ }
277+ }
278+
220279type packagesResponse struct {
221280 Packages []packageBinding `json:"packages"`
222281}
0 commit comments