github.com/jaylevin/jenkins-library@v1.230.4/pkg/piperutils/stepResults_test.go (about) 1 package piperutils 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestPersistReportAndLinks(t *testing.T) { 15 t.Run("default", func(t *testing.T) { 16 workspace, err := ioutil.TempDir("", "workspace5") 17 require.NoError(t, err, "Failed to create temporary workspace directory") 18 // clean up tmp dir 19 defer os.RemoveAll(workspace) 20 21 reports := []Path{{Target: "testFile1.json", Mandatory: true}, {Target: "testFile2.json"}} 22 links := []Path{{Target: "https://1234568.com/test", Name: "Weblink"}} 23 PersistReportsAndLinks("checkmarxExecuteScan", workspace, reports, links) 24 25 reportsJSONPath := filepath.Join(workspace, "checkmarxExecuteScan_reports.json") 26 assert.FileExists(t, reportsJSONPath) 27 28 linksJSONPath := filepath.Join(workspace, "checkmarxExecuteScan_links.json") 29 assert.FileExists(t, linksJSONPath) 30 31 var reportsLoaded []Path 32 var linksLoaded []Path 33 reportsFileData, err := ioutil.ReadFile(reportsJSONPath) 34 reportsDataString := string(reportsFileData) 35 println(reportsDataString) 36 assert.NoError(t, err, "No error expected but got one") 37 38 linksFileData, err := ioutil.ReadFile(linksJSONPath) 39 linksDataString := string(linksFileData) 40 println(linksDataString) 41 assert.NoError(t, err, "No error expected but got one") 42 json.Unmarshal(reportsFileData, &reportsLoaded) 43 json.Unmarshal(linksFileData, &linksLoaded) 44 45 assert.Equal(t, 2, len(reportsLoaded), "wrong number of reports") 46 assert.Equal(t, 1, len(linksLoaded), "wrong number of links") 47 assert.Equal(t, true, reportsLoaded[0].Mandatory, "mandatory flag on report 1 has wrong value") 48 assert.Equal(t, "testFile1.json", reportsLoaded[0].Target, "target value on report 1 has wrong value") 49 assert.Equal(t, false, reportsLoaded[1].Mandatory, "mandatory flag on report 2 has wrong value") 50 assert.Equal(t, "testFile2.json", reportsLoaded[1].Target, "target value on report 1 has wrong value") 51 assert.Equal(t, false, linksLoaded[0].Mandatory, "mandatory flag on link 1 has wrong value") 52 assert.Equal(t, "https://1234568.com/test", linksLoaded[0].Target, "target value on link 1 has wrong value") 53 assert.Equal(t, "Weblink", linksLoaded[0].Name, "name value on link 1 has wrong value") 54 }) 55 56 t.Run("empty list", func(t *testing.T) { 57 // init 58 workspace, err := ioutil.TempDir("", "sonar-") 59 require.NoError(t, err, "Failed to create temporary workspace directory") 60 // clean up tmp dir 61 defer os.RemoveAll(workspace) 62 63 reportsJSONPath := filepath.Join(workspace, "sonarExecuteScan_reports.json") 64 linksJSONPath := filepath.Join(workspace, "sonarExecuteScan_links.json") 65 66 // prepare uninitialised parameters 67 var reports, links []Path 68 require.Empty(t, reports) 69 require.Empty(t, links) 70 71 // test 72 PersistReportsAndLinks("sonarExecuteScan", workspace, reports, links) 73 // assert 74 for _, reportFile := range []string{reportsJSONPath, linksJSONPath} { 75 assert.FileExists(t, reportFile) 76 reportsFileData, err := ioutil.ReadFile(reportFile) 77 require.NoError(t, err, "No error expected but got one") 78 assert.Equal(t, "[]", string(reportsFileData)) 79 } 80 }) 81 }