Skip to content

Commit 8ef8b60

Browse files
committed
Add E2E tests
1 parent d498143 commit 8ef8b60

File tree

2 files changed

+64
-3
lines changed

2 files changed

+64
-3
lines changed

e2e/e2e_tests_runner.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ var (
3333
testPackageName string
3434
testPackageVersion string
3535
testPackagePath string
36+
testBuildName string
37+
testBuildNumber string
3638
)
3739

3840
func loadCredentials() {

e2e/e2e_tests_utils.go

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

132151
func 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+
220279
type packagesResponse struct {
221280
Packages []packageBinding `json:"packages"`
222281
}

0 commit comments

Comments
 (0)