@@ -10,6 +10,7 @@ import (
1010 helmv2 "github.com/fluxcd/helm-controller/api/v2"
1111 sourcev1 "github.com/fluxcd/source-controller/api/v1"
1212 "github.com/go-logr/logr"
13+ "github.com/google/go-cmp/cmp"
1314 "github.com/stretchr/testify/assert"
1415 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1516 "k8s.io/apimachinery/pkg/util/sets"
@@ -21,7 +22,11 @@ import (
2122
2223var errBoom = errors .New ("boom" )
2324
24- const testLabelComponentName = "flux.juggler.test.io/component"
25+ const (
26+ testLabelComponentKey = "flux.juggler.test.io/component"
27+ testLabelManagedByKey = "flux.juggler.test.io/managedBy"
28+ testLabelManagedByValue = "flux.juggler.test.io/control-plane-operator"
29+ )
2530
2631func TestNewFluxReconciler (t * testing.T ) {
2732 fakeClient := fake .NewFakeClient ()
@@ -60,7 +65,13 @@ func TestNewFluxReconciler(t *testing.T) {
6065 for _ , tt := range tests {
6166 t .Run (tt .name , func (t * testing.T ) {
6267 actual := NewFluxReconciler (tt .logger , tt .localClient , tt .remoteClient , "" )
63- if ! assert .Equal (t , actual , tt .expected ) {
68+ diff := cmp .Diff (actual , tt .expected , cmp .Comparer (func (a , b FluxReconciler ) bool {
69+ return actual .localClient == tt .localClient &&
70+ actual .remoteClient == tt .remoteClient &&
71+ actual .logger == tt .logger &&
72+ actual .knownTypes .Equal (tt .expected .knownTypes )
73+ }))
74+ if ! assert .Empty (t , diff ) {
6475 t .Errorf ("NewReconciler() = %v, want %v" , actual , tt .expected )
6576 }
6677 })
@@ -364,7 +375,7 @@ func TestFluxReconciler_Observe(t *testing.T) {
364375 for _ , tt := range tests {
365376 t .Run (tt .name , func (t * testing.T ) {
366377
367- r := NewFluxReconciler (logr.Logger {}, fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (tt .localObjects ... ).Build (), nil , testLabelComponentName )
378+ r := NewFluxReconciler (logr.Logger {}, fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (tt .localObjects ... ).Build (), nil , testLabelComponentKey )
368379 actualObservation , actualError := r .Observe (context .TODO (), tt .obj )
369380 if ! assert .Equal (t , tt .expectedObservation , actualObservation ) {
370381 t .Errorf ("ObjectReconciler.Observe() = %v, want %v" , actualObservation , tt .expectedObservation )
@@ -616,7 +627,7 @@ func TestFluxReconciler_Uninstall(t *testing.T) {
616627 }
617628 for _ , tt := range tests {
618629 t .Run (tt .name , func (t * testing.T ) {
619- r := NewFluxReconciler (logr.Logger {}, fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (tt .localObjects ... ).Build (), nil , testLabelComponentName )
630+ r := NewFluxReconciler (logr.Logger {}, fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (tt .localObjects ... ).Build (), nil , testLabelComponentKey )
620631 actual := r .Uninstall (context .TODO (), tt .obj )
621632 if ! errors .Is (actual , tt .expected ) {
622633 t .Errorf ("ObjectReconciler.Uninstall() = %v, want %v" , actual , tt .expected )
@@ -630,6 +641,7 @@ func TestFluxReconciler_Install(t *testing.T) {
630641 name string
631642 obj juggler.Component
632643 validateFunc func (ctx context.Context , c client.Client , component juggler.Component ) error
644+ labelFunc juggler.LabelFunc
633645 expected error
634646 }{
635647 {
@@ -675,7 +687,7 @@ func TestFluxReconciler_Install(t *testing.T) {
675687 }
676688 if ! assert .Equal (t , helmRepo .GetLabels (), map [string ]string {
677689 "app.kubernetes.io/managed-by" : "control-plane-operator" ,
678- testLabelComponentName : component .GetName (),
690+ testLabelComponentKey : component .GetName (),
679691 }) {
680692 return errors .New ("labels not equal" )
681693 }
@@ -720,19 +732,78 @@ func TestFluxReconciler_Install(t *testing.T) {
720732 }
721733 if ! assert .Equal (t , helmRelease .GetLabels (), map [string ]string {
722734 "app.kubernetes.io/managed-by" : "control-plane-operator" ,
723- testLabelComponentName : component .GetName (),
735+ testLabelComponentKey : component .GetName (),
724736 }) {
725737 return errors .New ("labels not equal" )
726738 }
727739 return nil
728740 },
729741 expected : nil ,
730742 },
743+ {
744+ name : "FluxReconciler with custom label func - creation successful" ,
745+ labelFunc : func (comp juggler.Component ) map [string ]string {
746+ return map [string ]string {
747+ testLabelComponentKey : comp .GetName (),
748+ testLabelManagedByKey : testLabelManagedByValue ,
749+ }
750+ },
751+ obj : FakeFluxComponent {
752+ BuildSourceRepositoryFunc : func (ctx context.Context ) (SourceAdapter , error ) {
753+ return & HelmRepositoryAdapter {
754+ Source : & sourcev1.HelmRepository {
755+ ObjectMeta : metav1.ObjectMeta {
756+ Name : "test" ,
757+ Namespace : "default" ,
758+ },
759+ Spec : sourcev1.HelmRepositorySpec {
760+ URL : "test-url" ,
761+ },
762+ },
763+ }, nil
764+ },
765+ BuildManifestoFunc : func (ctx context.Context ) (Manifesto , error ) {
766+ return & HelmReleaseManifesto {
767+ Manifest : & helmv2.HelmRelease {
768+ ObjectMeta : metav1.ObjectMeta {
769+ Name : "test" ,
770+ Namespace : "default" ,
771+ },
772+ Spec : helmv2.HelmReleaseSpec {ReleaseName : "test-name" },
773+ },
774+ }, nil
775+ },
776+ GetNameFunc : "FakeFluxComponent" ,
777+ },
778+ validateFunc : func (ctx context.Context , c client.Client , component juggler.Component ) error {
779+ expectedLabels := map [string ]string {
780+ testLabelComponentKey : component .GetName (),
781+ testLabelManagedByKey : testLabelManagedByValue ,
782+ }
783+ helmRepository := & sourcev1.HelmRepository {}
784+ if err := c .Get (ctx , client.ObjectKey {Name : "test" , Namespace : "default" }, helmRepository ); err != nil {
785+ return err
786+ }
787+ if ! assert .Equal (t , helmRepository .GetLabels (), expectedLabels ) {
788+ return errors .New ("labels not equal" )
789+ }
790+ helmRelease := & helmv2.HelmRelease {}
791+ if err := c .Get (ctx , client.ObjectKey {Name : "test" , Namespace : "default" }, helmRelease ); err != nil {
792+ return err
793+ }
794+ if ! assert .Equal (t , helmRelease .GetLabels (), expectedLabels ) {
795+ return errors .New ("labels not equal" )
796+ }
797+ return nil
798+ },
799+ expected : nil ,
800+ },
731801 }
732802 for _ , tt := range tests {
733803 t .Run (tt .name , func (t * testing.T ) {
734804 fakeLocalClient := fake .NewClientBuilder ().WithScheme (scheme ).Build ()
735- r := NewFluxReconciler (logr.Logger {}, fakeLocalClient , nil , testLabelComponentName )
805+ r := NewFluxReconciler (logr.Logger {}, fakeLocalClient , nil , testLabelComponentKey ).
806+ WithLabelFunc (tt .labelFunc )
736807 ctx := context .TODO ()
737808 actual := r .Install (ctx , tt .obj )
738809
0 commit comments