Add 2nd distribution to the NewTestAPI function
This will help test support for multiple distributions.
This commit is contained in:
parent
c1da403dc0
commit
5021ef06f7
3 changed files with 31 additions and 12 deletions
|
|
@ -15,6 +15,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/osbuild/osbuild-composer/internal/distro/test_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"
|
rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd"
|
||||||
"github.com/osbuild/osbuild-composer/internal/reporegistry"
|
"github.com/osbuild/osbuild-composer/internal/reporegistry"
|
||||||
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
"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"))
|
fixture := rpmmd_mock.BaseFixture(path.Join(tmpdir, "/jobs"))
|
||||||
rpm := rpmmd_mock.NewRPMMDMock(fixture)
|
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 {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
distro2 := test_distro.New2()
|
||||||
|
|
||||||
rr := reporegistry.NewFromDistrosRepoConfigs(rpmmd.DistrosRepoConfigs{
|
rr := reporegistry.NewFromDistrosRepoConfigs(rpmmd.DistrosRepoConfigs{
|
||||||
test_distro.TestDistroName: {
|
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)
|
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}
|
server := http.Server{Handler: api}
|
||||||
defer server.Close()
|
defer server.Close()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,20 +99,23 @@ func (api *API) systemRepoNames() (names []string) {
|
||||||
var ValidBlueprintName = regexp.MustCompile(`^[a-zA-Z0-9._-]+$`)
|
var ValidBlueprintName = regexp.MustCompile(`^[a-zA-Z0-9._-]+$`)
|
||||||
|
|
||||||
// NewTestAPI is used for the test framework, sets up a single distro
|
// 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 {
|
func NewTestAPI(rpm rpmmd.RPMMD, arch distro.Arch, dr *distroregistry.Registry,
|
||||||
distros, _ := distroregistry.New(distro, distro)
|
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{
|
api := &API{
|
||||||
store: store,
|
store: store,
|
||||||
workers: workers,
|
workers: workers,
|
||||||
rpmmd: rpm,
|
rpmmd: rpm,
|
||||||
arch: arch,
|
arch: arch,
|
||||||
distro: distro,
|
distro: hostDistro,
|
||||||
repoRegistry: rr,
|
repoRegistry: rr,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
compatOutputDir: compatOutputDir,
|
compatOutputDir: compatOutputDir,
|
||||||
hostDistroName: distro.Name(),
|
hostDistroName: hostDistro.Name(),
|
||||||
distros: distros,
|
distros: dr,
|
||||||
}
|
}
|
||||||
return setupRouter(api)
|
return setupRouter(api)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"github.com/osbuild/osbuild-composer/internal/common"
|
"github.com/osbuild/osbuild-composer/internal/common"
|
||||||
"github.com/osbuild/osbuild-composer/internal/distro"
|
"github.com/osbuild/osbuild-composer/internal/distro"
|
||||||
"github.com/osbuild/osbuild-composer/internal/distro/test_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"
|
rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd"
|
||||||
"github.com/osbuild/osbuild-composer/internal/reporegistry"
|
"github.com/osbuild/osbuild-composer/internal/reporegistry"
|
||||||
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
||||||
|
|
@ -43,13 +44,19 @@ func createWeldrAPI(tempdir string, fixtureGenerator rpmmd_mock.FixtureGenerator
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
d := test_distro.New()
|
distro1 := test_distro.New()
|
||||||
arch, err := d.GetArch(test_distro.TestArchName)
|
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 {
|
if err != nil {
|
||||||
panic(err)
|
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) {
|
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/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/", 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/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-")
|
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", `{"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", ``, 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":"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"}]}`},
|
{"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"}]}`},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue