github.com/jaylevin/jenkins-library@v1.230.4/pkg/kubernetes/utils_test.go (about)

     1  package kubernetes
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestRunUtils(t *testing.T) {
    11  	t.Run("Get container info", func(t *testing.T) {
    12  		testTable := []struct {
    13  			chartYamlFile          string
    14  			dataChartYaml          string
    15  			expectedChartName      string
    16  			expectedPackageVersion string
    17  			expectedError          error
    18  			setFileReadError       bool
    19  		}{
    20  			{
    21  				chartYamlFile:          "path/to/Chart.yaml",
    22  				dataChartYaml:          "name: nginx-testChart\nversion: 1.3.5",
    23  				expectedChartName:      "nginx-testChart",
    24  				expectedPackageVersion: "1.3.5",
    25  				expectedError:          nil,
    26  				setFileReadError:       false,
    27  			},
    28  			{
    29  				chartYamlFile:          "path/to/Chart.yaml",
    30  				dataChartYaml:          "name: nginx-testChart\nversion: 1.3.5",
    31  				expectedChartName:      "nginx-testChart",
    32  				expectedPackageVersion: "1.3.5",
    33  				expectedError:          errors.New("file couldn't read"),
    34  				setFileReadError:       true,
    35  			},
    36  			{
    37  				chartYamlFile:          "path/to/Chart.yaml",
    38  				dataChartYaml:          "version: 1.3.5",
    39  				expectedChartName:      "nginx-testChart",
    40  				expectedPackageVersion: "1.3.5",
    41  				expectedError:          errors.New("name not found in chart yaml file (or wrong type)"),
    42  				setFileReadError:       false,
    43  			},
    44  			{
    45  				chartYamlFile:          "path/to/Chart.yaml",
    46  				dataChartYaml:          "name: nginx-testChart",
    47  				expectedChartName:      "nginx-testChart",
    48  				expectedPackageVersion: "1.3.5",
    49  				expectedError:          errors.New("version not found in chart yaml file (or wrong type)"),
    50  				setFileReadError:       false,
    51  			},
    52  			{
    53  				chartYamlFile:          "path/to/Chart.yaml",
    54  				dataChartYaml:          "name=nginx-testChart",
    55  				expectedChartName:      "nginx-testChart",
    56  				expectedPackageVersion: "1.3.5",
    57  				expectedError:          errors.New("failed unmarshal"),
    58  				setFileReadError:       false,
    59  			},
    60  		}
    61  
    62  		for _, testCase := range testTable {
    63  			utils := newHelmMockUtilsBundle()
    64  			utils.AddFile(testCase.chartYamlFile, []byte(testCase.dataChartYaml))
    65  			if testCase.setFileReadError {
    66  				utils.FileReadErrors = map[string]error{testCase.chartYamlFile: testCase.expectedError}
    67  			}
    68  			nameChart, packageVersion, err := GetChartInfo(testCase.chartYamlFile, utils)
    69  			if testCase.expectedError != nil {
    70  				assert.Error(t, err)
    71  				assert.Contains(t, err.Error(), testCase.expectedError.Error())
    72  			} else {
    73  				assert.NoError(t, err)
    74  				assert.Equal(t, testCase.expectedChartName, nameChart)
    75  				assert.Equal(t, testCase.expectedPackageVersion, packageVersion)
    76  			}
    77  
    78  		}
    79  	})
    80  }