117 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| package base
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"testing"
 | |
| 
 | |
| 	virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1"
 | |
| 	"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"k8s.io/client-go/kubernetes/scheme"
 | |
| 	"sigs.k8s.io/controller-runtime/pkg/client/fake"
 | |
| 	"sigs.k8s.io/controller-runtime/pkg/reconcile"
 | |
| 	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
 | |
| )
 | |
| 
 | |
| func TestReconcileJenkinsBaseConfiguration_ensurePluginsRequiredByAllBackupProviders(t *testing.T) {
 | |
| 	tests := []struct {
 | |
| 		name            string
 | |
| 		jenkins         *virtuslabv1alpha1.Jenkins
 | |
| 		requiredPlugins map[string][]plugins.Plugin
 | |
| 		want            reconcile.Result
 | |
| 		wantErr         bool
 | |
| 	}{
 | |
| 		{
 | |
| 			name: "happy, no required plugins",
 | |
| 			jenkins: &virtuslabv1alpha1.Jenkins{
 | |
| 				Spec: virtuslabv1alpha1.JenkinsSpec{
 | |
| 					Master: virtuslabv1alpha1.JenkinsMaster{
 | |
| 						Plugins: map[string][]string{
 | |
| 							"first-plugin:0.0.1": {"second-plugin:0.0.1"},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			want:    reconcile.Result{Requeue: false},
 | |
| 			wantErr: false,
 | |
| 		},
 | |
| 		{
 | |
| 			name: "happy, required plugins are set",
 | |
| 			jenkins: &virtuslabv1alpha1.Jenkins{
 | |
| 				Spec: virtuslabv1alpha1.JenkinsSpec{
 | |
| 					Master: virtuslabv1alpha1.JenkinsMaster{
 | |
| 						Plugins: map[string][]string{
 | |
| 							"first-plugin:0.0.1": {"second-plugin:0.0.1"},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			requiredPlugins: map[string][]plugins.Plugin{
 | |
| 				"first-plugin:0.0.1": {plugins.Must(plugins.New("second-plugin:0.0.1"))},
 | |
| 			},
 | |
| 			want:    reconcile.Result{Requeue: false},
 | |
| 			wantErr: false,
 | |
| 		},
 | |
| 		{
 | |
| 			name: "happy, jenkins CR must be updated",
 | |
| 			jenkins: &virtuslabv1alpha1.Jenkins{
 | |
| 				Spec: virtuslabv1alpha1.JenkinsSpec{
 | |
| 					Master: virtuslabv1alpha1.JenkinsMaster{
 | |
| 						Plugins: map[string][]string{
 | |
| 							"first-plugin:0.0.1": {"second-plugin:0.0.1"},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			requiredPlugins: map[string][]plugins.Plugin{
 | |
| 				"first-plugin:0.0.1": {plugins.Must(plugins.New("second-plugin:0.0.1"))},
 | |
| 				"third-plugin:0.0.1": {},
 | |
| 			},
 | |
| 			want:    reconcile.Result{Requeue: true},
 | |
| 			wantErr: false,
 | |
| 		},
 | |
| 		{
 | |
| 			name: "happy, jenkins CR must be updated",
 | |
| 			jenkins: &virtuslabv1alpha1.Jenkins{
 | |
| 				Spec: virtuslabv1alpha1.JenkinsSpec{
 | |
| 					Master: virtuslabv1alpha1.JenkinsMaster{
 | |
| 						Plugins: map[string][]string{
 | |
| 							"first-plugin:0.0.1": {"second-plugin:0.0.1"},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			requiredPlugins: map[string][]plugins.Plugin{
 | |
| 				"first-plugin:0.0.1": {plugins.Must(plugins.New("second-plugin:0.0.1"))},
 | |
| 				"third-plugin:0.0.1": {plugins.Must(plugins.New("fourth-plugin:0.0.1"))},
 | |
| 			},
 | |
| 			want:    reconcile.Result{Requeue: true},
 | |
| 			wantErr: false,
 | |
| 		},
 | |
| 	}
 | |
| 	for _, tt := range tests {
 | |
| 		t.Run(tt.name, func(t *testing.T) {
 | |
| 			err := virtuslabv1alpha1.SchemeBuilder.AddToScheme(scheme.Scheme)
 | |
| 			assert.NoError(t, err)
 | |
| 			r := &ReconcileJenkinsBaseConfiguration{
 | |
| 				k8sClient: fake.NewFakeClient(),
 | |
| 				scheme:    nil,
 | |
| 				logger:    logf.ZapLogger(false),
 | |
| 				jenkins:   tt.jenkins,
 | |
| 				local:     false,
 | |
| 				minikube:  false,
 | |
| 			}
 | |
| 			err = r.k8sClient.Create(context.TODO(), tt.jenkins)
 | |
| 			assert.NoError(t, err)
 | |
| 			got, err := r.ensurePluginsRequiredByAllBackupProviders(tt.requiredPlugins)
 | |
| 			if tt.wantErr {
 | |
| 				assert.Error(t, err)
 | |
| 			} else {
 | |
| 				assert.NoError(t, err)
 | |
| 			}
 | |
| 			assert.Equal(t, tt.want, got)
 | |
| 		})
 | |
| 	}
 | |
| }
 |