github.com/jaylevin/jenkins-library@v1.230.4/cmd/pipelineCreateScanSummary_test.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/SAP/jenkins-library/pkg/mock" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 type pipelineCreateScanSummaryMockUtils struct { 12 *mock.FilesMock 13 } 14 15 func newPipelineCreateScanSummaryTestsUtils() pipelineCreateScanSummaryMockUtils { 16 utils := pipelineCreateScanSummaryMockUtils{ 17 FilesMock: &mock.FilesMock{}, 18 } 19 return utils 20 } 21 22 func TestRunPipelineCreateScanSummary(t *testing.T) { 23 t.Parallel() 24 25 t.Run("success", func(t *testing.T) { 26 t.Parallel() 27 28 config := pipelineCreateScanSummaryOptions{ 29 OutputFilePath: "scanSummary.md", 30 } 31 32 utils := newPipelineCreateScanSummaryTestsUtils() 33 utils.AddFile(".pipeline/stepReports/step1.json", []byte(`{"title":"Title Scan 1"}`)) 34 utils.AddFile(".pipeline/stepReports/step2.json", []byte(`{"title":"Title Scan 2"}`)) 35 utils.AddFile(".pipeline/stepReports/step3.json", []byte(`{"title":"Title Scan 3"}`)) 36 37 err := runPipelineCreateScanSummary(&config, nil, utils) 38 39 assert.NoError(t, err) 40 reportExists, _ := utils.FileExists("scanSummary.md") 41 assert.True(t, reportExists) 42 fileContent, _ := utils.FileRead("scanSummary.md") 43 fileContentString := string(fileContent) 44 assert.Contains(t, fileContentString, "Title Scan 1") 45 assert.Contains(t, fileContentString, "Title Scan 2") 46 assert.Contains(t, fileContentString, "Title Scan 3") 47 }) 48 49 t.Run("success - failed only", func(t *testing.T) { 50 t.Parallel() 51 52 config := pipelineCreateScanSummaryOptions{ 53 OutputFilePath: "scanSummary.md", 54 FailedOnly: true, 55 } 56 57 utils := newPipelineCreateScanSummaryTestsUtils() 58 utils.AddFile(".pipeline/stepReports/step1.json", []byte(`{"title":"Title Scan 1", "successfulScan": true}`)) 59 utils.AddFile(".pipeline/stepReports/step2.json", []byte(`{"title":"Title Scan 2", "successfulScan": false}`)) 60 utils.AddFile(".pipeline/stepReports/step3.json", []byte(`{"title":"Title Scan 3", "successfulScan": false}`)) 61 62 err := runPipelineCreateScanSummary(&config, nil, utils) 63 64 assert.NoError(t, err) 65 reportExists, _ := utils.FileExists("scanSummary.md") 66 assert.True(t, reportExists) 67 fileContent, _ := utils.FileRead("scanSummary.md") 68 fileContentString := string(fileContent) 69 assert.NotContains(t, fileContentString, "Title Scan 1") 70 assert.Contains(t, fileContentString, "Title Scan 2") 71 assert.Contains(t, fileContentString, "Title Scan 3") 72 }) 73 74 t.Run("success - with source link", func(t *testing.T) { 75 t.Parallel() 76 77 config := pipelineCreateScanSummaryOptions{ 78 OutputFilePath: "scanSummary.md", 79 PipelineLink: "https://test.com/link", 80 } 81 82 utils := newPipelineCreateScanSummaryTestsUtils() 83 84 err := runPipelineCreateScanSummary(&config, nil, utils) 85 86 assert.NoError(t, err) 87 reportExists, _ := utils.FileExists("scanSummary.md") 88 assert.True(t, reportExists) 89 fileContent, _ := utils.FileRead("scanSummary.md") 90 fileContentString := string(fileContent) 91 assert.Contains(t, fileContentString, "https://test.com/link") 92 }) 93 94 t.Run("error - read file", func(t *testing.T) { 95 t.Skip() 96 //ToDo 97 // so far mock cannot create error for reading files 98 99 config := pipelineCreateScanSummaryOptions{ 100 OutputFilePath: "scanSummary.md", 101 } 102 103 utils := newPipelineCreateScanSummaryTestsUtils() 104 105 err := runPipelineCreateScanSummary(&config, nil, utils) 106 107 assert.Contains(t, fmt.Sprint(err), "failed to read report") 108 }) 109 110 t.Run("error - unmarshal json", func(t *testing.T) { 111 t.Parallel() 112 113 config := pipelineCreateScanSummaryOptions{ 114 OutputFilePath: "scanSummary.md", 115 } 116 117 utils := newPipelineCreateScanSummaryTestsUtils() 118 utils.AddFile(".pipeline/stepReports/step1.json", []byte(`{"title":"Title Scan 1"`)) 119 120 err := runPipelineCreateScanSummary(&config, nil, utils) 121 122 assert.Contains(t, fmt.Sprint(err), "failed to parse report") 123 }) 124 125 t.Run("error - write file", func(t *testing.T) { 126 //ToDo 127 // so far mock cannot create error 128 }) 129 130 }