github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/piperenv/environment_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package piperenv
     5  
     6  import (
     7  	"os"
     8  	"path/filepath"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestSetResourceParameter(t *testing.T) {
    16  	type args struct {
    17  		path         string
    18  		resourceName string
    19  		paramName    string
    20  		value        interface{}
    21  	}
    22  	tests := []struct {
    23  		name string
    24  		want string
    25  		args args
    26  	}{
    27  		{name: "string", want: "testVal", args: args{path: "", resourceName: "testRes", paramName: "testParamString", value: "testVal"}},
    28  		{name: "boolean", want: "true", args: args{path: "", resourceName: "testRes", paramName: "testParamBool", value: true}},
    29  		{name: "integer", want: "1", args: args{path: "", resourceName: "testRes", paramName: "testParamInt", value: 1}},
    30  		{name: "float", want: "0.123", args: args{path: "", resourceName: "testRes", paramName: "testParamFloat", value: 0.123}},
    31  		{name: "string list", want: "[\"test\",\"abc\"]", args: args{path: "", resourceName: "testRes", paramName: "testParamStringList", value: []string{"test", "abc"}}},
    32  		{name: "boolean list", want: "[true,false]", args: args{path: "", resourceName: "testRes", paramName: "testParamBoolList", value: []bool{true, false}}},
    33  		{name: "integer list", want: "[1,2]", args: args{path: "", resourceName: "testRes", paramName: "testParamIntList", value: []int{1, 2}}},
    34  	}
    35  	for _, testCase := range tests {
    36  		t.Run(testCase.name, func(t *testing.T) {
    37  			// init
    38  			dir := t.TempDir()
    39  			targetFile := filepath.Join(dir, testCase.args.resourceName, testCase.args.paramName)
    40  			// test
    41  			err := SetResourceParameter(dir, testCase.args.resourceName, testCase.args.paramName, testCase.args.value)
    42  			// assert
    43  			assert.NoError(t, err)
    44  			var v []byte
    45  			// var err error
    46  			switch testCase.args.value.(type) {
    47  			case string:
    48  			default:
    49  				targetFile += ".json"
    50  			}
    51  			assert.FileExists(t, targetFile)
    52  			v, err = os.ReadFile(targetFile)
    53  			require.NoError(t, err)
    54  			assert.Equal(t, testCase.want, string(v))
    55  		})
    56  	}
    57  }
    58  
    59  func TestGetResourceParameter(t *testing.T) {
    60  	type args struct {
    61  		path         string
    62  		resourceName string
    63  		paramName    string
    64  	}
    65  	tests := []struct {
    66  		name string
    67  		args args
    68  		want string
    69  	}{
    70  		{name: "default", args: args{path: "", resourceName: "", paramName: ""}, want: ""},
    71  	}
    72  	for _, testCase := range tests {
    73  		t.Run(testCase.name, func(t *testing.T) {
    74  			// test
    75  			result := GetResourceParameter(testCase.args.path, testCase.args.resourceName, testCase.args.paramName)
    76  			// assert
    77  			assert.Equal(t, testCase.want, result)
    78  		})
    79  	}
    80  }
    81  
    82  func TestSetParameter(t *testing.T) {
    83  	dir := t.TempDir()
    84  
    85  	err := SetParameter(dir, "testParam", "testVal")
    86  
    87  	assert.NoError(t, err, "Error occurred but none expected")
    88  	assert.Equal(t, "testVal", GetParameter(dir, "testParam"))
    89  }
    90  
    91  func TestReadFromDisk(t *testing.T) {
    92  	dir := t.TempDir()
    93  
    94  	assert.Equal(t, "", GetParameter(dir, "testParamNotExistingYet"))
    95  }