Skip to content

Commit 16ba99e

Browse files
committed
APP-1673 - Added e2e for updating draft version sources
1 parent fa03d38 commit 16ba99e

4 files changed

Lines changed: 108 additions & 2 deletions

File tree

e2e/utils/artifactory_utils.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package utils
55
import (
66
"fmt"
77
"net/http"
8+
"os"
89
"path/filepath"
910
"runtime"
1011
"strings"
@@ -33,6 +34,30 @@ func createNpmRepo(t *testing.T) string {
3334
return repoKey
3435
}
3536

37+
var genericRepoKey string
38+
39+
func createGenericRepo(t *testing.T) string {
40+
servicesManager := getArtifactoryServicesManager(t)
41+
genericRepoKey = GetTestProjectKey(t) + "-generic-local"
42+
localRepoConfig := services.NewGenericLocalRepositoryParams()
43+
localRepoConfig.ProjectKey = GetTestProjectKey(t)
44+
localRepoConfig.Key = genericRepoKey
45+
err := servicesManager.CreateLocalRepository().Generic(localRepoConfig)
46+
require.NoError(t, err)
47+
return genericRepoKey
48+
}
49+
50+
func deleteGenericRepo() {
51+
if genericRepoKey == "" || artifactoryServicesManager == nil {
52+
return
53+
}
54+
55+
err := artifactoryServicesManager.DeleteRepository(genericRepoKey)
56+
if err != nil {
57+
log.Error("Failed to delete generic repo", err)
58+
}
59+
}
60+
3661
func deleteNpmRepo() {
3762
if testPackageRes == nil || artifactoryServicesManager == nil {
3863
return
@@ -100,6 +125,31 @@ func uploadPackageToArtifactory(t *testing.T, repoKey, buildName, buildNumber st
100125
return artifactDetails.Checksums.Sha256
101126
}
102127

128+
func uploadSimpleFileToArtifactory(t *testing.T, repoKey, targetFileName string) string {
129+
tmpFile, err := os.CreateTemp("", "e2e-artifact-*.txt")
130+
require.NoError(t, err)
131+
_, err = tmpFile.WriteString("test-artifact-content")
132+
require.NoError(t, err)
133+
err = tmpFile.Close()
134+
require.NoError(t, err)
135+
defer os.Remove(tmpFile.Name())
136+
137+
targetPath := repoKey + "/" + targetFileName
138+
servicesManager := getArtifactoryServicesManager(t)
139+
uploadParams := services.NewUploadParams()
140+
uploadParams.Pattern = tmpFile.Name()
141+
uploadParams.Target = targetPath
142+
uploadParams.Flat = true
143+
summary, err := servicesManager.UploadFilesWithSummary(artifactory.UploadServiceOptions{FailFast: false}, uploadParams)
144+
require.NoError(t, err)
145+
require.Equal(t, 1, summary.TotalSucceeded, "Expected exactly one uploaded file")
146+
require.Equal(t, 0, summary.TotalFailed, "Expected zero failed uploads")
147+
err = summary.Close()
148+
require.NoError(t, err)
149+
150+
return targetPath
151+
}
152+
103153
func reindexRepo(t *testing.T, repoKey string) {
104154
log.Info(fmt.Sprintf("Reindexing repository %s", repoKey))
105155

e2e/utils/e2e_utils.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ var (
3737

3838
AppTrustCli *coreTests.JfrogCli
3939

40-
testProjectKey string
41-
testPackageRes *TestPackageResources
40+
testProjectKey string
41+
testPackageRes *TestPackageResources
42+
testArtifactPath string
4243
)
4344

4445
func LoadCredentials() string {
@@ -80,6 +81,14 @@ func GetTestPackage(t *testing.T) *TestPackageResources {
8081
return testPackageRes
8182
}
8283

84+
func GetTestArtifact(t *testing.T) string {
85+
if testArtifactPath == "" {
86+
repoKey := createGenericRepo(t)
87+
testArtifactPath = uploadSimpleFileToArtifactory(t, repoKey, "test-artifact.txt")
88+
}
89+
return testArtifactPath
90+
}
91+
8392
func GenerateUniqueKey(prefix string) string {
8493
timestamp := strconv.FormatInt(time.Now().Unix(), 10)
8594
return fmt.Sprintf("%s-%s", prefix, timestamp)

e2e/utils/project_utils.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ func DeleteTestProject() {
3232
}
3333
deleteBuild()
3434
deleteNpmRepo()
35+
deleteGenericRepo()
3536
accessManager, err := utils.CreateAccessServiceManager(serverDetails, false)
3637
if err != nil {
3738
log.Error("Failed to create Access service manager", err)

e2e/version_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"encoding/json"
77
"fmt"
88
"net/http"
9+
"strings"
910
"testing"
1011
"time"
1112

@@ -234,6 +235,51 @@ func TestUpdateVersion(t *testing.T) {
234235
assert.Equal(t, tag, versionContent.Tag)
235236
}
236237

238+
func TestUpdateDraftVersionSources(t *testing.T) {
239+
appKey := utils.GenerateUniqueKey("app-version-update-sources")
240+
utils.CreateBasicApplication(t, appKey)
241+
defer utils.DeleteApplication(t, appKey)
242+
testPackage := utils.GetTestPackage(t)
243+
version := "1.0.6"
244+
packageFlag := fmt.Sprintf("--source-type-packages=type=%s, name=%s, version=%s, repo-key=%s",
245+
testPackage.PackageType, testPackage.PackageName, testPackage.PackageVersion, testPackage.RepoKey)
246+
err := utils.AppTrustCli.Exec("version-create", appKey, version, packageFlag, "--draft")
247+
require.NoError(t, err)
248+
defer utils.DeleteApplicationVersion(t, appKey, version)
249+
artifactPath := utils.GetTestArtifact(t)
250+
artifactFlag := fmt.Sprintf("--source-type-artifacts=path=%s", artifactPath)
251+
252+
err = utils.AppTrustCli.Exec("version-update-sources", appKey, version, artifactFlag)
253+
require.NoError(t, err)
254+
255+
versionContent, statusCode, err := utils.GetApplicationVersion(appKey, version)
256+
require.NoError(t, err)
257+
assert.Equal(t, http.StatusOK, statusCode)
258+
require.NotNil(t, versionContent)
259+
assert.Equal(t, appKey, versionContent.ApplicationKey)
260+
assert.Equal(t, version, versionContent.Version)
261+
assert.Contains(t, utils.StatusDraft, versionContent.Status)
262+
var artifactPaths []string
263+
for _, r := range versionContent.Releasables {
264+
for _, a := range r.Artifacts {
265+
artifactPaths = append(artifactPaths, a.Path)
266+
}
267+
}
268+
assert.True(t, containsPath(artifactPaths, testPackage.PackagePath),
269+
"expected package path %q in version releasables (got %v)", testPackage.PackagePath, artifactPaths)
270+
assert.True(t, containsPath(artifactPaths, artifactPath),
271+
"expected artifact path %q in version releasables (got %v)", artifactPath, artifactPaths)
272+
}
273+
274+
func containsPath(paths []string, target string) bool {
275+
for _, path := range paths {
276+
if strings.Contains(target, path) {
277+
return true
278+
}
279+
}
280+
return false
281+
}
282+
237283
func TestDeleteVersion(t *testing.T) {
238284
// Prepare
239285
appKey := utils.GenerateUniqueKey("app-version-delete")

0 commit comments

Comments
 (0)