api: improve parity of /{modules,projects}/{list,info} routes

These endpoint are similar in many ways, therefore just one commit. Their
functionality is basically same as in lorax except for error messages and
weird edge cases when handling trailing slashes.

closes #64, closes #65
This commit is contained in:
Ondřej Budai 2019-11-14 14:46:03 +01:00 committed by Tom Gundersen
parent 2ed070b218
commit dd9a815c40
6 changed files with 441 additions and 232 deletions

View file

@ -1,14 +1,47 @@
package rpmmd_mock
import (
"fmt"
"github.com/osbuild/osbuild-composer/internal/rpmmd"
"time"
)
func generatePackageList() rpmmd.PackageList {
baseTime, err := time.Parse(time.RFC3339, "2006-01-02T15:04:05Z")
if err != nil {
panic(err)
}
var packageList rpmmd.PackageList
for i := 0; i < 22; i++ {
basePackage := rpmmd.Package{
Name: fmt.Sprintf("package%d", i),
Summary: fmt.Sprintf("pkg%d sum", i),
Description: fmt.Sprintf("pkg%d desc", i),
URL: fmt.Sprintf("https://pkg%d.example.com", i),
Epoch: 0,
Version: fmt.Sprintf("%d.0", i),
Release: fmt.Sprintf("%d.fc30", i),
Arch: "x86_64",
BuildTime: baseTime.AddDate(0, i, 0),
License: "MIT",
}
secondBuild := basePackage
secondBuild.Version = fmt.Sprintf("%d.1", i)
secondBuild.BuildTime = basePackage.BuildTime.AddDate(0, 0, 1)
packageList = append(packageList, basePackage, secondBuild)
}
return packageList
}
var basePackageList = fetchPackageList{
rpmmd.PackageList{
{Name: "package1"},
{Name: "package2"},
},
generatePackageList(),
nil,
}
@ -17,14 +50,14 @@ var BaseFixture = Fixture{
depsolve{
[]rpmmd.PackageSpec{
{
Name: "libgpg-error",
Name: "dep-package1",
Epoch: 0,
Version: "1.33",
Release: "2.fc30",
Arch: "x86_64",
},
{
Name: "libsemanage",
Name: "dep-package2",
Epoch: 0,
Version: "2.9",
Release: "1.fc30",
@ -56,3 +89,20 @@ var BadDepsolve = Fixture{
},
},
}
var BadFetch = Fixture{
fetchPackageList{
ret: nil,
err: &rpmmd.DNFError{
Kind: "FetchError",
Reason: "There was a problem when fetching packages.",
},
},
depsolve{
nil,
&rpmmd.DNFError{
Kind: "DepsolveError",
Reason: "There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch",
},
},
}