Add support for mocking rpmmd

We want to test API methods which calls dnf. Unfortunately, calling dnf
is expensive operation - it requires network access and downloading
a lot of (meta)data. This commit changes the rpmmd implementation
so that it can be mocked.
This commit is contained in:
Ondřej Budai 2019-11-12 20:14:32 +01:00 committed by Tom Gundersen
parent 9970150ed5
commit 495f5b558b
6 changed files with 97 additions and 23 deletions

View file

@ -0,0 +1,19 @@
package rpmmd_mock
import (
"github.com/osbuild/osbuild-composer/internal/rpmmd"
)
var BaseFixture = Fixture{
fetchPackageList{
rpmmd.PackageList{
{Name: "package1"},
{Name: "package2"},
},
nil,
},
depsolve{
nil,
nil,
},
}

View file

@ -0,0 +1,33 @@
package rpmmd_mock
import "github.com/osbuild/osbuild-composer/internal/rpmmd"
type fetchPackageList struct {
ret rpmmd.PackageList
err error
}
type depsolve struct {
ret []rpmmd.PackageSpec
err error
}
type Fixture struct {
fetchPackageList
depsolve
}
type rpmmdMock struct {
Fixture Fixture
}
func NewRPMMDMock(fixture Fixture) rpmmd.RPMMD {
return &rpmmdMock{Fixture: fixture}
}
func (r *rpmmdMock) FetchPackageList(repos []rpmmd.RepoConfig) (rpmmd.PackageList, error) {
return r.Fixture.fetchPackageList.ret, r.Fixture.fetchPackageList.err
}
func (r *rpmmdMock) Depsolve(specs []string, repos []rpmmd.RepoConfig) ([]rpmmd.PackageSpec, error) {
return r.Fixture.depsolve.ret, r.Fixture.depsolve.err
}