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  }