77 "testing"
88
99 "github.com/Masterminds/semver/v3"
10-
1110 "github.com/stretchr/testify/require"
1211)
1312
@@ -17,14 +16,55 @@ func mockFetchImageDetailsSuccess(_ string) ([]byte, error) {
1716 "imageTags": ["v1.0.0"]
1817 },
1918 {
20- "imageTags": ["v1.1.0"]
19+ "imageTags": ["v1.1.2"]
20+ },
21+ {
22+ "imageTags": ["v1.1.11"]
2123 },
2224 {
2325 "imageTags": ["v1.2.0"]
2426 }
2527 ]` ), nil
2628}
2729
30+ func mockFetchImageMixedDetailsSuccess (_ string ) ([]byte , error ) {
31+ return []byte (`[
32+ {
33+ "imageTags": ["alltools-0.0.1"]
34+ },
35+ {
36+ "imageTags": ["1.0.0"]
37+ },
38+ {
39+ "imageTags": ["0.5.0-alpha1"]
40+ },
41+ {
42+ "imageTags": ["0.5.0-alpha2"]
43+ },
44+ {
45+ "imageTags": ["1.0.0-alpha"]
46+ },
47+ {
48+ "imageTags": ["1.0.0-alpha.1"]
49+ },
50+ {
51+ "imageTags": ["1.0.0-alpha.2"]
52+ },
53+ {
54+ "imageTags": ["1.0.0-beta"]
55+ },
56+ {
57+ "imageTags": ["1.0.0-rc2"]
58+ },
59+ {
60+ "imageTags": ["1.0.0-rc1"]
61+ },
62+ {
63+ "imageTags": ["v1.1.2-alpha"]
64+ }
65+ ]` ), nil
66+ }
67+
2868func mockFetchImageDetailsError (_ string ) ([]byte , error ) {
2969 return nil , fmt .Errorf ("failed to describe images" )
3070}
@@ -33,7 +73,19 @@ func TestGetLatestImages(t *testing.T) {
3373 t .Run ("Success" , func (t * testing.T ) {
3474 images , err := getLatestImages (mockFetchImageDetailsSuccess , "test-repo" , "v1.*" , 2 , nil )
3575 require .NoError (t , err )
36- require .Equal (t , "test-repo:v1.2.0,test-repo:v1.1.0" , images )
76+ require .Equal (t , "test-repo:v1.2.0,test-repo:v1.1.11" , images )
77+ })
78+
79+ t .Run ("SuccessWithMixedVersionsWithoutFilter" , func (t * testing.T ) {
80+ images , err := getLatestImages (mockFetchImageMixedDetailsSuccess , "test-repo" , "" , 11 , nil )
81+ require .NoError (t , err )
82+ require .Equal (t , "test-repo:v1.1.2-alpha,test-repo:1.0.0,test-repo:1.0.0-rc2,test-repo:1.0.0-rc1,test-repo:1.0.0-beta,test-repo:1.0.0-alpha.2,test-repo:1.0.0-alpha.1,test-repo:1.0.0-alpha,test-repo:0.5.0-alpha2,test-repo:0.5.0-alpha1,test-repo:0.0.1" , images )
83+ })
84+
85+ t .Run ("SuccessWithMixedVersionsWithFilter" , func (t * testing.T ) {
86+ images , err := getLatestImages (mockFetchImageMixedDetailsSuccess , "test-repo" , "^1.*" , 4 , nil )
87+ require .NoError (t , err )
88+ require .Equal (t , "test-repo:1.0.0,test-repo:1.0.0-rc2,test-repo:1.0.0-rc1,test-repo:1.0.0-beta" , images )
3789 })
3890
3991 t .Run ("ErrorFetchingDetails" , func (t * testing.T ) {
@@ -51,15 +103,15 @@ func TestGetLatestImages(t *testing.T) {
51103 t .Run ("InsufficientTags" , func (t * testing.T ) {
52104 images , err := getLatestImages (mockFetchImageDetailsSuccess , "test-repo" , "v1.*" , 5 , nil )
53105 require .NoError (t , err )
54- require .Equal (t , "test-repo:v1.2.0,test-repo:v1.1.0 ,test-repo:v1.0.0" , images )
106+ require .Equal (t , "test-repo:v1.2.0,test-repo:v1.1.11,test-repo:v1.1.2 ,test-repo:v1.0.0" , images )
55107 })
56108
57109 t .Run ("WithConstraint" , func (t * testing.T ) {
58110 constraints , err := semver .NewConstraint ("<v1.2.0" )
59111 require .NoError (t , err )
60112 images , err := getLatestImages (mockFetchImageDetailsSuccess , "test-repo" , "v1.*" , 2 , constraints )
61113 require .NoError (t , err )
62- require .Equal (t , "test-repo:v1.1.0 ,test-repo:v1.0.0 " , images )
114+ require .Equal (t , "test-repo:v1.1.11 ,test-repo:v1.1.2 " , images )
63115 })
64116}
65117
0 commit comments