diff --git a/internal/client/unit_test.go b/internal/client/unit_test.go index 3617bdd6c..cb0b27751 100644 --- a/internal/client/unit_test.go +++ b/internal/client/unit_test.go @@ -70,7 +70,7 @@ func executeTests(m *testing.M) int { if err != nil { panic(err) } - distro2 := test_distro.New2() + distro2 := test_distro.NewTestDistro("test-distro-2", "platform:test-2", "2") rr := reporegistry.NewFromDistrosRepoConfigs(rpmmd.DistrosRepoConfigs{ test_distro.TestDistroName: { diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go index ef01e5005..d489bebdb 100644 --- a/internal/weldr/api_test.go +++ b/internal/weldr/api_test.go @@ -3,6 +3,7 @@ package weldr import ( "archive/tar" "bytes" + "crypto/sha256" "encoding/json" "fmt" "io" @@ -17,6 +18,7 @@ import ( "time" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/osbuild/images/pkg/container" "github.com/osbuild/images/pkg/distro" "github.com/osbuild/images/pkg/distro/test_distro" "github.com/osbuild/images/pkg/distroregistry" @@ -81,7 +83,7 @@ func createWeldrAPI(tempdir string, fixtureGenerator rpmmd_mock.FixtureGenerator if err != nil { panic(err) } - distro2 := test_distro.New2() + distro2 := test_distro.NewTestDistro("test-distro-2", "platform:test-2", "2") dr, err := distroregistry.New(distro1, distro1, distro2) if err != nil { @@ -130,7 +132,7 @@ func createWeldrAPI2(tempdir string, fixtureGenerator rpmmd_mock.FixtureGenerato if err != nil { panic(err) } - distro2 := test_distro.New2() + distro2 := test_distro.NewTestDistro("test-distro-2", "platform:test-2", "2") dr, err := distroregistry.New(distro1, distro2) if err != nil { @@ -149,6 +151,45 @@ func createWeldrAPI2(tempdir string, fixtureGenerator rpmmd_mock.FixtureGenerato return NewTestAPI(solver, arch, dr, rr, nil, fixture.Store, fixture.Workers, "", distroImageTypeDenylist), fixture.Store } +// ResolveContent transforms content source specs into resolved specs for serialization. +// For packages, it uses the dnfjson_mock.BaseDeps() every time, but retains +// the map keys from the input. +// For ostree commits it hashes the URL+Ref to create a checksum. +func ResolveContent(pkgs map[string][]rpmmd.PackageSet, containers map[string][]container.SourceSpec, commits map[string][]ostree.SourceSpec) (map[string][]rpmmd.PackageSpec, map[string][]container.Spec, map[string][]ostree.CommitSpec) { + + pkgSpecs := make(map[string][]rpmmd.PackageSpec, len(pkgs)) + for name := range pkgs { + pkgSpecs[name] = dnfjson_mock.BaseDeps() + } + + containerSpecs := make(map[string][]container.Spec, len(containers)) + for name := range containers { + containerSpecs[name] = make([]container.Spec, len(containers[name])) + for idx := range containers[name] { + containerSpecs[name][idx] = container.Spec{ + Source: containers[name][idx].Source, + TLSVerify: containers[name][idx].TLSVerify, + LocalName: containers[name][idx].Name, + } + } + } + + commitSpecs := make(map[string][]ostree.CommitSpec, len(commits)) + for name := range commits { + commitSpecs[name] = make([]ostree.CommitSpec, len(commits[name])) + for idx := range commits[name] { + commitSpecs[name][idx] = ostree.CommitSpec{ + Ref: commits[name][idx].Ref, + URL: commits[name][idx].URL, + Checksum: fmt.Sprintf("%x", sha256.Sum256([]byte(commits[name][idx].URL+commits[name][idx].Ref))), + } + fmt.Printf("Test distro spec: %+v\n", commitSpecs[name][idx]) + } + } + + return pkgSpecs, containerSpecs, commitSpecs +} + func TestBasic(t *testing.T) { var cases = []struct { Path string @@ -894,7 +935,7 @@ func TestCompose(t *testing.T) { manifest, _, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, 0) require.NoError(t, err) - rPkgs, rContainers, rCommits := test_distro.ResolveContent(manifest.GetPackageSetChains(), manifest.GetContainerSourceSpecs(), manifest.GetOSTreeSourceSpecs()) + rPkgs, rContainers, rCommits := ResolveContent(manifest.GetPackageSetChains(), manifest.GetContainerSourceSpecs(), manifest.GetOSTreeSourceSpecs()) mf, err := manifest.Serialize(rPkgs, rContainers, rCommits) require.NoError(t, err) @@ -905,7 +946,7 @@ func TestCompose(t *testing.T) { ostreeManifest, _, err := ostreeImgType.Manifest(nil, distro.ImageOptions{OSTree: &ostreeOptions}, nil, 0) require.NoError(t, err) - rPkgs, rContainers, rCommits = test_distro.ResolveContent(ostreeManifest.GetPackageSetChains(), ostreeManifest.GetContainerSourceSpecs(), ostreeManifest.GetOSTreeSourceSpecs()) + rPkgs, rContainers, rCommits = ResolveContent(ostreeManifest.GetPackageSetChains(), ostreeManifest.GetContainerSourceSpecs(), ostreeManifest.GetOSTreeSourceSpecs()) omf, err := ostreeManifest.Serialize(rPkgs, rContainers, rCommits) require.NoError(t, err) @@ -1016,7 +1057,7 @@ func TestCompose(t *testing.T) { ostreeManifestOther, _, err := ostreeImgType.Manifest(nil, distro.ImageOptions{OSTree: &ostreeOptionsOther}, nil, 0) require.NoError(t, err) - rPkgs, rContainers, rCommits = test_distro.ResolveContent(ostreeManifestOther.GetPackageSetChains(), ostreeManifestOther.GetContainerSourceSpecs(), ostreeManifestOther.GetOSTreeSourceSpecs()) + rPkgs, rContainers, rCommits = ResolveContent(ostreeManifestOther.GetPackageSetChains(), ostreeManifestOther.GetContainerSourceSpecs(), ostreeManifestOther.GetOSTreeSourceSpecs()) omfo, err := ostreeManifest.Serialize(rPkgs, rContainers, rCommits) require.NoError(t, err) @@ -1050,14 +1091,15 @@ func TestCompose(t *testing.T) { } // For 2nd distribution - arch2, err := test_distro.New2().GetArch(test_distro.TestArchName) + distro2 := test_distro.NewTestDistro("test-distro-2", "platform:test-2", "2") + arch2, err := distro2.GetArch(test_distro.TestArchName) require.NoError(t, err) imgType2, err := arch2.GetImageType(test_distro.TestImageTypeName) require.NoError(t, err) manifest2, _, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, 0) require.NoError(t, err) - rPkgs, rContainers, rCommits = test_distro.ResolveContent(manifest2.GetPackageSetChains(), manifest2.GetContainerSourceSpecs(), manifest2.GetOSTreeSourceSpecs()) + rPkgs, rContainers, rCommits = ResolveContent(manifest2.GetPackageSetChains(), manifest2.GetContainerSourceSpecs(), manifest2.GetOSTreeSourceSpecs()) mf2, err := manifest2.Serialize(rPkgs, rContainers, rCommits) require.NoError(t, err) @@ -2040,7 +2082,8 @@ func TestComposeTypes_ImageTypeDenylist(t *testing.T) { } func TestComposePOST_ImageTypeDenylist(t *testing.T) { - arch, err := test_distro.New2().GetArch(test_distro.TestArch2Name) + distro2 := test_distro.NewTestDistro("test-distro-2", "platform:test-2", "2") + arch, err := distro2.GetArch(test_distro.TestArch2Name) require.NoError(t, err) imgType, err := arch.GetImageType(test_distro.TestImageTypeName) require.NoError(t, err) @@ -2049,7 +2092,7 @@ func TestComposePOST_ImageTypeDenylist(t *testing.T) { manifest, _, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, 0) require.NoError(t, err) - rPkgs, rContainers, rCommits := test_distro.ResolveContent(manifest.GetPackageSetChains(), manifest.GetContainerSourceSpecs(), manifest.GetOSTreeSourceSpecs()) + rPkgs, rContainers, rCommits := ResolveContent(manifest.GetPackageSetChains(), manifest.GetContainerSourceSpecs(), manifest.GetOSTreeSourceSpecs()) mf, err := manifest.Serialize(rPkgs, rContainers, rCommits) require.NoError(t, err)