Add new configuration option `distro_aliases`, which is a map of strings, allowing to specify distro name alias for supported distributions. Define aliases for RHEL major versions without the minor version specified. For now, the distro aliases map is not used by any API implementation and it is ignored. Signed-off-by: Tomáš Hozza <thozza@redhat.com>
137 lines
3.9 KiB
Go
137 lines
3.9 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestEmpty(t *testing.T) {
|
|
config, err := LoadConfig("testdata/empty-config.toml")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, config)
|
|
require.Equal(t, GetDefaultConfig(), config)
|
|
}
|
|
|
|
func TestNonExisting(t *testing.T) {
|
|
config, err := LoadConfig("testdata/non-existing-config.toml")
|
|
require.Nil(t, err)
|
|
require.Equal(t, config, GetDefaultConfig())
|
|
}
|
|
|
|
func TestDefaultConfig(t *testing.T) {
|
|
defaultConfig := GetDefaultConfig()
|
|
|
|
require.False(t, defaultConfig.Koji.EnableJWT)
|
|
require.Equal(t, "", defaultConfig.Koji.JWTKeysCA)
|
|
require.False(t, defaultConfig.Worker.EnableJWT)
|
|
require.Equal(t, "", defaultConfig.Worker.JWTKeysCA)
|
|
|
|
require.Equal(t, KojiAPIConfig{
|
|
EnableTLS: true,
|
|
EnableMTLS: true,
|
|
EnableJWT: false,
|
|
}, defaultConfig.Koji)
|
|
|
|
require.Equal(t, WorkerAPIConfig{
|
|
RequestJobTimeout: "0",
|
|
BasePath: "/api/worker/v1",
|
|
EnableArtifacts: true,
|
|
EnableTLS: true,
|
|
EnableMTLS: true,
|
|
EnableJWT: false,
|
|
}, defaultConfig.Worker)
|
|
|
|
expectedWeldrAPIConfig := WeldrAPIConfig{
|
|
DistroConfigs: map[string]WeldrDistroConfig{
|
|
"rhel-*": {
|
|
[]string{
|
|
"azure-eap7-rhui",
|
|
"azure-rhui",
|
|
"azure-sap-rhui",
|
|
"ec2",
|
|
"ec2-ha",
|
|
"ec2-sap",
|
|
"gce-rhui",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
require.Equal(t, expectedWeldrAPIConfig, defaultConfig.WeldrAPI)
|
|
|
|
expectedDistroAliases := map[string]string{
|
|
"rhel-7": "rhel-7.9",
|
|
"rhel-8": "rhel-8.10",
|
|
"rhel-9": "rhel-9.4",
|
|
}
|
|
require.Equal(t, expectedDistroAliases, defaultConfig.DistroAliases)
|
|
|
|
require.Equal(t, "text", defaultConfig.LogFormat)
|
|
}
|
|
|
|
func TestConfig(t *testing.T) {
|
|
config, err := LoadConfig("testdata/test.toml")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, config)
|
|
|
|
require.Equal(t, config.Koji.AllowedDomains, []string{"osbuild.org"})
|
|
require.Equal(t, config.Koji.CA, "/etc/osbuild-composer/ca-crt.pem")
|
|
|
|
require.Equal(t, config.Worker.AllowedDomains, []string{"osbuild.org"})
|
|
require.Equal(t, config.Worker.CA, "/etc/osbuild-composer/ca-crt.pem")
|
|
|
|
require.Equal(t, []string{"qcow2", "vmdk"}, config.WeldrAPI.DistroConfigs["*"].ImageTypeDenyList)
|
|
require.Equal(t, []string{"qcow2"}, config.WeldrAPI.DistroConfigs["rhel-84"].ImageTypeDenyList)
|
|
|
|
require.Equal(t, "overwrite-me-db", config.Worker.PGDatabase)
|
|
|
|
require.NoError(t, os.Setenv("PGDATABASE", "composer-db"))
|
|
config, err = LoadConfig("testdata/test.toml")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, config)
|
|
require.Equal(t, "composer-db", config.Worker.PGDatabase)
|
|
|
|
require.False(t, config.Koji.EnableJWT)
|
|
require.Equal(t, []string{"https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/certs"}, config.Koji.JWTKeysURLs)
|
|
require.Equal(t, "", config.Koji.JWTKeysCA)
|
|
require.Equal(t, "/var/lib/osbuild-composer/acl", config.Koji.JWTACLFile)
|
|
|
|
// 'rhel-8' and 'rhel-9' aliases are overwritten by the config file
|
|
expectedDistroAliases := map[string]string{
|
|
"rhel-7": "rhel-7.9", // this value is from the default config
|
|
"rhel-8": "rhel-8.9",
|
|
"rhel-9": "rhel-9.3",
|
|
}
|
|
require.Equal(t, expectedDistroAliases, config.DistroAliases)
|
|
}
|
|
|
|
func TestWeldrDistrosImageTypeDenyList(t *testing.T) {
|
|
config, err := LoadConfig("testdata/test.toml")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, config)
|
|
|
|
expectedWeldrDistrosImageTypeDenyList := map[string][]string{
|
|
"*": {"qcow2", "vmdk"},
|
|
"rhel-84": {"qcow2"},
|
|
}
|
|
|
|
require.Equal(t, expectedWeldrDistrosImageTypeDenyList, config.weldrDistrosImageTypeDenyList())
|
|
}
|
|
|
|
func TestDumpConfig(t *testing.T) {
|
|
config := &ComposerConfigFile{
|
|
Worker: WorkerAPIConfig{
|
|
PGPassword: "sensitive",
|
|
},
|
|
}
|
|
|
|
var buf bytes.Buffer
|
|
require.NoError(t, DumpConfig(*config, &buf))
|
|
require.Contains(t, buf.String(), "pg_password = \"\"")
|
|
require.NotContains(t, buf.String(), "sensitive")
|
|
// DumpConfig takes a copy
|
|
require.Equal(t, "sensitive", config.Worker.PGPassword)
|
|
}
|