debian-forge-composer/internal/blueprint/customizations_test.go
Tom Gundersen 0efc345b2d rhel84/grub2: set saved_entry
Explicitly set the kernel to boot into.

Also change the blueprint/kernenl handling:

Rather than only falling back to the default kernel name for
getting the package list, let GetKernel() always return the
correct result so we can rely on this being consistent.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2021-02-20 20:01:15 +01:00

269 lines
6 KiB
Go

package blueprint
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestGetHostname(t *testing.T) {
var expectedHostname = "Hostname"
TestCustomizations := Customizations{
Hostname: &expectedHostname,
}
retHostname := TestCustomizations.GetHostname()
assert.Equal(t, &expectedHostname, retHostname)
}
func TestGetKernel(t *testing.T) {
expectedKernel := KernelCustomization{
Append: "--test",
Name: "kernel",
}
TestCustomizations := Customizations{
Kernel: &expectedKernel,
}
retKernel := TestCustomizations.GetKernel()
assert.Equal(t, &expectedKernel, retKernel)
}
func TestSSHKey(t *testing.T) {
expectedSSHKeys := []SSHKeyCustomization{
SSHKeyCustomization{
User: "test-user",
Key: "test-key",
},
}
TestCustomizations := Customizations{
SSHKey: expectedSSHKeys,
}
retUser := TestCustomizations.GetUsers()[0].Name
retKey := *TestCustomizations.GetUsers()[0].Key
assert.Equal(t, expectedSSHKeys[0].User, retUser)
assert.Equal(t, expectedSSHKeys[0].Key, retKey)
}
func TestGetUsers(t *testing.T) {
Desc := "Test descritpion"
Pass := "testpass"
Key := "testkey"
Home := "Home"
Shell := "Shell"
Groups := []string{
"Group",
}
UID := 123
GID := 321
expectedUsers := []UserCustomization{
UserCustomization{
Name: "John",
Description: &Desc,
Password: &Pass,
Key: &Key,
Home: &Home,
Shell: &Shell,
Groups: Groups,
UID: &UID,
GID: &GID,
},
}
TestCustomizations := Customizations{
User: expectedUsers,
}
retUsers := TestCustomizations.GetUsers()
assert.ElementsMatch(t, expectedUsers, retUsers)
}
func TestGetGroups(t *testing.T) {
GID := 1234
expectedGroups := []GroupCustomization{
GroupCustomization{
Name: "TestGroup",
GID: &GID,
},
}
TestCustomizations := Customizations{
Group: expectedGroups,
}
retGroups := TestCustomizations.GetGroups()
assert.ElementsMatch(t, expectedGroups, retGroups)
}
func TestGetTimezoneSettings(t *testing.T) {
expectedTimezone := "testZONE"
expectedNTPServers := []string{
"server",
}
expectedTimezoneCustomization := TimezoneCustomization{
Timezone: &expectedTimezone,
NTPServers: expectedNTPServers,
}
TestCustomizations := Customizations{
Timezone: &expectedTimezoneCustomization,
}
retTimezone, retNTPServers := TestCustomizations.GetTimezoneSettings()
assert.Equal(t, expectedTimezone, *retTimezone)
assert.Equal(t, expectedNTPServers, retNTPServers)
}
func TestGetPrimaryLocale(t *testing.T) {
expectedLanguages := []string{
"enUS",
}
expectedKeyboard := "en"
expectedLocaleCustomization := LocaleCustomization{
Languages: expectedLanguages,
Keyboard: &expectedKeyboard,
}
TestCustomizations := Customizations{
Locale: &expectedLocaleCustomization,
}
retLanguage, retKeyboard := TestCustomizations.GetPrimaryLocale()
assert.Equal(t, expectedLanguages[0], *retLanguage)
assert.Equal(t, expectedKeyboard, *retKeyboard)
}
func TestGetFirewall(t *testing.T) {
expectedPorts := []string{"22", "9090"}
expectedServices := FirewallServicesCustomization{
Enabled: []string{"cockpit", "osbuild-composer"},
Disabled: []string{"TCP", "httpd"},
}
expectedFirewall := FirewallCustomization{
Ports: expectedPorts,
Services: &expectedServices,
}
TestCustomizations := Customizations{
Firewall: &expectedFirewall,
}
retFirewall := TestCustomizations.GetFirewall()
assert.ElementsMatch(t, expectedFirewall.Ports, retFirewall.Ports)
assert.ElementsMatch(t, expectedFirewall.Services.Enabled, retFirewall.Services.Enabled)
assert.ElementsMatch(t, expectedFirewall.Services.Disabled, retFirewall.Services.Disabled)
}
func TestGetServices(t *testing.T) {
expectedServices := ServicesCustomization{
Enabled: []string{"cockpit", "osbuild-composer"},
Disabled: []string{"sshd", "ftp"},
}
TestCustomizations := Customizations{
Services: &expectedServices,
}
retServices := TestCustomizations.GetServices()
assert.ElementsMatch(t, expectedServices.Enabled, retServices.Enabled)
assert.ElementsMatch(t, expectedServices.Disabled, retServices.Disabled)
}
func TestError(t *testing.T) {
expectedError := CustomizationError{
Message: "test error",
}
retError := expectedError.Error()
assert.Equal(t, expectedError.Message, retError)
}
//This tests calling all the functions on a Blueprint with no Customizations
func TestNoCustomizationsInBlueprint(t *testing.T) {
TestBP := Blueprint{}
assert.Nil(t, TestBP.Customizations.GetHostname())
assert.Nil(t, TestBP.Customizations.GetUsers())
assert.Nil(t, TestBP.Customizations.GetGroups())
assert.Equal(t, &KernelCustomization{Name: "kernel"}, TestBP.Customizations.GetKernel())
assert.Nil(t, TestBP.Customizations.GetFirewall())
assert.Nil(t, TestBP.Customizations.GetServices())
nilLanguage, nilKeyboard := TestBP.Customizations.GetPrimaryLocale()
assert.Nil(t, nilLanguage)
assert.Nil(t, nilKeyboard)
nilTimezone, nilNTPServers := TestBP.Customizations.GetTimezoneSettings()
assert.Nil(t, nilTimezone)
assert.Nil(t, nilNTPServers)
}
//This tests additional scenarios where GetPrimaryLocale() returns nil values
func TestNilGetPrimaryLocale(t *testing.T) {
//Case empty Customization
TestCustomizationsEmpty := Customizations{}
retLanguage, retKeyboard := TestCustomizationsEmpty.GetPrimaryLocale()
assert.Nil(t, retLanguage)
assert.Nil(t, retKeyboard)
//Case empty Languages
expectedKeyboard := "en"
expectedLocaleCustomization := LocaleCustomization{
Keyboard: &expectedKeyboard,
}
TestCustomizations := Customizations{
Locale: &expectedLocaleCustomization,
}
retLanguage, retKeyboard = TestCustomizations.GetPrimaryLocale()
assert.Nil(t, retLanguage)
assert.Equal(t, expectedKeyboard, *retKeyboard)
}
//This tests additional scenario where GetTimezoneSEtting() returns nil values
func TestNilGetTimezoneSettings(t *testing.T) {
TestCustomizationsEmpty := Customizations{}
retTimezone, retNTPServers := TestCustomizationsEmpty.GetTimezoneSettings()
assert.Nil(t, retTimezone)
assert.Nil(t, retNTPServers)
}