Add test for envelope detection
This commit is contained in:
@@ -191,11 +191,21 @@ func TestSimpleStatementSigning(t *testing.T) {
|
||||
err = manifest.AddAttestation(ctx, signer, statement2, opts)
|
||||
require.NoError(t, err)
|
||||
|
||||
// fake that the manfifest was loaded from a real image
|
||||
manifest.AttestationImage.OriginalLayers = manifest.AttestationImage.SignedLayers
|
||||
envelopes, err := oci.ExtractEnvelopes(manifest, attestation.VSAPredicateType)
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, envelopes, 2)
|
||||
|
||||
newImg, err := manifest.BuildAttestationImage(attestation.WithReplacedLayers(tc.replace))
|
||||
require.NoError(t, err)
|
||||
layers, err := newImg.Layers()
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, layers, 2)
|
||||
if tc.replace {
|
||||
assert.Len(t, layers, 2)
|
||||
} else {
|
||||
assert.Len(t, layers, 4)
|
||||
}
|
||||
|
||||
newImgs, err := manifest.BuildReferringArtifacts()
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -96,7 +96,7 @@ func (manifest *AttestationManifest) AddAttestation(ctx context.Context, signer
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create signed layer: %w", err)
|
||||
}
|
||||
manifest.AttestationImage.signedLayers = append(manifest.AttestationImage.signedLayers, layer)
|
||||
manifest.AttestationImage.SignedLayers = append(manifest.AttestationImage.SignedLayers, layer)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -207,10 +207,10 @@ func (manifest *AttestationManifest) BuildAttestationImage(options ...func(*Atte
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create options: %w", err)
|
||||
}
|
||||
resultLayers := manifest.AttestationImage.signedLayers
|
||||
resultLayers := manifest.AttestationImage.SignedLayers
|
||||
for _, existingLayer := range manifest.AttestationImage.OriginalLayers {
|
||||
var found bool
|
||||
for _, signedLayer := range manifest.AttestationImage.signedLayers {
|
||||
for _, signedLayer := range manifest.AttestationImage.SignedLayers {
|
||||
if existingLayer.Statement == signedLayer.Statement {
|
||||
found = true
|
||||
// copy over original annotations
|
||||
@@ -236,7 +236,7 @@ func (manifest *AttestationManifest) BuildAttestationImage(options ...func(*Atte
|
||||
// build an image per attestation (layer) suitable for use as Referrers
|
||||
func (manifest *AttestationManifest) BuildReferringArtifacts() ([]v1.Image, error) {
|
||||
var images []v1.Image
|
||||
for _, layer := range manifest.AttestationImage.signedLayers {
|
||||
for _, layer := range manifest.AttestationImage.SignedLayers {
|
||||
opts := &AttestationManifestImageOptions{
|
||||
strictReferrers: true,
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ type AttestationLayer struct {
|
||||
|
||||
type AttestationImage struct {
|
||||
OriginalLayers []*AttestationLayer
|
||||
signedLayers []*AttestationLayer
|
||||
SignedLayers []*AttestationLayer
|
||||
}
|
||||
|
||||
type AttestationManifest struct {
|
||||
|
||||
Reference in New Issue
Block a user