Skip to content

Commit 9404225

Browse files
Updating test data and dependency for jf rbs command (#3163)
* Updating test data and dependency for jf rbs command * Removing lint errors
1 parent 1f2e9f2 commit 9404225

File tree

1 file changed

+297
-0
lines changed

1 file changed

+297
-0
lines changed

lifecycle_test.go

Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"os"
88
"path"
99
"path/filepath"
10+
"sort"
1011
"strconv"
1112
"strings"
1213
"testing"
@@ -749,6 +750,302 @@ func deleteReleaseBundleProperties(t *testing.T, lcManager *lifecycle.LifecycleS
749750
time.Sleep(5 * time.Second)
750751
}
751752

753+
func createRbIfDoesNotExists(t *testing.T, rbName, rbVersion string, lcManager *lifecycle.LifecycleServicesManager) {
754+
isExist, err := lcManager.IsReleaseBundleExist(rbName, rbVersion, "")
755+
assert.NoError(t, err)
756+
if isExist {
757+
return
758+
}
759+
createRbFromSpec(t, tests.LifecycleBuilds12, rbName, rbVersion, true, true)
760+
}
761+
762+
func TestReleaseBundlesSearchGroups(t *testing.T) {
763+
cleanCallback := initLifecycleTest(t, artifactoryLifecycleSetTagMinVersion)
764+
defer cleanCallback()
765+
766+
lcManager := getLcServiceManager(t)
767+
768+
deleteBuilds := uploadBuilds(t)
769+
defer deleteBuilds()
770+
771+
const rbPrefix = "my-awesome-app"
772+
const rbNameA = rbPrefix + "-alpha"
773+
const rbNameB = rbPrefix + "-beta"
774+
const rbNameC = rbPrefix + "-core"
775+
const rbNameD = "another-app"
776+
777+
const version1 = "1.0.0"
778+
779+
// Create Release Bundle A
780+
createRbIfDoesNotExists(t, rbNameA, version1, lcManager)
781+
defer deleteReleaseBundle(t, lcManager, rbNameA, version1)
782+
assertStatusCompleted(t, lcManager, rbNameA, version1, "")
783+
784+
// Create Release Bundle B
785+
createRbIfDoesNotExists(t, rbNameB, version1, lcManager)
786+
defer deleteReleaseBundle(t, lcManager, rbNameB, version1)
787+
assertStatusCompleted(t, lcManager, rbNameB, version1, "")
788+
789+
// Create Release Bundle C
790+
createRbIfDoesNotExists(t, rbNameC, version1, lcManager)
791+
defer deleteReleaseBundle(t, lcManager, rbNameC, version1)
792+
assertStatusCompleted(t, lcManager, rbNameC, version1, "")
793+
794+
// Create Release Bundle D (for filter/exclusion)
795+
createRbIfDoesNotExists(t, rbNameD, version1, lcManager)
796+
defer deleteReleaseBundle(t, lcManager, rbNameD, version1)
797+
assertStatusCompleted(t, lcManager, rbNameD, version1, "")
798+
799+
time.Sleep(3 * time.Second)
800+
801+
testCases := []struct {
802+
name string
803+
queryParams services.GetSearchOptionalQueryParams
804+
expectedRbNames []string
805+
expectedTotal int
806+
expectError bool
807+
errorMessage string
808+
}{
809+
{
810+
name: "No query params - all groups, default order",
811+
queryParams: services.GetSearchOptionalQueryParams{},
812+
expectedRbNames: []string{rbNameD, rbNameC, rbNameB, rbNameA},
813+
expectedTotal: 4,
814+
expectError: false,
815+
},
816+
{
817+
name: "Filter by prefix 'my-awesome-app'",
818+
queryParams: services.GetSearchOptionalQueryParams{
819+
FilterBy: rbPrefix + "*",
820+
},
821+
expectedRbNames: []string{rbNameC, rbNameB, rbNameA},
822+
expectedTotal: 3,
823+
expectError: false,
824+
},
825+
{
826+
name: "Filter by containing 'beta'",
827+
queryParams: services.GetSearchOptionalQueryParams{
828+
FilterBy: rbPrefix + "-beta",
829+
},
830+
expectedRbNames: []string{rbNameB},
831+
expectedTotal: 1,
832+
expectError: false,
833+
},
834+
{
835+
name: "Limit to 2 results",
836+
queryParams: services.GetSearchOptionalQueryParams{
837+
Limit: 2,
838+
},
839+
expectedTotal: 2,
840+
expectError: false,
841+
},
842+
{
843+
name: "Offset by 1, Limit to 2 results",
844+
queryParams: services.GetSearchOptionalQueryParams{
845+
Offset: 1,
846+
Limit: 2,
847+
},
848+
expectedTotal: 2,
849+
expectError: false,
850+
},
851+
{
852+
name: "Order by name Descending",
853+
queryParams: services.GetSearchOptionalQueryParams{
854+
OrderBy: "created",
855+
OrderAsc: false,
856+
},
857+
expectedRbNames: []string{rbNameD, rbNameC, rbNameB, rbNameA},
858+
expectedTotal: 4,
859+
expectError: false,
860+
},
861+
}
862+
863+
for _, tc := range testCases {
864+
t.Run(tc.name, func(t *testing.T) {
865+
resp, err := lcManager.ReleaseBundlesSearchGroup(tc.queryParams)
866+
if tc.expectError {
867+
assert.Error(t, err)
868+
if tc.errorMessage != "" {
869+
assert.Contains(t, err.Error(), tc.errorMessage)
870+
}
871+
return
872+
}
873+
assert.NoError(t, err, fmt.Sprintf("Expected no error for test case: %s", tc.name))
874+
if tc.queryParams.FilterBy != "" {
875+
assert.Equal(t, tc.expectedTotal, len(resp.ReleaseBundleSearchGroup), "Total count mismatch for filtered search")
876+
} else {
877+
assert.GreaterOrEqual(t, resp.Total, tc.expectedTotal, "Total count should be at least expected for unfiltered search")
878+
}
879+
var actualNames []string
880+
for _, rb := range resp.ReleaseBundleSearchGroup {
881+
actualNames = append(actualNames, rb.ReleaseBundleName)
882+
}
883+
if tc.queryParams.FilterBy != "" {
884+
assert.Equal(t, tc.expectedRbNames, actualNames, "Release bundle names order mismatch")
885+
} else {
886+
assert.Subset(t, actualNames, tc.expectedRbNames, "Actual names should contain all expected names")
887+
}
888+
})
889+
}
890+
}
891+
892+
func TestReleaseBundlesSearchVersions(t *testing.T) {
893+
cleanCallback := initLifecycleTest(t, artifactoryLifecycleSetTagMinVersion)
894+
defer cleanCallback()
895+
896+
lcManager := getLcServiceManager(t)
897+
898+
deleteBuilds := uploadBuilds(t)
899+
defer deleteBuilds()
900+
901+
const rbName = "my-versioned-app"
902+
const versionA = "1.0.0"
903+
const versionB = "1.0.1"
904+
const versionC = "1.1.0-rc"
905+
const versionD = "2.0.0"
906+
907+
createRbIfDoesNotExists(t, rbName, versionA, lcManager)
908+
defer deleteReleaseBundle(t, lcManager, rbName, versionA)
909+
assertStatusCompleted(t, lcManager, rbName, versionA, "")
910+
911+
time.Sleep(1 * time.Second)
912+
913+
createRbIfDoesNotExists(t, rbName, versionB, lcManager)
914+
defer deleteReleaseBundle(t, lcManager, rbName, versionB)
915+
assertStatusCompleted(t, lcManager, rbName, versionB, "")
916+
917+
time.Sleep(1 * time.Second)
918+
919+
createRbIfDoesNotExists(t, rbName, versionC, lcManager)
920+
defer deleteReleaseBundle(t, lcManager, rbName, versionC)
921+
assertStatusCompleted(t, lcManager, rbName, versionC, "")
922+
923+
time.Sleep(1 * time.Second)
924+
925+
createRbIfDoesNotExists(t, rbName, versionD, lcManager)
926+
defer deleteReleaseBundle(t, lcManager, rbName, versionD)
927+
assertStatusCompleted(t, lcManager, rbName, versionD, "")
928+
929+
log.Info("Created four versions for release bundle '%s' for search testing.", rbName)
930+
time.Sleep(3 * time.Second)
931+
932+
testCases := []struct {
933+
name string
934+
releaseBundleName string
935+
queryParams services.GetSearchOptionalQueryParams
936+
expectedRbVersions []string
937+
expectedTotal int
938+
expectError bool
939+
errorMessage string
940+
}{
941+
{
942+
name: "No query params - all versions, default order",
943+
releaseBundleName: rbName,
944+
queryParams: services.GetSearchOptionalQueryParams{},
945+
expectedRbVersions: []string{versionA, versionB, versionC, versionD},
946+
expectedTotal: 4,
947+
expectError: false,
948+
},
949+
{
950+
name: "Filter by prefix '1.0'",
951+
releaseBundleName: rbName,
952+
queryParams: services.GetSearchOptionalQueryParams{
953+
FilterBy: "1.0*",
954+
},
955+
expectedRbVersions: []string{versionA, versionB},
956+
expectedTotal: 2,
957+
expectError: false,
958+
},
959+
{
960+
name: "Filter by containing 'rc'",
961+
releaseBundleName: rbName,
962+
queryParams: services.GetSearchOptionalQueryParams{
963+
FilterBy: "1.1.0-rc*",
964+
},
965+
expectedRbVersions: []string{versionC},
966+
expectedTotal: 1,
967+
expectError: false,
968+
},
969+
{
970+
name: "Limit to 2 results, ordered by version ascending",
971+
releaseBundleName: rbName,
972+
queryParams: services.GetSearchOptionalQueryParams{
973+
Limit: 2,
974+
OrderBy: "release_bundle_version",
975+
OrderAsc: true,
976+
},
977+
expectedRbVersions: []string{versionA, versionB},
978+
expectedTotal: 2,
979+
expectError: false,
980+
},
981+
{
982+
name: "Offset by 2, Limit 1, ordered by version descending",
983+
releaseBundleName: rbName,
984+
queryParams: services.GetSearchOptionalQueryParams{
985+
Offset: 2,
986+
Limit: 1,
987+
OrderBy: "release_bundle_version",
988+
OrderAsc: false,
989+
},
990+
expectedRbVersions: []string{versionB},
991+
expectedTotal: 1,
992+
expectError: false,
993+
},
994+
{
995+
name: "Order by version Descending",
996+
releaseBundleName: rbName,
997+
queryParams: services.GetSearchOptionalQueryParams{
998+
OrderBy: "release_bundle_version",
999+
OrderAsc: false,
1000+
},
1001+
expectedRbVersions: []string{versionD, versionC, versionB, versionA},
1002+
expectedTotal: 4,
1003+
expectError: false,
1004+
},
1005+
{
1006+
name: "Order by created Ascending",
1007+
releaseBundleName: rbName,
1008+
queryParams: services.GetSearchOptionalQueryParams{
1009+
OrderBy: "created",
1010+
OrderAsc: true,
1011+
},
1012+
expectedRbVersions: []string{versionA, versionC, versionB, versionD},
1013+
expectedTotal: 4,
1014+
expectError: false,
1015+
},
1016+
}
1017+
1018+
for _, tc := range testCases {
1019+
t.Run(tc.name, func(t *testing.T) {
1020+
var resp services.ReleaseBundleVersionsResponse
1021+
var err error
1022+
resp, err = lcManager.ReleaseBundlesSearchVersions(tc.releaseBundleName, tc.queryParams)
1023+
if tc.expectError {
1024+
assert.Error(t, err)
1025+
if tc.errorMessage != "" {
1026+
assert.Contains(t, err.Error(), tc.errorMessage)
1027+
}
1028+
return
1029+
}
1030+
if tc.queryParams.FilterBy != "" {
1031+
assert.Equal(t, tc.expectedTotal, len(resp.ReleaseBundles), "Total count mismatch for filtered search")
1032+
} else {
1033+
assert.GreaterOrEqual(t, resp.Total, tc.expectedTotal, "Total count should be at least expected for unfiltered search")
1034+
}
1035+
var actualVersions []string
1036+
for _, rb := range resp.ReleaseBundles {
1037+
actualVersions = append(actualVersions, rb.ReleaseBundleVersion)
1038+
}
1039+
if tc.queryParams.FilterBy != "" {
1040+
sort.Strings(actualVersions)
1041+
assert.Equal(t, tc.expectedRbVersions, actualVersions, "Release bundle versions order mismatch")
1042+
} else {
1043+
assert.Subset(t, actualVersions, tc.expectedRbVersions, "Actual names should contain all expected names")
1044+
}
1045+
})
1046+
}
1047+
}
1048+
7521049
func setReleaseBundleTag(t *testing.T, lcManager *lifecycle.LifecycleServicesManager, rbName, rbVersion,
7531050
projectKey, tag string,
7541051
) {

0 commit comments

Comments
 (0)