@@ -21,6 +21,7 @@ import (
2121 "encoding/json"
2222 "testing"
2323
24+ "github.com/tektoncd/operator/pkg/reconciler/kubernetes/tektonpruner"
2425 v1 "k8s.io/api/core/v1"
2526 k8sFake "k8s.io/client-go/kubernetes/fake"
2627
@@ -131,6 +132,69 @@ func TestUpgradePipelineProperties(t *testing.T) {
131132 }
132133}
133134
135+ func TestPreUpgradeTektonPruner (t * testing.T ) {
136+ ctx := context .TODO ()
137+ operatorClient := operatorFake .NewSimpleClientset ()
138+ k8sClient := k8sFake .NewSimpleClientset ()
139+ logger := logging .FromContext (ctx ).Named ("unit-test" )
140+
141+ // there is no tektonConfig CR available, returns error
142+ err := preUpgradeTektonPruner (ctx , logger , k8sClient , operatorClient , nil )
143+ assert .Error (t , err )
144+
145+ // create tekconConfig CR
146+ tc := & v1alpha1.TektonConfig {
147+ ObjectMeta : metav1.ObjectMeta {
148+ Name : v1alpha1 .ConfigResourceName ,
149+ },
150+ Spec : v1alpha1.TektonConfigSpec {
151+ CommonSpec : v1alpha1.CommonSpec {
152+ TargetNamespace : "foo" ,
153+ },
154+ TektonPruner : v1alpha1.Pruner {
155+ Disabled : ptr .Bool (false ),
156+ },
157+ },
158+ }
159+ _ , err = operatorClient .OperatorV1alpha1 ().TektonConfigs ().Create (ctx , tc , metav1.CreateOptions {})
160+ assert .NoError (t , err )
161+
162+ // there is no tekton-config configMap, return no error
163+ err = preUpgradeTektonPruner (ctx , logger , k8sClient , operatorClient , nil )
164+ assert .NoError (t , err )
165+
166+ // verify chains existing field, should not be empty
167+ tc , err = operatorClient .OperatorV1alpha1 ().TektonConfigs ().Get (ctx , v1alpha1 .ConfigResourceName , metav1.GetOptions {})
168+ assert .NoError (t , err )
169+ assert .Equal (t , false , * tc .Spec .TektonPruner .Disabled )
170+
171+ // create a config map with values
172+ config := & v1.ConfigMap {
173+ ObjectMeta : metav1.ObjectMeta {
174+ Name : tektonpruner .PrunerConfigMapName ,
175+ Namespace : tc .Spec .GetTargetNamespace (),
176+ },
177+ Data : map [string ]string {
178+ "global-config" : "enforcedConfigLevel: global\n ttlSecondsAfterFinished: 88\n successfulHistoryLimit: 400\n failedHistoryLimit: 10\n historyLimit: 10\n namespaces: {}\n " ,
179+ },
180+ }
181+ _ , err = k8sClient .CoreV1 ().ConfigMaps (tc .Spec .GetTargetNamespace ()).Create (ctx , config , metav1.CreateOptions {})
182+ assert .NoError (t , err )
183+
184+ cm , _ := k8sClient .CoreV1 ().ConfigMaps (tc .Spec .GetTargetNamespace ()).Get (ctx , tektonpruner .PrunerConfigMapName , metav1.GetOptions {})
185+ assert .NotNil (t , cm .Data )
186+
187+ // execute chains upgrade
188+ err = preUpgradeTektonPruner (ctx , logger , k8sClient , operatorClient , nil )
189+ assert .NoError (t , err )
190+
191+ // verify chains with new configMap, map values should be updated
192+ tc , err = operatorClient .OperatorV1alpha1 ().TektonConfigs ().Get (ctx , v1alpha1 .ConfigResourceName , metav1.GetOptions {})
193+ assert .NoError (t , err )
194+ assert .Equal (t , false , * tc .Spec .TektonPruner .Disabled )
195+ assert .Equal (t , int32 (88 ), * tc .Spec .TektonPruner .GlobalConfig .TTLSecondsAfterFinished )
196+ }
197+
134198func TestPreUpgradePipelinesAsCodeArtifacts (t * testing.T ) {
135199 t .Setenv ("PLATFORM" , "openshift" )
136200
0 commit comments