github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/config/reporting_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package config 5 6 import ( 7 "fmt" 8 "os" 9 "path/filepath" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestMixinReportingConfig(t *testing.T) { 16 gcpJsonKeyFilePath := "path/key.json" 17 gcsFolderPath := "test/folder/path" 18 gcsBucketID := "testBucketId" 19 config := StepConfig{ 20 Config: map[string]interface{}{}, 21 HookConfig: nil, 22 } 23 general := map[string]interface{}{ 24 "gcpJsonKeyFilePath": gcpJsonKeyFilePath, 25 "gcsFolderPath": gcsFolderPath, 26 "gcsBucketId": "generalBucketId", 27 } 28 steps := map[string]interface{}{ 29 "gcsBucketId": gcsBucketID, 30 "unknownConfig": "test", 31 } 32 33 config.mixinReportingConfig(nil, general, steps) 34 35 assert.Contains(t, config.Config, "gcpJsonKeyFilePath") 36 assert.Equal(t, gcpJsonKeyFilePath, config.Config["gcpJsonKeyFilePath"]) 37 assert.Contains(t, config.Config, "gcsFolderPath") 38 assert.Equal(t, gcsFolderPath, config.Config["gcsFolderPath"]) 39 assert.Contains(t, config.Config, "gcsBucketId") 40 assert.Equal(t, gcsBucketID, config.Config["gcsBucketId"]) 41 assert.NotContains(t, config.Config, "unknownConfig") 42 } 43 44 func TestReportingParams_GetResourceParameters(t *testing.T) { 45 tt := []struct { 46 in ReportingParams 47 expected map[string]interface{} 48 }{ 49 { 50 in: ReportingParams{Parameters: []StepParameters{}}, 51 expected: map[string]interface{}{}, 52 }, 53 { 54 in: ReportingParams{Parameters: []StepParameters{ 55 {Name: "param1"}, 56 {Name: "param2"}, 57 }}, 58 expected: map[string]interface{}{}, 59 }, 60 { 61 in: ReportingParams{Parameters: []StepParameters{ 62 {Name: "param1", ResourceRef: []ResourceReference{}}, 63 {Name: "param2", ResourceRef: []ResourceReference{}}, 64 }}, 65 expected: map[string]interface{}{}, 66 }, 67 { 68 in: ReportingParams{Parameters: []StepParameters{ 69 {Name: "param1", ResourceRef: []ResourceReference{{Name: "notAvailable", Param: "envparam1"}}}, 70 {Name: "param2", ResourceRef: []ResourceReference{{Name: "commonPipelineEnvironment", Param: "envparam2"}}, Type: "string"}, 71 }}, 72 expected: map[string]interface{}{"param2": "val2"}, 73 }, 74 { 75 in: ReportingParams{Parameters: []StepParameters{ 76 {Name: "param2", ResourceRef: []ResourceReference{{Name: "commonPipelineEnvironment", Param: "envparam2"}}, Type: "string"}, 77 {Name: "param3", ResourceRef: []ResourceReference{{Name: "commonPipelineEnvironment", Param: "jsonList"}}, Type: "[]string"}, 78 }}, 79 expected: map[string]interface{}{"param2": "val2", "param3": []interface{}{"value1", "value2"}}, 80 }, 81 { 82 in: ReportingParams{Parameters: []StepParameters{ 83 {Name: "param4", ResourceRef: []ResourceReference{{Name: "commonPipelineEnvironment", Param: "jsonKeyValue"}}, Type: "map[string]interface{}"}, 84 }}, 85 expected: map[string]interface{}{"param4": map[string]interface{}{"key": "value"}}, 86 }, 87 { 88 in: ReportingParams{Parameters: []StepParameters{ 89 {Name: "param1", ResourceRef: []ResourceReference{{Name: "commonPipelineEnvironment", Param: "envparam1"}}, Type: "noString"}, 90 {Name: "param4", ResourceRef: []ResourceReference{{Name: "commonPipelineEnvironment", Param: "jsonKeyValueString"}}, Type: "string"}, 91 }}, 92 expected: map[string]interface{}{"param4": "{\"key\":\"valueString\"}"}, 93 }, 94 } 95 96 dir := t.TempDir() 97 98 cpeDir := filepath.Join(dir, "commonPipelineEnvironment") 99 err := os.MkdirAll(cpeDir, 0700) 100 if err != nil { 101 t.Fatal("Failed to create sub directory") 102 } 103 104 os.WriteFile(filepath.Join(cpeDir, "envparam1"), []byte("val1"), 0700) 105 os.WriteFile(filepath.Join(cpeDir, "envparam2"), []byte("val2"), 0700) 106 os.WriteFile(filepath.Join(cpeDir, "jsonList.json"), []byte("[\"value1\",\"value2\"]"), 0700) 107 os.WriteFile(filepath.Join(cpeDir, "jsonKeyValue.json"), []byte("{\"key\":\"value\"}"), 0700) 108 os.WriteFile(filepath.Join(cpeDir, "jsonKeyValueString"), []byte("{\"key\":\"valueString\"}"), 0700) 109 110 for run, test := range tt { 111 t.Run(fmt.Sprintf("Run %v", run), func(t *testing.T) { 112 actual := test.in.GetResourceParameters(dir, "commonPipelineEnvironment") 113 assert.Equal(t, test.expected, actual) 114 }) 115 } 116 } 117 118 func TestReportingParams_GetGetStepFilters(t *testing.T) { 119 tt := []struct { 120 in ReportingParams 121 expected StepFilters 122 }{ 123 { 124 in: ReportingParams{Parameters: []StepParameters{}}, 125 expected: StepFilters{}, 126 }, 127 { 128 in: ReportingParams{Parameters: []StepParameters{ 129 {Name: "param1"}, 130 {Name: "param2"}, 131 }}, 132 expected: StepFilters{ 133 All: []string{"param1", "param2"}, 134 General: []string{"param1", "param2"}, 135 Steps: []string{"param1", "param2"}, 136 Stages: []string{"param1", "param2"}, 137 }, 138 }, 139 { 140 in: ReportingParams{Parameters: []StepParameters{ 141 {Name: "param1"}, 142 {Name: "param2"}, 143 {Name: "param3"}, 144 {Name: "param4"}, 145 {Name: "param5"}, 146 {Name: "param6"}, 147 }}, 148 expected: StepFilters{ 149 All: []string{"param1", "param2", "param3", "param4", "param5", "param6"}, 150 General: []string{"param1", "param2", "param3", "param4", "param5", "param6"}, 151 Steps: []string{"param1", "param2", "param3", "param4", "param5", "param6"}, 152 Stages: []string{"param1", "param2", "param3", "param4", "param5", "param6"}, 153 }, 154 }, 155 } 156 157 for run, test := range tt { 158 t.Run(fmt.Sprintf("Run %v", run), func(t *testing.T) { 159 actual := test.in.getStepFilters() 160 assert.Equal(t, test.expected, actual) 161 }) 162 } 163 } 164 165 func TestReportingParams_GetReportingFilter(t *testing.T) { 166 tt := []struct { 167 in ReportingParams 168 expected []string 169 }{ 170 { 171 in: ReportingParams{Parameters: []StepParameters{}}, 172 expected: nil, 173 }, 174 { 175 in: ReportingParams{Parameters: []StepParameters{ 176 {Name: "param1"}, 177 {Name: "param2"}, 178 }}, 179 expected: []string{"param1", "param2"}, 180 }, 181 { 182 in: ReportingParams{Parameters: []StepParameters{ 183 {Name: "param1"}, 184 {Name: "param2"}, 185 {Name: "param3"}, 186 {Name: "param4"}, 187 {Name: "param5"}, 188 {Name: "param6"}, 189 }}, 190 expected: []string{"param1", "param2", "param3", "param4", "param5", "param6"}, 191 }, 192 } 193 194 for run, test := range tt { 195 t.Run(fmt.Sprintf("Run %v", run), func(t *testing.T) { 196 actual := test.in.getReportingFilter() 197 assert.Equal(t, test.expected, actual) 198 }) 199 } 200 }