55 "errors"
66 "fmt"
77 "io/fs"
8+ "strings"
89 "testing"
910 "testing/fstest"
1011
@@ -36,8 +37,25 @@ func Test_SimpleRevisionGenerator_GenerateRevisionFromHelmRelease(t *testing.T)
3637 g := & applier.SimpleRevisionGenerator {}
3738
3839 helmRelease := & release.Release {
39- Name : "test-123" ,
40- Manifest : `{"apiVersion":"v1","kind":"ConfigMap"}` + "\n " + `{"apiVersion":"v1","kind":"Secret"}` + "\n " ,
40+ Name : "test-123" ,
41+ Manifest : strings .Join (strings .Fields (`
42+ {
43+ "apiVersion":"v1",
44+ "kind":"ConfigMap",
45+ "metadata":{
46+ "finalizers":["test"],
47+ "ownerReferences":[{"kind":"TestOwner"}],
48+ "creationTimestamp":{"time":"0"},
49+ "uid":"1a2b3c4d",
50+ "resourceVersion":"12345",
51+ "generation":123,
52+ "managedFields":[{"manager":"test-manager"}],
53+ "deletionTimestamp":{"time":"0"},
54+ "deletionGracePeriodSeconds":30,
55+ }, "status": {
56+ "replicas": 3,
57+ }
58+ }` ), "" ) + "\n " + `{"apiVersion":"v1","kind":"Secret"}` + "\n " ,
4159 Labels : map [string ]string {
4260 labels .BundleNameKey : "my-bundle" ,
4361 labels .PackageNameKey : "my-package" ,
@@ -56,7 +74,7 @@ func Test_SimpleRevisionGenerator_GenerateRevisionFromHelmRelease(t *testing.T)
5674 "my-label" : "my-value" ,
5775 }
5876
59- rev , err := g .GenerateRevisionFromHelmRelease (helmRelease , ext , objectLabels )
77+ rev , err := g .GenerateRevisionFromHelmRelease (t . Context (), helmRelease , ext , objectLabels )
6078 require .NoError (t , err )
6179
6280 assert .Equal (t , & ocv1.ClusterExtensionRevision {
@@ -124,7 +142,22 @@ func Test_SimpleRevisionGenerator_GenerateRevision(t *testing.T) {
124142 },
125143 & appsv1.Deployment {
126144 ObjectMeta : metav1.ObjectMeta {
127- Name : "test-deployment" ,
145+ Name : "test-deployment" ,
146+ Namespace : "test-ns" ,
147+ Labels : map [string ]string {"my-label" : "my-label-value" },
148+ Annotations : map [string ]string {"my-annotation" : "my-annotation-value" },
149+ // Fields to be sanitized
150+ Finalizers : []string {"test" },
151+ OwnerReferences : []metav1.OwnerReference {{Kind : "TestOwner" }},
152+ CreationTimestamp : metav1.Time {Time : metav1 .Now ().Time },
153+ UID : "1a2b3c4d" ,
154+ ResourceVersion : "12345" ,
155+ Generation : 123 ,
156+ ManagedFields : []metav1.ManagedFieldsEntry {{Manager : "test-manager" }},
157+ DeletionTimestamp : & metav1.Time {Time : metav1 .Now ().Time },
158+ DeletionGracePeriodSeconds : func (i int64 ) * int64 { return & i }(30 ),
159+ }, Status : appsv1.DeploymentStatus {
160+ Replicas : 3 ,
128161 },
129162 },
130163 }, nil
@@ -142,15 +175,13 @@ func Test_SimpleRevisionGenerator_GenerateRevision(t *testing.T) {
142175 },
143176 }
144177
145- rev , err := b .GenerateRevision (fstest.MapFS {}, ext , map [string ]string {}, map [string ]string {})
178+ rev , err := b .GenerateRevision (t . Context (), fstest.MapFS {}, ext , map [string ]string {}, map [string ]string {})
146179 require .NoError (t , err )
147180
148181 t .Log ("by checking the olm.operatorframework.io/owner label is set to the name of the ClusterExtension" )
149182 require .Equal (t , map [string ]string {
150183 controllers .ClusterExtensionRevisionOwnerLabel : "test-extension" ,
151184 }, rev .Labels )
152- t .Log ("by checking there are no annotations" )
153- require .Empty (t , rev .Annotations )
154185 t .Log ("by checking the revision number is 0" )
155186 require .Equal (t , int64 (0 ), rev .Spec .Revision )
156187 t .Log ("by checking the rendered objects are present in the correct phases" )
@@ -167,9 +198,6 @@ func Test_SimpleRevisionGenerator_GenerateRevision(t *testing.T) {
167198 "name" : "test-service" ,
168199 },
169200 "spec" : map [string ]interface {}{},
170- "status" : map [string ]interface {}{
171- "loadBalancer" : map [string ]interface {}{},
172- },
173201 },
174202 },
175203 },
@@ -179,7 +207,14 @@ func Test_SimpleRevisionGenerator_GenerateRevision(t *testing.T) {
179207 "apiVersion" : "apps/v1" ,
180208 "kind" : "Deployment" ,
181209 "metadata" : map [string ]interface {}{
182- "name" : "test-deployment" ,
210+ "name" : "test-deployment" ,
211+ "namespace" : "test-ns" ,
212+ "labels" : map [string ]interface {}{
213+ "my-label" : "my-label-value" ,
214+ },
215+ "annotations" : map [string ]interface {}{
216+ "my-annotation" : "my-annotation-value" ,
217+ },
183218 },
184219 "spec" : map [string ]interface {}{
185220 "selector" : nil ,
@@ -191,7 +226,6 @@ func Test_SimpleRevisionGenerator_GenerateRevision(t *testing.T) {
191226 },
192227 "strategy" : map [string ]interface {}{},
193228 },
194- "status" : map [string ]interface {}{},
195229 },
196230 },
197231 },
@@ -220,7 +254,7 @@ func Test_SimpleRevisionGenerator_Renderer_Integration(t *testing.T) {
220254 ManifestProvider : r ,
221255 }
222256
223- _ , err := b .GenerateRevision (bundleFS , ext , map [string ]string {}, map [string ]string {})
257+ _ , err := b .GenerateRevision (t . Context (), bundleFS , ext , map [string ]string {}, map [string ]string {})
224258 require .NoError (t , err )
225259}
226260
@@ -258,7 +292,7 @@ func Test_SimpleRevisionGenerator_AppliesObjectLabelsAndRevisionAnnotations(t *t
258292 "other" : "value" ,
259293 }
260294
261- rev , err := b .GenerateRevision (fstest.MapFS {}, & ocv1.ClusterExtension {}, map [string ]string {
295+ rev , err := b .GenerateRevision (t . Context (), fstest.MapFS {}, & ocv1.ClusterExtension {}, map [string ]string {
262296 "some" : "value" ,
263297 }, revAnnotations )
264298 require .NoError (t , err )
@@ -286,7 +320,7 @@ func Test_SimpleRevisionGenerator_Failure(t *testing.T) {
286320 ManifestProvider : r ,
287321 }
288322
289- rev , err := b .GenerateRevision (fstest.MapFS {}, & ocv1.ClusterExtension {}, map [string ]string {}, map [string ]string {})
323+ rev , err := b .GenerateRevision (t . Context (), fstest.MapFS {}, & ocv1.ClusterExtension {}, map [string ]string {}, map [string ]string {})
290324 require .Nil (t , rev )
291325 t .Log ("by checking rendering errors are propagated" )
292326 require .Error (t , err )
@@ -363,7 +397,7 @@ func TestBoxcutter_Apply(t *testing.T) {
363397 {
364398 name : "first revision" ,
365399 mockBuilder : & mockBundleRevisionBuilder {
366- makeRevisionFunc : func (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
400+ makeRevisionFunc : func (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
367401 return & ocv1.ClusterExtensionRevision {
368402 ObjectMeta : metav1.ObjectMeta {
369403 Annotations : revisionAnnotations ,
@@ -411,7 +445,7 @@ func TestBoxcutter_Apply(t *testing.T) {
411445 {
412446 name : "no change, revision exists" ,
413447 mockBuilder : & mockBundleRevisionBuilder {
414- makeRevisionFunc : func (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
448+ makeRevisionFunc : func (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
415449 return & ocv1.ClusterExtensionRevision {
416450 ObjectMeta : metav1.ObjectMeta {
417451 Annotations : revisionAnnotations ,
@@ -457,7 +491,7 @@ func TestBoxcutter_Apply(t *testing.T) {
457491 {
458492 name : "new revision created when objects in new revision are different" ,
459493 mockBuilder : & mockBundleRevisionBuilder {
460- makeRevisionFunc : func (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
494+ makeRevisionFunc : func (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
461495 return & ocv1.ClusterExtensionRevision {
462496 ObjectMeta : metav1.ObjectMeta {
463497 Annotations : revisionAnnotations ,
@@ -518,7 +552,7 @@ func TestBoxcutter_Apply(t *testing.T) {
518552 {
519553 name : "error from GenerateRevision" ,
520554 mockBuilder : & mockBundleRevisionBuilder {
521- makeRevisionFunc : func (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
555+ makeRevisionFunc : func (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
522556 return nil , errors .New ("render boom" )
523557 },
524558 },
@@ -534,7 +568,7 @@ func TestBoxcutter_Apply(t *testing.T) {
534568 {
535569 name : "keep at most 5 past revisions" ,
536570 mockBuilder : & mockBundleRevisionBuilder {
537- makeRevisionFunc : func (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
571+ makeRevisionFunc : func (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
538572 return & ocv1.ClusterExtensionRevision {
539573 ObjectMeta : metav1.ObjectMeta {
540574 Annotations : revisionAnnotations ,
@@ -636,7 +670,7 @@ func TestBoxcutter_Apply(t *testing.T) {
636670 {
637671 name : "keep active revisions when they are out of limit" ,
638672 mockBuilder : & mockBundleRevisionBuilder {
639- makeRevisionFunc : func (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
673+ makeRevisionFunc : func (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
640674 return & ocv1.ClusterExtensionRevision {
641675 ObjectMeta : metav1.ObjectMeta {
642676 Annotations : revisionAnnotations ,
@@ -894,14 +928,15 @@ func TestBoxcutterStorageMigrator(t *testing.T) {
894928
895929// mockBundleRevisionBuilder is a mock implementation of the ClusterExtensionRevisionGenerator for testing.
896930type mockBundleRevisionBuilder struct {
897- makeRevisionFunc func (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotation map [string ]string ) (* ocv1.ClusterExtensionRevision , error )
931+ makeRevisionFunc func (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotation map [string ]string ) (* ocv1.ClusterExtensionRevision , error )
898932}
899933
900- func (m * mockBundleRevisionBuilder ) GenerateRevision (bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
901- return m .makeRevisionFunc (bundleFS , ext , objectLabels , revisionAnnotations )
934+ func (m * mockBundleRevisionBuilder ) GenerateRevision (ctx context. Context , bundleFS fs.FS , ext * ocv1.ClusterExtension , objectLabels , revisionAnnotations map [string ]string ) (* ocv1.ClusterExtensionRevision , error ) {
935+ return m .makeRevisionFunc (ctx , bundleFS , ext , objectLabels , revisionAnnotations )
902936}
903937
904938func (m * mockBundleRevisionBuilder ) GenerateRevisionFromHelmRelease (
939+ ctx context.Context ,
905940 helmRelease * release.Release , ext * ocv1.ClusterExtension ,
906941 objectLabels map [string ]string ,
907942) (* ocv1.ClusterExtensionRevision , error ) {
0 commit comments