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)
|
|
})
|
|
}
|
|
}
|