73 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package e2e
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1"
 | |
| 	"github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/configuration/user/seedjobs"
 | |
| 
 | |
| 	"github.com/bndr/gojenkins"
 | |
| 	framework "github.com/operator-framework/operator-sdk/pkg/test"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"k8s.io/apimachinery/pkg/types"
 | |
| 	"k8s.io/apimachinery/pkg/util/wait"
 | |
| )
 | |
| 
 | |
| func TestUserConfiguration(t *testing.T) {
 | |
| 	t.Parallel()
 | |
| 	namespace, ctx := setupTest(t)
 | |
| 	// Deletes test namespace
 | |
| 	defer ctx.Cleanup()
 | |
| 
 | |
| 	// base
 | |
| 	jenkins := createJenkinsCRWithSeedJob(t, namespace)
 | |
| 	waitForJenkinsBaseConfigurationToComplete(t, jenkins)
 | |
| 	client := verifyJenkinsAPIConnection(t, jenkins)
 | |
| 
 | |
| 	// user
 | |
| 	waitForJenkinsUserConfigurationToComplete(t, jenkins)
 | |
| 	verifyJenkinsSeedJobs(t, client, jenkins)
 | |
| }
 | |
| 
 | |
| func verifyJenkinsSeedJobs(t *testing.T, client *gojenkins.Jenkins, jenkins *virtuslabv1alpha1.Jenkins) {
 | |
| 	// check if job has been configured and executed successfully
 | |
| 	err := wait.Poll(time.Second*10, time.Minute*2, func() (bool, error) {
 | |
| 		t.Logf("Attempting to get configure seed job status '%v'", seedjobs.ConfigureSeedJobsName)
 | |
| 		seedJob, err := client.GetJob(seedjobs.ConfigureSeedJobsName)
 | |
| 		if err != nil || seedJob == nil {
 | |
| 			return false, nil
 | |
| 		}
 | |
| 		build, err := seedJob.GetLastSuccessfulBuild()
 | |
| 		if err != nil || build == nil {
 | |
| 			return false, nil
 | |
| 		}
 | |
| 		return true, nil
 | |
| 	})
 | |
| 	assert.NoError(t, err, "couldn't get jenkins job")
 | |
| 
 | |
| 	// WARNING this use case depends on changes in https://github.com/VirtusLab/jenkins-operator-e2e/tree/master/cicd
 | |
| 	seedJobName := "jenkins-operator-e2e-job-dsl-seed" // https://github.com/VirtusLab/jenkins-operator-e2e/blob/master/cicd/jobs/e2e_test_job.jenkins
 | |
| 	err = wait.Poll(time.Second*10, time.Minute*2, func() (bool, error) {
 | |
| 		t.Logf("Attempting to verify if seed job has been created '%v'", seedJobName)
 | |
| 		seedJob, err := client.GetJob(seedJobName)
 | |
| 		if err != nil || seedJob == nil {
 | |
| 			return false, nil
 | |
| 		}
 | |
| 		return true, nil
 | |
| 	})
 | |
| 	assert.NoError(t, err, "couldn't verify if seed job has been created")
 | |
| 
 | |
| 	// verify Jenkins.Status.Builds
 | |
| 	// WARNING this use case depends on changes in https://github.com/VirtusLab/jenkins-operator-e2e/tree/master/cicd
 | |
| 	err = framework.Global.Client.Get(context.TODO(), types.NamespacedName{Namespace: jenkins.Namespace, Name: jenkins.Name}, jenkins)
 | |
| 	assert.NoError(t, err, "couldn't get jenkins custom resource")
 | |
| 
 | |
| 	assert.NotNil(t, jenkins.Status.Builds)
 | |
| 	assert.NotEmpty(t, jenkins.Status.Builds)
 | |
| 	assert.Equal(t, len(jenkins.Status.Builds), 1)
 | |
| 	build := jenkins.Status.Builds[0]
 | |
| 	assert.Equal(t, build.JobName, seedjobs.ConfigureSeedJobsName)
 | |
| }
 |