distro/test: update test distro with new behaviour

Add a checksum as a hash of URL + Ref.
Use the parent ref instead of the image ref when it's set.  This makes
the test distro always behave like ostree commit and container types
(image types that can use an ostree parent) and not raw image or
installers (that use ostree commits as a payload).

Modify the weldr API test with the expected error message.
This commit is contained in:
Achilleas Koutsou 2023-06-06 17:52:37 +02:00 committed by Ondřej Budai
parent 96b7f05f6f
commit 9ed61d021b
3 changed files with 12 additions and 3 deletions

View file

@ -1,6 +1,7 @@
package distro_test package distro_test
import ( import (
"crypto/sha256"
"encoding/json" "encoding/json"
"fmt" "fmt"
"strings" "strings"
@ -167,7 +168,7 @@ func TestImageTypePipelineNames(t *testing.T) {
assert.NoError(err) assert.NoError(err)
containers := make(map[string][]container.Spec, 0) containers := make(map[string][]container.Spec, 0)
// "resolve" ostree commits by copying the source specs into commit specs
ostreeSources := m.GetOSTreeSourceSpecs() ostreeSources := m.GetOSTreeSourceSpecs()
commits := make(map[string][]ostree.CommitSpec, len(ostreeSources)) commits := make(map[string][]ostree.CommitSpec, len(ostreeSources))
for name, commitSources := range ostreeSources { for name, commitSources := range ostreeSources {
@ -176,7 +177,7 @@ func TestImageTypePipelineNames(t *testing.T) {
commitSpecs[idx] = ostree.CommitSpec{ commitSpecs[idx] = ostree.CommitSpec{
Ref: commitSource.Ref, Ref: commitSource.Ref,
URL: commitSource.URL, URL: commitSource.URL,
Checksum: commitSource.Parent, Checksum: fmt.Sprintf("%x", sha256.Sum256([]byte(commitSource.URL+commitSource.Ref))),
} }
} }
commits[name] = commitSpecs commits[name] = commitSpecs

View file

@ -245,9 +245,17 @@ func (t *TestImageType) Manifest(b *blueprint.Blueprint, options distro.ImageOpt
Ref: defaultRef, Ref: defaultRef,
} }
if ostreeOptions := options.OSTree; ostreeOptions != nil { if ostreeOptions := options.OSTree; ostreeOptions != nil {
// handle the parameter combo error like we do in distros
if ostreeOptions.ParentRef != "" && ostreeOptions.URL == "" {
// specifying parent ref also requires URL
return nil, nil, ostree.NewParameterComboError("ostree parent ref specified, but no URL to retrieve it")
}
if ostreeOptions.ImageRef != "" { // override with ref from image options if ostreeOptions.ImageRef != "" { // override with ref from image options
ostreeSource.Ref = ostreeOptions.ImageRef ostreeSource.Ref = ostreeOptions.ImageRef
} }
if ostreeOptions.ParentRef != "" { // override with parent ref
ostreeSource.Ref = ostreeOptions.ParentRef
}
// copy any other options that might be specified // copy any other options that might be specified
ostreeSource.URL = options.OSTree.URL ostreeSource.URL = options.OSTree.URL
ostreeSource.RHSM = options.OSTree.RHSM ostreeSource.RHSM = options.OSTree.RHSM

View file

@ -1165,7 +1165,7 @@ func TestCompose(t *testing.T) {
"/api/v1/compose", "/api/v1/compose",
fmt.Sprintf(`{"blueprint_name": "test","compose_type":"%s","branch":"master","ostree":{"ref":"refid","parent":"parentid","url":""}}`, test_distro.TestImageTypeOSTree), fmt.Sprintf(`{"blueprint_name": "test","compose_type":"%s","branch":"master","ostree":{"ref":"refid","parent":"parentid","url":""}}`, test_distro.TestImageTypeOSTree),
http.StatusBadRequest, http.StatusBadRequest,
`{"status": false, "errors":[{"id":"OSTreeOptionsError","msg":"ostree parent ref specified, but no URL to retrieve it"}]}`, `{"status": false, "errors":[{"id":"ManifestCreationFailed","msg":"failed to initialize osbuild manifest: ostree parent ref specified, but no URL to retrieve it"}]}`,
expectedComposeOSTree, expectedComposeOSTree,
[]string{"build_id", "warnings"}, []string{"build_id", "warnings"},
}, },