mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-10 05:27:07 +08:00
Added test for imagetool inspect load
Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
This commit is contained in:
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/opencontainers/go-digest"
|
||||
@ -11,6 +12,44 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestLoad(t *testing.T) {
|
||||
loader := newLoader(getMockResolver())
|
||||
ctx := context.Background()
|
||||
|
||||
r := getImageNoAttestation()
|
||||
indexDigest := reflect.ValueOf(r.indexes).MapKeys()[0].String()
|
||||
result, err := loader.Load(ctx, fmt.Sprintf("test@%s", indexDigest))
|
||||
assert.NoError(t, err)
|
||||
if err == nil {
|
||||
assert.Equal(t, 1, len(result.indexes))
|
||||
assert.Equal(t, 2, len(result.images))
|
||||
assert.Equal(t, 2, len(result.platforms))
|
||||
assert.Equal(t, 2, len(result.manifests))
|
||||
assert.Equal(t, 2, len(result.assets))
|
||||
assert.Equal(t, 0, len(result.refs))
|
||||
}
|
||||
|
||||
r = getImageWithAttestation(plainSpdx)
|
||||
indexDigest = reflect.ValueOf(r.indexes).MapKeys()[0].String()
|
||||
result, err = loader.Load(ctx, fmt.Sprintf("test@%s", indexDigest))
|
||||
assert.NoError(t, err)
|
||||
if err == nil {
|
||||
assert.Equal(t, 1, len(result.indexes))
|
||||
assert.Equal(t, 2, len(result.images))
|
||||
assert.Equal(t, 2, len(result.platforms))
|
||||
assert.Equal(t, 4, len(result.manifests))
|
||||
assert.Equal(t, 2, len(result.assets))
|
||||
assert.Equal(t, 2, len(result.refs))
|
||||
|
||||
for d1, m := range r.manifests {
|
||||
if _, ok := m.desc.Annotations["vnd.docker.reference.digest"]; ok {
|
||||
d2 := digest.Digest(m.desc.Annotations["vnd.docker.reference.digest"])
|
||||
assert.Equal(t, d1, result.refs[d2][0])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSBOM(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
@ -37,11 +76,19 @@ func TestSBOM(t *testing.T) {
|
||||
fetcher, _ := loader.resolver.Fetcher(ctx, "")
|
||||
|
||||
r := getImageWithAttestation(test.contentType)
|
||||
r.refs["sha256:linux/amd64"] = []digest.Digest{
|
||||
"sha256:linux/amd64-attestation",
|
||||
imageDigest := r.images["linux/amd64"]
|
||||
|
||||
// Manual mapping
|
||||
for d, m := range r.manifests {
|
||||
if m.desc.Annotations["vnd.docker.reference.digest"] == string(imageDigest) {
|
||||
r.refs[imageDigest] = []digest.Digest{
|
||||
d,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a := asset{}
|
||||
loader.scanSBOM(ctx, fetcher, r, r.refs["sha256:linux/amd64"], &a)
|
||||
loader.scanSBOM(ctx, fetcher, r, r.refs[imageDigest], &a)
|
||||
r.assets["linux/amd64"] = a
|
||||
actual, err := r.SBOM()
|
||||
|
||||
@ -77,13 +124,19 @@ func TestProvenance(t *testing.T) {
|
||||
fetcher, _ := loader.resolver.Fetcher(ctx, "")
|
||||
|
||||
r := getImageWithAttestation(test.contentType)
|
||||
imageDigest := r.images["linux/amd64"]
|
||||
|
||||
r.refs["sha256:linux/amd64"] = []digest.Digest{
|
||||
"sha256:linux/amd64-attestation",
|
||||
// Manual mapping
|
||||
for d, m := range r.manifests {
|
||||
if m.desc.Annotations["vnd.docker.reference.digest"] == string(imageDigest) {
|
||||
r.refs[imageDigest] = []digest.Digest{
|
||||
d,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a := asset{}
|
||||
loader.scanProvenance(ctx, fetcher, r, r.refs["sha256:linux/amd64"], &a)
|
||||
loader.scanProvenance(ctx, fetcher, r, r.refs[imageDigest], &a)
|
||||
r.assets["linux/amd64"] = a
|
||||
actual, err := r.Provenance()
|
||||
|
||||
|
Reference in New Issue
Block a user