From dc436e5395f6d947fe614cb86ef17b5a51f6ad5d Mon Sep 17 00:00:00 2001
From: Yawen Luo <69618391+ywluogg@users.noreply.github.com>
Date: Tue, 18 Oct 2022 10:54:39 -0400
Subject: [PATCH] Update pkg/artifacts/signable_test.go

Co-authored-by: Billy Lynch <wlynch92@gmail.com>
---
 go.mod                                                   | 2 +-
 pkg/artifacts/signable.go                                | 6 +++++-
 pkg/artifacts/signable_test.go                           | 9 ++++-----
 pkg/chains/formats/intotoite6/pipelinerun/pipelinerun.go | 2 +-
 pkg/chains/formats/intotoite6/taskrun/taskrun.go         | 2 +-
 5 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/go.mod b/go.mod
index 8c60ed384c..a3b3ccf417 100644
--- a/go.mod
+++ b/go.mod
@@ -42,6 +42,7 @@ require (
 	github.com/sigstore/rekor v0.12.1-0.20220915152154-4bb6f441c1b2
 	github.com/sigstore/sigstore v1.4.2
 	github.com/spiffe/go-spiffe/v2 v2.1.1
+	github.com/stretchr/testify v1.8.0
 	github.com/tektoncd/pipeline v0.40.1
 	github.com/tektoncd/plumbing v0.0.0-20220817140952-3da8ce01aeeb
 	github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399
@@ -368,7 +369,6 @@ require (
 	github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
 	github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect
 	github.com/stretchr/objx v0.4.0 // indirect
-	github.com/stretchr/testify v1.8.0 // indirect
 	github.com/subosito/gotenv v1.4.1 // indirect
 	github.com/sylvia7788/contextcheck v1.0.6 // indirect
 	github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
diff --git a/pkg/artifacts/signable.go b/pkg/artifacts/signable.go
index e7955a465b..6d7e879316 100644
--- a/pkg/artifacts/signable.go
+++ b/pkg/artifacts/signable.go
@@ -263,12 +263,16 @@ func extractTargetFromResults(obj objects.TektonObject, identifierSuffix string,
 	return ss
 }
 
-// RetrieveMeterialsFromStructuredResults retrieves structured results from Tekton Object, and convert them into materials.
+// RetrieveMaterialsFromStructuredResults retrieves structured results from Tekton Object, and convert them into materials.
 func RetrieveMaterialsFromStructuredResults(obj objects.TektonObject, categoryMarker string, logger *zap.SugaredLogger) []slsa.ProvenanceMaterial {
 	// Retrieve structured provenance for inputs.
 	mats := []slsa.ProvenanceMaterial{}
 	ssts := ExtractStructuredTargetFromResults(obj, ArtifactsInputsResultName, logger)
 	for _, s := range ssts {
+		if err := checkDigest(s.Digest); err != nil {
+			logger.Debugf("Digest for %s not in the right format: %s, %v", s.URI, s.Digest, err)
+			continue
+		}
 		splits := strings.Split(s.Digest, ":")
 		alg := splits[0]
 		digest := splits[1]
diff --git a/pkg/artifacts/signable_test.go b/pkg/artifacts/signable_test.go
index a00a0cd5b1..fc0994a0a9 100644
--- a/pkg/artifacts/signable_test.go
+++ b/pkg/artifacts/signable_test.go
@@ -426,9 +426,8 @@ func TestExtractStructuredTargetFromResults(t *testing.T) {
 		{URI: "gcr.io/foo/bar", Digest: digest3},
 	}
 	gotInputs := ExtractStructuredTargetFromResults(objects.NewTaskRunObject(tr), ArtifactsInputsResultName, logtesting.TestLogger(t))
-	gotInputsEqual := cmp.Equal(gotInputs, wantInputs, cmpopts.SortSlices(func(x, y *StructuredSignable) bool { return x.Digest < y.Digest }))
-	if !gotInputsEqual {
-		t.Errorf("Equal = %v\n reason: %v", gotInputsEqual, cmp.Diff(wantInputs, gotInputs, ignore...))
+	if diff := cmp.Diff(gotInputs, wantInputs, cmpopts.SortSlices(func(x, y *StructuredSignable) bool { return x.Digest < y.Digest })); diff != "" {
+		t.Errorf("Inputs are not as expected: %v", diff)
 	}
 
 	wantOutputs := []*StructuredSignable{
@@ -442,7 +441,7 @@ func TestExtractStructuredTargetFromResults(t *testing.T) {
 	}
 }
 
-func TestRetrieveMeterialsFromStructuredResults(t *testing.T) {
+func TestRetrieveMaterialsFromStructuredResults(t *testing.T) {
 	tr := &v1beta1.TaskRun{
 		Status: v1beta1.TaskRunStatus{
 			TaskRunStatusFields: v1beta1.TaskRunStatusFields{
@@ -479,7 +478,7 @@ func TestRetrieveMeterialsFromStructuredResults(t *testing.T) {
 		},
 	}
 
-	gotMaterials := RetrieveMeterialsFromStructuredResults(objects.NewTaskRunObject(tr), ArtifactsInputsResultName, logtesting.TestLogger(t))
+	gotMaterials := RetrieveMaterialsFromStructuredResults(objects.NewTaskRunObject(tr), ArtifactsInputsResultName, logtesting.TestLogger(t))
 
 	if !cmp.Equal(gotMaterials, wantMaterials, ignore...) {
 		t.Fatalf("Meterials not the same %s", cmp.Diff(gotMaterials, wantMaterials, ignore...))
diff --git a/pkg/chains/formats/intotoite6/pipelinerun/pipelinerun.go b/pkg/chains/formats/intotoite6/pipelinerun/pipelinerun.go
index dc097705bd..f9f97207f9 100644
--- a/pkg/chains/formats/intotoite6/pipelinerun/pipelinerun.go
+++ b/pkg/chains/formats/intotoite6/pipelinerun/pipelinerun.go
@@ -184,7 +184,7 @@ func materials(pro *objects.PipelineRunObject, logger *zap.SugaredLogger) []slsa
 		}
 	}
 
-	sms := artifacts.RetrieveMeterialsFromStructuredResults(pro, artifacts.ArtifactsInputsResultName, logger)
+	sms := artifacts.RetrieveMaterialsFromStructuredResults(pro, artifacts.ArtifactsInputsResultName, logger)
 	mats = append(mats, sms...)
 
 	// search status.PipelineSpec.params
diff --git a/pkg/chains/formats/intotoite6/taskrun/taskrun.go b/pkg/chains/formats/intotoite6/taskrun/taskrun.go
index c9360a3c7b..1a52749c95 100644
--- a/pkg/chains/formats/intotoite6/taskrun/taskrun.go
+++ b/pkg/chains/formats/intotoite6/taskrun/taskrun.go
@@ -93,7 +93,7 @@ func materials(tro *objects.TaskRunObject, logger *zap.SugaredLogger) []slsa.Pro
 		return mats
 	}
 
-	sms := artifacts.RetrieveMeterialsFromStructuredResults(tro, artifacts.ArtifactsInputsResultName, logger)
+	sms := artifacts.RetrieveMaterialsFromStructuredResults(tro, artifacts.ArtifactsInputsResultName, logger)
 	mats = append(mats, sms...)
 
 	if tro.Spec.Resources == nil {