github.com/jenkins-x/jx/v2@v2.1.155/pkg/config/project_config_test.go (about)

     1  // +build unit
     2  
     3  package config_test
     4  
     5  import (
     6  	"testing"
     7  
     8  	"github.com/jenkins-x/jx-logging/pkg/log"
     9  	"github.com/jenkins-x/jx/v2/pkg/config"
    10  	"github.com/jenkins-x/jx/v2/pkg/jenkinsfile"
    11  	"github.com/jenkins-x/jx/v2/pkg/tekton/syntax"
    12  	"github.com/jenkins-x/jx/v2/pkg/tests"
    13  	corev1 "k8s.io/api/core/v1"
    14  	"sigs.k8s.io/yaml"
    15  
    16  	"github.com/stretchr/testify/assert"
    17  )
    18  
    19  var (
    20  	testProjectConfigMaven = &config.ProjectConfig{
    21  		BuildPack: "maven",
    22  		Env: []corev1.EnvVar{
    23  			{
    24  				Name:  "ORG",
    25  				Value: "myorg",
    26  			},
    27  			{
    28  				Name:  "APP_NAME",
    29  				Value: "thingy",
    30  			},
    31  		},
    32  		PipelineConfig: &jenkinsfile.PipelineConfig{
    33  			Pipelines: jenkinsfile.Pipelines{
    34  				PullRequest: &jenkinsfile.PipelineLifecycles{
    35  					Build: &jenkinsfile.PipelineLifecycle{
    36  						Steps: []*syntax.Step{
    37  							{
    38  								Command: "mvn test",
    39  							},
    40  						},
    41  					},
    42  				},
    43  				Release: &jenkinsfile.PipelineLifecycles{
    44  					Build: &jenkinsfile.PipelineLifecycle{
    45  						Steps: []*syntax.Step{
    46  							{
    47  								Command: "mvn test",
    48  							},
    49  							{
    50  								Command: "mvn deploy",
    51  							},
    52  							{
    53  								Command: "jx promote --all-auto",
    54  							},
    55  						},
    56  					},
    57  					Pipeline: &syntax.ParsedPipeline{},
    58  				},
    59  			},
    60  			Env: []corev1.EnvVar{
    61  				{
    62  					Name:  "PREVIEW_VERSION",
    63  					Value: "0.0.0-SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER",
    64  				},
    65  			},
    66  		},
    67  	}
    68  )
    69  
    70  func TestProjectConfigMarshal(t *testing.T) {
    71  	t.Parallel()
    72  
    73  	data, err := yaml.Marshal(testProjectConfigMaven)
    74  	assert.NoError(t, err)
    75  
    76  	if tests.IsDebugLog() {
    77  		text := string(data)
    78  		log.Logger().Infof("Generated YAML: %s", text)
    79  	}
    80  
    81  	copy := &config.ProjectConfig{}
    82  
    83  	err = yaml.Unmarshal(data, copy)
    84  	assert.NoError(t, err)
    85  
    86  	assert.Equal(t, 2, len(testProjectConfigMaven.Env), "len(testProjectConfigMaven.Env)")
    87  	assert.NotNil(t, testProjectConfigMaven.PipelineConfig, "testProjectConfigMaven.PipelineConfig")
    88  	assert.NotNil(t, testProjectConfigMaven.PipelineConfig.Pipelines.Release, "testProjectConfigMaven.PipelineConfig.Pipelines.Release")
    89  	assert.Equal(t, 1, len(testProjectConfigMaven.PipelineConfig.Env), "len(testProjectConfigMaven.PipelineConfig.Env)")
    90  }
    91  
    92  func TestGetPipeline(t *testing.T) {
    93  	releasePipeline, err := testProjectConfigMaven.GetPipeline(jenkinsfile.PipelineKindRelease)
    94  	assert.NoError(t, err)
    95  	assert.NotNil(t, releasePipeline)
    96  
    97  	pullRequestPipeline, err := testProjectConfigMaven.GetPipeline(jenkinsfile.PipelineKindPullRequest)
    98  	assert.Error(t, err)
    99  	assert.Equal(t, err.Error(), "no pipeline defined for kind pullrequest")
   100  	assert.Nil(t, pullRequestPipeline)
   101  
   102  	featurePipeline, err := testProjectConfigMaven.GetPipeline(jenkinsfile.PipelineKindFeature)
   103  	assert.Error(t, err)
   104  	assert.Equal(t, err.Error(), "no pipeline defined for kind feature")
   105  	assert.Nil(t, featurePipeline)
   106  }