2021-10-05 22:42:42 -07:00
|
|
|
package cosign
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"github.com/google/go-containerregistry/pkg/name"
|
|
|
|
"github.com/sigstore/cosign/pkg/cosign"
|
|
|
|
)
|
|
|
|
|
|
|
|
func SetMock(image string, data [][]byte) error {
|
|
|
|
imgRef, err := name.ParseReference(image)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
payloads := make([]cosign.SignedPayload, len(data))
|
|
|
|
for i, p := range data {
|
|
|
|
payloads[i] = cosign.SignedPayload{
|
2021-10-06 11:18:36 -07:00
|
|
|
Payload: p,
|
2021-10-05 22:42:42 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-06 11:18:36 -07:00
|
|
|
client = &mock{data: map[string][]cosign.SignedPayload{
|
2021-10-05 22:42:42 -07:00
|
|
|
imgRef.String(): payloads,
|
|
|
|
}}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type mock struct {
|
2021-10-06 11:18:36 -07:00
|
|
|
data map[string][]cosign.SignedPayload
|
2021-10-05 22:42:42 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *mock) Verify(_ context.Context, signedImgRef name.Reference, _ *cosign.CheckOpts) ([]cosign.SignedPayload, error) {
|
|
|
|
results, ok := m.data[signedImgRef.String()]
|
|
|
|
if !ok {
|
|
|
|
return nil, fmt.Errorf("failed to find mock data for %s", signedImgRef.String())
|
|
|
|
}
|
|
|
|
|
|
|
|
return results, nil
|
|
|
|
}
|