@@ -10,10 +10,13 @@ import (
1010
1111 "github.com/jfrog/jfrog-cli-artifactory/evidence/dsse"
1212 "github.com/jfrog/jfrog-cli-artifactory/evidence/intoto"
13+ "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils/commandsummary"
1314 "github.com/jfrog/jfrog-cli-core/v2/utils/config"
15+ "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
1416 "github.com/jfrog/jfrog-client-go/evidence/services"
1517 "github.com/jfrog/jfrog-client-go/utils/errorutils"
16- clientlog "github.com/jfrog/jfrog-client-go/utils/log"
18+ "github.com/jfrog/jfrog-client-go/utils/io/fileutils"
19+ "github.com/jfrog/jfrog-client-go/utils/log"
1720 "github.com/stretchr/testify/assert"
1821)
1922
@@ -32,9 +35,9 @@ func (m *MockEvidenceServiceManager) UploadEvidence(details services.EvidenceDet
3235
3336func TestUploadEvidence_ErrorHandling (t * testing.T ) {
3437 // Save the current log level and set it to DEBUG for testing
35- originalLogLevel := clientlog .GetLogger ().GetLogLevel ()
36- clientlog .SetLogger (clientlog .NewLogger (clientlog .DEBUG , nil ))
37- defer clientlog .SetLogger (clientlog .NewLogger (originalLogLevel , nil ))
38+ originalLogLevel := log .GetLogger ().GetLogLevel ()
39+ log .SetLogger (log .NewLogger (log .DEBUG , nil ))
40+ defer log .SetLogger (log .NewLogger (originalLogLevel , nil ))
3841
3942 tests := []struct {
4043 name string
@@ -99,7 +102,7 @@ func TestUploadEvidence_ErrorHandling(t *testing.T) {
99102func (c * createEvidenceBase ) handleUploadError (err error , repoPath string ) error {
100103 errStr := err .Error ()
101104 if strings .Contains (errStr , "400" ) || strings .Contains (errStr , "404" ) {
102- clientlog .Debug ("Server response error:" , err .Error ())
105+ log .Debug ("Server response error:" , err .Error ())
103106 return errorutils .CheckErrorf ("Subject '%s' is invalid or not found. Please ensure the subject exists and follows the correct format: <repo>/<path>/<name> or <repo>/<name>" , repoPath )
104107 }
105108 return err
@@ -166,3 +169,157 @@ func TestCreateAndSignEnvelope(t *testing.T) {
166169 })
167170 }
168171}
172+ func TestCreateEvidenceBase_RecordEvidenceSummaryIfInGitHubActions_NotInGitHub (t * testing.T ) {
173+ assert .NoError (t , os .Unsetenv ("GITHUB_ACTIONS" ))
174+
175+ base := & createEvidenceBase {
176+ predicateType : "https://slsa.dev/provenance/v1" ,
177+ providerId : "test-provider" ,
178+ }
179+
180+ summaryData := commandsummary.EvidenceSummaryData {
181+ Subject : "/test/subject" ,
182+ Verified : true ,
183+ PredicateType : base .predicateType ,
184+ }
185+ err := base .recordEvidenceSummary (summaryData )
186+ assert .NoError (t , err )
187+ }
188+
189+ func TestCreateEvidenceBase_RecordEvidenceSummaryIfInGitHubActions_GitHubCommiter (t * testing.T ) {
190+ tempDir , err := fileutils .CreateTempDir ()
191+ assert .NoError (t , err )
192+ defer func () {
193+ assert .NoError (t , fileutils .RemoveTempDir (tempDir ))
194+ }()
195+
196+ assert .NoError (t , os .Setenv ("GITHUB_ACTIONS" , "true" ))
197+ assert .NoError (t , os .Setenv (coreutils .SummaryOutputDirPathEnv , tempDir ))
198+ defer func () {
199+ assert .NoError (t , os .Unsetenv ("GITHUB_ACTIONS" ))
200+ assert .NoError (t , os .Unsetenv (coreutils .SummaryOutputDirPathEnv ))
201+ }()
202+
203+ base := & createEvidenceBase {
204+ predicateType : "https://slsa.dev/provenance/v1" ,
205+ providerId : "test-provider" ,
206+ flagType : "gh-commiter" ,
207+ }
208+
209+ summaryData := commandsummary.EvidenceSummaryData {
210+ Subject : "/test/subject" ,
211+ Verified : true ,
212+ PredicateType : base .predicateType ,
213+ }
214+ err = base .recordEvidenceSummary (summaryData )
215+ assert .NoError (t , err )
216+ }
217+
218+ func TestCreateEvidenceBase_RecordEvidenceSummaryIfInGitHubActions_Success (t * testing.T ) {
219+ tempDir , err := fileutils .CreateTempDir ()
220+ assert .NoError (t , err )
221+ defer func () {
222+ assert .NoError (t , fileutils .RemoveTempDir (tempDir ))
223+ }()
224+
225+ assert .NoError (t , os .Setenv ("GITHUB_ACTIONS" , "true" ))
226+ assert .NoError (t , os .Setenv (coreutils .SummaryOutputDirPathEnv , tempDir ))
227+ defer func () {
228+ assert .NoError (t , os .Unsetenv ("GITHUB_ACTIONS" ))
229+ assert .NoError (t , os .Unsetenv (coreutils .SummaryOutputDirPathEnv ))
230+ }()
231+
232+ base := & createEvidenceBase {
233+ predicateType : "https://slsa.dev/provenance/v1" ,
234+ providerId : "test-provider" ,
235+ flagType : "other" ,
236+ }
237+
238+ summaryData := commandsummary.EvidenceSummaryData {
239+ Subject : "/docker-cosign-test/hello-world" ,
240+ Verified : true ,
241+ PredicateType : base .predicateType ,
242+ }
243+ err = base .recordEvidenceSummary (summaryData )
244+ assert .NoError (t , err )
245+ }
246+
247+ func TestCreateEvidenceBase_RecordEvidenceSummaryIfInGitHubActions_NoSummaryEnv (t * testing.T ) {
248+ assert .NoError (t , os .Setenv ("GITHUB_ACTIONS" , "true" ))
249+ assert .NoError (t , os .Unsetenv (coreutils .SummaryOutputDirPathEnv ))
250+ defer func () {
251+ assert .NoError (t , os .Unsetenv ("GITHUB_ACTIONS" ))
252+ }()
253+
254+ base := & createEvidenceBase {
255+ predicateType : "https://slsa.dev/provenance/v1" ,
256+ providerId : "test-provider" ,
257+ flagType : "other" ,
258+ }
259+
260+ summaryData := commandsummary.EvidenceSummaryData {
261+ Subject : "/test/subject" ,
262+ Verified : true ,
263+ PredicateType : base .predicateType ,
264+ }
265+ err := base .recordEvidenceSummary (summaryData )
266+ assert .Error (t , err )
267+ }
268+
269+ func TestCreateEvidenceBase_RecordEvidenceSummaryIfInGitHubActions_Verified (t * testing.T ) {
270+ tempDir , err := fileutils .CreateTempDir ()
271+ assert .NoError (t , err )
272+ defer func () {
273+ assert .NoError (t , fileutils .RemoveTempDir (tempDir ))
274+ }()
275+
276+ assert .NoError (t , os .Setenv ("GITHUB_ACTIONS" , "true" ))
277+ assert .NoError (t , os .Setenv (coreutils .SummaryOutputDirPathEnv , tempDir ))
278+ defer func () {
279+ assert .NoError (t , os .Unsetenv ("GITHUB_ACTIONS" ))
280+ assert .NoError (t , os .Unsetenv (coreutils .SummaryOutputDirPathEnv ))
281+ }()
282+
283+ base := & createEvidenceBase {
284+ predicateType : "https://slsa.dev/provenance/v1" ,
285+ providerId : "test-provider" ,
286+ flagType : "other" ,
287+ }
288+
289+ summaryData := commandsummary.EvidenceSummaryData {
290+ Subject : "/docker-cosign-test/hello-world" ,
291+ Verified : true ,
292+ PredicateType : base .predicateType ,
293+ }
294+ err = base .recordEvidenceSummary (summaryData )
295+ assert .NoError (t , err )
296+ }
297+
298+ func TestCreateEvidenceBase_RecordEvidenceSummaryIfInGitHubActions_NotVerified (t * testing.T ) {
299+ tempDir , err := fileutils .CreateTempDir ()
300+ assert .NoError (t , err )
301+ defer func () {
302+ assert .NoError (t , fileutils .RemoveTempDir (tempDir ))
303+ }()
304+
305+ assert .NoError (t , os .Setenv ("GITHUB_ACTIONS" , "true" ))
306+ assert .NoError (t , os .Setenv (coreutils .SummaryOutputDirPathEnv , tempDir ))
307+ defer func () {
308+ assert .NoError (t , os .Unsetenv ("GITHUB_ACTIONS" ))
309+ assert .NoError (t , os .Unsetenv (coreutils .SummaryOutputDirPathEnv ))
310+ }()
311+
312+ base := & createEvidenceBase {
313+ predicateType : "" ,
314+ providerId : "test-provider" ,
315+ flagType : "other" ,
316+ }
317+
318+ summaryData := commandsummary.EvidenceSummaryData {
319+ Subject : "/test-repo/artifact" ,
320+ Verified : false ,
321+ PredicateType : base .predicateType ,
322+ }
323+ err = base .recordEvidenceSummary (summaryData )
324+ assert .NoError (t , err )
325+ }
0 commit comments