99 "github.com/openshift/machine-config-operator/pkg/controller/common"
1010 "github.com/stretchr/testify/assert"
1111 "github.com/stretchr/testify/require"
12+ apierrors "k8s.io/apimachinery/pkg/api/errors"
1213 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1314)
1415
@@ -49,8 +50,8 @@ func TestGetStreamSetsNames(t *testing.T) {
4950 }
5051}
5152
52- func TestGetOSImageStreamSetByName ( t * testing. T ) {
53- osImageStream := & v1alpha1.OSImageStream {
53+ func getStubOSImageStream () * v1alpha1. OSImageStream {
54+ return & v1alpha1.OSImageStream {
5455 Status : v1alpha1.OSImageStreamStatus {
5556 DefaultStream : "rhel-9" ,
5657 AvailableStreams : []v1alpha1.OSImageStreamSet {
@@ -59,53 +60,67 @@ func TestGetOSImageStreamSetByName(t *testing.T) {
5960 },
6061 },
6162 }
63+ }
6264
65+ func TestGetOSImageStreamSetByName (t * testing.T ) {
6366 tests := []struct {
64- name string
65- osImageStream * v1alpha1.OSImageStream
66- streamName string
67- expected * v1alpha1.OSImageStreamSet
68- errorContains string
67+ name string
68+ osImageStreamFactory func () * v1alpha1.OSImageStream
69+ streamName string
70+ expected * v1alpha1.OSImageStreamSet
71+ errorContains string
72+ errorCheckFn func (* testing.T , error )
6973 }{
7074 {
71- name : "find existing stream" ,
72- osImageStream : osImageStream ,
73- streamName : "rhel-9" ,
74- expected : & v1alpha1.OSImageStreamSet {Name : "rhel-9" , OSImage : "image1" , OSExtensionsImage : "ext1" },
75+ name : "find existing stream" ,
76+ osImageStreamFactory : getStubOSImageStream ,
77+ streamName : "rhel-9" ,
78+ expected : & v1alpha1.OSImageStreamSet {Name : "rhel-9" , OSImage : "image1" , OSExtensionsImage : "ext1" },
7579 },
7680 {
77- name : "find another existing stream" ,
78- osImageStream : osImageStream ,
79- streamName : "rhel-10" ,
80- expected : & v1alpha1.OSImageStreamSet {Name : "rhel-10" , OSImage : "image2" , OSExtensionsImage : "ext2" },
81+ name : "find another existing stream" ,
82+ osImageStreamFactory : getStubOSImageStream ,
83+ streamName : "rhel-10" ,
84+ expected : & v1alpha1.OSImageStreamSet {Name : "rhel-10" , OSImage : "image2" , OSExtensionsImage : "ext2" },
8185 },
8286 {
83- name : "empty name returns default stream" ,
84- osImageStream : osImageStream ,
85- streamName : "" ,
86- expected : & v1alpha1.OSImageStreamSet {Name : "rhel-9" , OSImage : "image1" , OSExtensionsImage : "ext1" },
87+ name : "empty name returns default stream" ,
88+ osImageStreamFactory : getStubOSImageStream ,
89+ streamName : "" ,
90+ expected : & v1alpha1.OSImageStreamSet {Name : "rhel-9" , OSImage : "image1" , OSExtensionsImage : "ext1" },
8791 },
8892 {
89- name : "non-existent stream" ,
90- osImageStream : osImageStream ,
91- streamName : "non-existent" ,
92- errorContains : "does not exist" ,
93+ name : "non-existent stream" ,
94+ osImageStreamFactory : getStubOSImageStream ,
95+ streamName : "non-existent" ,
96+ errorContains : "not found" ,
97+ errorCheckFn : func (t * testing.T , err error ) {
98+ assert .True (t , apierrors .IsNotFound (err ))
99+ },
93100 },
94101 {
95- name : "nil osImageStream" ,
96- osImageStream : nil ,
97- streamName : "rhel-9" ,
98- errorContains : "cannot be nil" ,
102+ name : "nil osImageStream" ,
103+ osImageStreamFactory : nil ,
104+ streamName : "rhel-9" ,
105+ errorContains : "cannot be nil" ,
99106 },
100107 }
101108
102109 for _ , tt := range tests {
103110 t .Run (tt .name , func (t * testing.T ) {
104- result , err := GetOSImageStreamSetByName (tt .osImageStream , tt .streamName )
111+ var osImageStream * v1alpha1.OSImageStream
112+ if tt .osImageStreamFactory != nil {
113+ osImageStream = tt .osImageStreamFactory ()
114+ }
115+
116+ result , err := GetOSImageStreamSetByName (osImageStream , tt .streamName )
105117 if tt .errorContains != "" {
106118 require .Error (t , err )
107119 assert .Contains (t , err .Error (), tt .errorContains )
108120 assert .Nil (t , result )
121+ if tt .errorCheckFn != nil {
122+ tt .errorCheckFn (t , err )
123+ }
109124 } else {
110125 require .NoError (t , err )
111126 assert .Equal (t , tt .expected , result )
@@ -115,45 +130,40 @@ func TestGetOSImageStreamSetByName(t *testing.T) {
115130}
116131
117132func TestTryGetOSImageStreamSetByName (t * testing.T ) {
118- osImageStream := & v1alpha1.OSImageStream {
119- Status : v1alpha1.OSImageStreamStatus {
120- DefaultStream : "rhel-9" ,
121- AvailableStreams : []v1alpha1.OSImageStreamSet {
122- {Name : "rhel-9" , OSImage : "image1" , OSExtensionsImage : "ext1" },
123- {Name : "rhel-10" , OSImage : "image2" , OSExtensionsImage : "ext2" },
124- },
125- },
126- }
127133
128134 tests := []struct {
129- name string
130- osImageStream * v1alpha1.OSImageStream
131- streamName string
132- expected * v1alpha1.OSImageStreamSet
135+ name string
136+ osImageStreamFactory func () * v1alpha1.OSImageStream
137+ streamName string
138+ expected * v1alpha1.OSImageStreamSet
133139 }{
134140 {
135- name : "find existing stream" ,
136- osImageStream : osImageStream ,
137- streamName : "rhel-9" ,
138- expected : & v1alpha1.OSImageStreamSet {Name : "rhel-9" , OSImage : "image1" , OSExtensionsImage : "ext1" },
141+ name : "find existing stream" ,
142+ osImageStreamFactory : getStubOSImageStream ,
143+ streamName : "rhel-9" ,
144+ expected : & v1alpha1.OSImageStreamSet {Name : "rhel-9" , OSImage : "image1" , OSExtensionsImage : "ext1" },
139145 },
140146 {
141- name : "non-existent stream returns nil" ,
142- osImageStream : osImageStream ,
143- streamName : "non-existent" ,
144- expected : nil ,
147+ name : "non-existent stream returns nil" ,
148+ osImageStreamFactory : getStubOSImageStream ,
149+ streamName : "non-existent" ,
150+ expected : nil ,
145151 },
146152 {
147- name : "nil osImageStream returns nil" ,
148- osImageStream : nil ,
149- streamName : "rhel-9" ,
150- expected : nil ,
153+ name : "nil osImageStream returns nil" ,
154+ osImageStreamFactory : nil ,
155+ streamName : "rhel-9" ,
156+ expected : nil ,
151157 },
152158 }
153159
154160 for _ , tt := range tests {
155161 t .Run (tt .name , func (t * testing.T ) {
156- result := TryGetOSImageStreamSetByName (tt .osImageStream , tt .streamName )
162+ var osImageStream * v1alpha1.OSImageStream
163+ if tt .osImageStreamFactory != nil {
164+ osImageStream = tt .osImageStreamFactory ()
165+ }
166+ result := TryGetOSImageStreamSetByName (osImageStream , tt .streamName )
157167 assert .Equal (t , tt .expected , result )
158168 })
159169 }
0 commit comments