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 }