diff --git a/api/v1alpha2/jenkins_webhook_test.go b/api/v1alpha2/jenkins_webhook_test.go index eb664ce7..1cf7a0c3 100644 --- a/api/v1alpha2/jenkins_webhook_test.go +++ b/api/v1alpha2/jenkins_webhook_test.go @@ -79,7 +79,7 @@ func TestValidate(t *testing.T) { t.Run("Validating when plugins data file is not fetched", func(t *testing.T) { userplugins := []Plugin{{Name: "script-security", Version: "1.77"}, {Name: "git-client", Version: "3.9"}, {Name: "git", Version: "4.8.1"}, {Name: "plain-credentials", Version: "1.7"}} jenkinscr := *createJenkinsCR(userplugins, true) - got := jenkinscr.ValidateCreate() + _, got := jenkinscr.ValidateCreate() assert.Equal(t, got, errors.New("plugins data has not been fetched")) }) @@ -95,7 +95,7 @@ func TestValidate(t *testing.T) { {Name: "plain-credentials"}}} userplugins := []Plugin{{Name: "script-security", Version: "1.77"}, {Name: "git-client", Version: "3.9"}, {Name: "git", Version: "4.8.1"}, {Name: "plain-credentials", Version: "1.7"}} jenkinscr := *createJenkinsCR(userplugins, true) - got := jenkinscr.ValidateCreate() + _, got := jenkinscr.ValidateCreate() assert.Nil(t, got) }) @@ -113,7 +113,7 @@ func TestValidate(t *testing.T) { }} userplugins := []Plugin{{Name: "google-login", Version: "1.2"}, {Name: "mailer", Version: "1.1"}, {Name: "git", Version: "4.8.1"}, {Name: "command-launcher", Version: "1.6"}, {Name: "workflow-cps", Version: "2.59"}} jenkinscr := *createJenkinsCR(userplugins, true) - got := jenkinscr.ValidateCreate() + _, got := jenkinscr.ValidateCreate() assert.Equal(t, got, errors.New("security vulnerabilities detected in the following user-defined plugins: \nworkflow-cps:2.59\ngoogle-login:1.2\nmailer:1.1")) }) @@ -136,19 +136,19 @@ func TestValidate(t *testing.T) { userplugins = []Plugin{{Name: "handy-uri-templates-2-api", Version: "2.1.8-1.0"}, {Name: "resource-disposer", Version: "0.8"}, {Name: "jjwt-api", Version: "0.11.2-9.c8b45b8bb173"}, {Name: "blueocean-github-pipeline", Version: "1.2.0-beta-3"}, {Name: "ghprb", Version: "1.39"}} newjenkinscr := *createJenkinsCR(userplugins, true) - got := newjenkinscr.ValidateUpdate(&oldjenkinscr) + _, got := newjenkinscr.ValidateUpdate(&oldjenkinscr) assert.Equal(t, got, errors.New("security vulnerabilities detected in the following user-defined plugins: \nhandy-uri-templates-2-api:2.1.8-1.0\nresource-disposer:0.8\nblueocean-github-pipeline:1.2.0-beta-3\nghprb:1.39")) }) t.Run("Validation is turned off", func(t *testing.T) { userplugins := []Plugin{{Name: "google-login", Version: "1.2"}, {Name: "mailer", Version: "1.1"}, {Name: "git", Version: "4.8.1"}, {Name: "command-launcher", Version: "1.6"}, {Name: "workflow-cps", Version: "2.59"}} jenkinscr := *createJenkinsCR(userplugins, false) - got := jenkinscr.ValidateCreate() + _, got := jenkinscr.ValidateCreate() assert.Nil(t, got) userplugins = []Plugin{{Name: "google-login", Version: "1.2"}, {Name: "mailer", Version: "1.1"}, {Name: "git", Version: "4.8.1"}, {Name: "command-launcher", Version: "1.6"}, {Name: "workflow-cps", Version: "2.59"}} newjenkinscr := *createJenkinsCR(userplugins, false) - got = newjenkinscr.ValidateUpdate(&jenkinscr) + _, got = newjenkinscr.ValidateUpdate(&jenkinscr) assert.Nil(t, got) }) } diff --git a/go.mod b/go.mod index 2cfa10a6..8ffbd936 100644 --- a/go.mod +++ b/go.mod @@ -105,4 +105,4 @@ require ( sigs.k8s.io/kustomize/kyaml v0.13.9 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect -) +) \ No newline at end of file diff --git a/go.sum b/go.sum index c1302c92..f3e1f3b4 100644 --- a/go.sum +++ b/go.sum @@ -393,4 +393,4 @@ sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= \ No newline at end of file diff --git a/internal/controller/handler.go b/internal/controller/handler.go index 497b3afa..f421dfad 100644 --- a/internal/controller/handler.go +++ b/internal/controller/handler.go @@ -1,6 +1,7 @@ package controllers import ( + "context" "fmt" "reflect" @@ -19,15 +20,15 @@ import ( // enqueueRequestForJenkins enqueues a Request for Secrets and ConfigMaps created by jenkins-operator. type enqueueRequestForJenkins struct{} -func (e *enqueueRequestForJenkins) Create(evt event.CreateEvent, q workqueue.RateLimitingInterface) { - if req := e.getOwnerReconcileRequests(evt.Object); req != nil { +func (e *enqueueRequestForJenkins) Create(ctx context.Context, evt event.CreateEvent, q workqueue.RateLimitingInterface) { + if req := e.getOwnerReconcileRequests(ctx, evt.Object); req != nil { q.Add(*req) } } -func (e *enqueueRequestForJenkins) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface) { - req1 := e.getOwnerReconcileRequests(evt.ObjectOld) - req2 := e.getOwnerReconcileRequests(evt.ObjectNew) +func (e *enqueueRequestForJenkins) Update(ctx context.Context, evt event.UpdateEvent, q workqueue.RateLimitingInterface) { + req1 := e.getOwnerReconcileRequests(ctx, evt.ObjectOld) + req2 := e.getOwnerReconcileRequests(ctx, evt.ObjectNew) if req1 != nil || req2 != nil { jenkinsName := "unknown" @@ -51,19 +52,19 @@ func (e *enqueueRequestForJenkins) Update(evt event.UpdateEvent, q workqueue.Rat } } -func (e *enqueueRequestForJenkins) Delete(evt event.DeleteEvent, q workqueue.RateLimitingInterface) { - if req := e.getOwnerReconcileRequests(evt.Object); req != nil { +func (e *enqueueRequestForJenkins) Delete(ctx context.Context, evt event.DeleteEvent, q workqueue.RateLimitingInterface) { + if req := e.getOwnerReconcileRequests(ctx, evt.Object); req != nil { q.Add(*req) } } -func (e *enqueueRequestForJenkins) Generic(evt event.GenericEvent, q workqueue.RateLimitingInterface) { - if req := e.getOwnerReconcileRequests(evt.Object); req != nil { +func (e *enqueueRequestForJenkins) Generic(ctx context.Context, evt event.GenericEvent, q workqueue.RateLimitingInterface) { + if req := e.getOwnerReconcileRequests(ctx, evt.Object); req != nil { q.Add(*req) } } -func (e *enqueueRequestForJenkins) getOwnerReconcileRequests(object metav1.Object) *reconcile.Request { +func (e *enqueueRequestForJenkins) getOwnerReconcileRequests(_ context.Context, object metav1.Object) *reconcile.Request { if object.GetLabels()[constants.LabelAppKey] == constants.LabelAppValue && object.GetLabels()[constants.LabelWatchKey] == constants.LabelWatchValue && len(object.GetLabels()[constants.LabelJenkinsCRKey]) > 0 { @@ -79,24 +80,24 @@ type jenkinsDecorator struct { handler handler.EventHandler } -func (e *jenkinsDecorator) Create(evt event.CreateEvent, q workqueue.RateLimitingInterface) { +func (e *jenkinsDecorator) Create(ctx context.Context, evt event.CreateEvent, q workqueue.RateLimitingInterface) { log.Log.WithValues("cr", evt.Object.GetName()).Info(fmt.Sprintf("%T/%s was created", evt.Object, evt.Object.GetName())) - e.handler.Create(evt, q) + e.handler.Create(ctx, evt, q) } -func (e *jenkinsDecorator) Update(evt event.UpdateEvent, q workqueue.RateLimitingInterface) { +func (e *jenkinsDecorator) Update(ctx context.Context, evt event.UpdateEvent, q workqueue.RateLimitingInterface) { if !reflect.DeepEqual(evt.ObjectOld.(*v1alpha2.Jenkins).Spec, evt.ObjectNew.(*v1alpha2.Jenkins).Spec) { log.Log.WithValues("cr", evt.ObjectNew.GetName()).Info( fmt.Sprintf("%T/%s has been updated", evt.ObjectNew, evt.ObjectNew.GetName())) } - e.handler.Update(evt, q) + e.handler.Update(ctx, evt, q) } -func (e *jenkinsDecorator) Delete(evt event.DeleteEvent, q workqueue.RateLimitingInterface) { +func (e *jenkinsDecorator) Delete(ctx context.Context, evt event.DeleteEvent, q workqueue.RateLimitingInterface) { log.Log.WithValues("cr", evt.Object.GetName()).Info(fmt.Sprintf("%T/%s was deleted", evt.Object, evt.Object.GetName())) - e.handler.Delete(evt, q) + e.handler.Delete(ctx, evt, q) } -func (e *jenkinsDecorator) Generic(evt event.GenericEvent, q workqueue.RateLimitingInterface) { - e.handler.Generic(evt, q) +func (e *jenkinsDecorator) Generic(ctx context.Context, evt event.GenericEvent, q workqueue.RateLimitingInterface) { + e.handler.Generic(ctx, evt, q) } diff --git a/internal/controller/jenkins_controller.go b/internal/controller/jenkins_controller.go index 7eb92454..4643d9b5 100644 --- a/internal/controller/jenkins_controller.go +++ b/internal/controller/jenkins_controller.go @@ -79,7 +79,8 @@ type JenkinsReconciler struct { // SetupWithManager sets up the controller with the Manager. func (r *JenkinsReconciler) SetupWithManager(mgr ctrl.Manager) error { jenkinsHandler := &enqueueRequestForJenkins{} - configMapResource := &source.Kind{Type: &corev1.ConfigMap{TypeMeta: metav1.TypeMeta{APIVersion: APIVersion, Kind: ConfigMapKind}}} + // configMapResource := &source.Kind{Type: &corev1.ConfigMap{TypeMeta: metav1.TypeMeta{APIVersion: APIVersion, Kind: ConfigMapKind}}} + configMapResource := source.Kind(mgr.GetCache(), internal.Kind()) secretResource := &source.Kind{Type: &corev1.Secret{TypeMeta: metav1.TypeMeta{APIVersion: APIVersion, Kind: SecretKind}}} decorator := jenkinsDecorator{handler: &handler.EnqueueRequestForObject{}} return ctrl.NewControllerManagedBy(mgr). diff --git a/pkg/notifications/smtp/smtp_test.go b/pkg/notifications/smtp/smtp_test.go index 2127263c..932f483a 100644 --- a/pkg/notifications/smtp/smtp_test.go +++ b/pkg/notifications/smtp/smtp_test.go @@ -169,8 +169,8 @@ func TestSMTP_Send(t *testing.T) { //ts := &testServer{event: e} // Create fake SMTP server - - s := smtp.NewServer() + be := *new(smtp.Backend) + s := smtp.NewServer(be) s.Addr = fmt.Sprintf(":%d", testSMTPPort) s.Domain = "localhost"