diff --git a/internal/client/unit_test.go b/internal/client/unit_test.go index 0c788c8e3..ae596486e 100644 --- a/internal/client/unit_test.go +++ b/internal/client/unit_test.go @@ -15,6 +15,7 @@ import ( "testing" "github.com/osbuild/osbuild-composer/internal/distro/test_distro" + "github.com/osbuild/osbuild-composer/internal/distroregistry" rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd" "github.com/osbuild/osbuild-composer/internal/reporegistry" "github.com/osbuild/osbuild-composer/internal/rpmmd" @@ -45,11 +46,13 @@ func executeTests(m *testing.M) int { } fixture := rpmmd_mock.BaseFixture(path.Join(tmpdir, "/jobs")) rpm := rpmmd_mock.NewRPMMDMock(fixture) - distro := test_distro.New() - arch, err := distro.GetArch(test_distro.TestArchName) + + distro1 := test_distro.New() + arch, err := distro1.GetArch(test_distro.TestArchName) if err != nil { panic(err) } + distro2 := test_distro.New2() rr := reporegistry.NewFromDistrosRepoConfigs(rpmmd.DistrosRepoConfigs{ test_distro.TestDistroName: { @@ -59,8 +62,13 @@ func executeTests(m *testing.M) int { }, }) + dr, err := distroregistry.New(distro1, distro1, distro2) + if err != nil { + panic(err) + } + logger := log.New(os.Stdout, "", 0) - api := weldr.NewTestAPI(rpm, arch, distro, rr, logger, fixture.Store, fixture.Workers, "") + api := weldr.NewTestAPI(rpm, arch, dr, rr, logger, fixture.Store, fixture.Workers, "") server := http.Server{Handler: api} defer server.Close() diff --git a/internal/weldr/api.go b/internal/weldr/api.go index 803c7a4bd..2699d8b4a 100644 --- a/internal/weldr/api.go +++ b/internal/weldr/api.go @@ -99,20 +99,23 @@ func (api *API) systemRepoNames() (names []string) { var ValidBlueprintName = regexp.MustCompile(`^[a-zA-Z0-9._-]+$`) // NewTestAPI is used for the test framework, sets up a single distro -func NewTestAPI(rpm rpmmd.RPMMD, arch distro.Arch, distro distro.Distro, rr *reporegistry.RepoRegistry, logger *log.Logger, store *store.Store, workers *worker.Server, compatOutputDir string) *API { - distros, _ := distroregistry.New(distro, distro) +func NewTestAPI(rpm rpmmd.RPMMD, arch distro.Arch, dr *distroregistry.Registry, + rr *reporegistry.RepoRegistry, logger *log.Logger, + store *store.Store, workers *worker.Server, compatOutputDir string) *API { + // Use the first entry as the host distribution + hostDistro := dr.GetDistro(dr.List()[0]) api := &API{ store: store, workers: workers, rpmmd: rpm, arch: arch, - distro: distro, + distro: hostDistro, repoRegistry: rr, logger: logger, compatOutputDir: compatOutputDir, - hostDistroName: distro.Name(), - distros: distros, + hostDistroName: hostDistro.Name(), + distros: dr, } return setupRouter(api) } diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go index 091213083..b95d088ff 100644 --- a/internal/weldr/api_test.go +++ b/internal/weldr/api_test.go @@ -19,6 +19,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/common" "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro/test_distro" + "github.com/osbuild/osbuild-composer/internal/distroregistry" rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd" "github.com/osbuild/osbuild-composer/internal/reporegistry" "github.com/osbuild/osbuild-composer/internal/rpmmd" @@ -43,13 +44,19 @@ func createWeldrAPI(tempdir string, fixtureGenerator rpmmd_mock.FixtureGenerator }, }) - d := test_distro.New() - arch, err := d.GetArch(test_distro.TestArchName) + distro1 := test_distro.New() + arch, err := distro1.GetArch(test_distro.TestArchName) + if err != nil { + panic(err) + } + distro2 := test_distro.New2() + + dr, err := distroregistry.New(distro1, distro1, distro2) if err != nil { panic(err) } - return NewTestAPI(rpm, arch, d, rr, nil, fixture.Store, fixture.Workers, ""), fixture.Store + return NewTestAPI(rpm, arch, dr, rr, nil, fixture.Store, fixture.Workers, ""), fixture.Store } func TestBasic(t *testing.T) { @@ -71,7 +78,7 @@ func TestBasic(t *testing.T) { {"/api/v0/blueprints/list", http.StatusOK, `{"total":1,"offset":0,"limit":1,"blueprints":["test"]}`}, {"/api/v0/blueprints/info/", http.StatusNotFound, `{"errors":[{"code":404,"id":"HTTPError","msg":"Not Found"}],"status":false}`}, {"/api/v0/blueprints/info/foo", http.StatusOK, `{"blueprints":[],"changes":[],"errors":[{"id":"UnknownBlueprint","msg":"foo: "}]}`}, - {"/api/v1/distros/list", http.StatusOK, `{"distros": ["test-distro"]}`}, + {"/api/v1/distros/list", http.StatusOK, `{"distros": ["test-distro", "test-distro-2"]}`}, } tempdir, err := ioutil.TempDir("", "weldr-tests-") @@ -98,6 +105,7 @@ func TestBlueprintsNew(t *testing.T) { {"POST", "/api/v0/blueprints/new", `{"name":"","description":"Test","packages":[{"name":"httpd","version":"2.4.*"}],"version":"0.0.0"}`, http.StatusBadRequest, `{"status":false,"errors":[{"id":"InvalidChars","msg":"Invalid characters in API path"}]}`}, {"POST", "/api/v0/blueprints/new", ``, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"Missing blueprint"}]}`}, {"POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","distro":"test-distro","packages":[],"version":""}`, http.StatusOK, `{"status":true}`}, + {"POST", "/api/v0/blueprints/new", `{"name":"test2","description":"Test 2","distro":"test-distro-2","packages":[],"version":""}`, http.StatusOK, `{"status":true}`}, {"POST", "/api/v0/blueprints/new", `{"name":"test","description":"Test","distro":"fedora-1","packages":[],"version":""}`, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"'fedora-1' is not a valid distribution"}]}`}, }