updated the installer so that it should actually work
Some checks failed
Build / build (push) Failing after 5m23s
Some checks failed
Build / build (push) Failing after 5m23s
This commit is contained in:
145
config/config_test.go
Normal file
145
config/config_test.go
Normal file
@@ -0,0 +1,145 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestArchInstallConfigGeneration(t *testing.T) {
|
||||
config := &InstallConfig{
|
||||
Disk: "/dev/sda",
|
||||
EnableLUKS: true,
|
||||
Hostname: "miasma-test",
|
||||
Username: "testuser",
|
||||
RootPassword: "rootpass",
|
||||
UserPassword: "userpass",
|
||||
Timezone: "UTC",
|
||||
Locale: "en_US.UTF-8",
|
||||
}
|
||||
|
||||
archConfig := config.ToArchInstall()
|
||||
|
||||
// Test that the config has the expected structure
|
||||
if archConfig.Version == "" {
|
||||
t.Error("Version should not be empty")
|
||||
}
|
||||
|
||||
if archConfig.Bootloader != "Systemd-boot" {
|
||||
t.Errorf("Expected bootloader to be 'Systemd-boot', got '%s'", archConfig.Bootloader)
|
||||
}
|
||||
|
||||
if len(archConfig.Kernels) != 1 || archConfig.Kernels[0] != "linux-hardened" {
|
||||
t.Errorf("Expected kernels to contain 'linux-hardened', got %v", archConfig.Kernels)
|
||||
}
|
||||
|
||||
if archConfig.Hostname != "miasma-test" {
|
||||
t.Errorf("Expected hostname 'miasma-test', got '%s'", archConfig.Hostname)
|
||||
}
|
||||
|
||||
// Test disk configuration
|
||||
if len(archConfig.DiskConfig.DeviceModifications) != 1 {
|
||||
t.Errorf("Expected 1 device modification, got %d", len(archConfig.DiskConfig.DeviceModifications))
|
||||
}
|
||||
|
||||
deviceMod := archConfig.DiskConfig.DeviceModifications[0]
|
||||
if deviceMod.Device != "/dev/sda" {
|
||||
t.Errorf("Expected device '/dev/sda', got '%s'", deviceMod.Device)
|
||||
}
|
||||
|
||||
if len(deviceMod.Partitions) != 2 {
|
||||
t.Errorf("Expected 2 partitions, got %d", len(deviceMod.Partitions))
|
||||
}
|
||||
|
||||
// Test profile configuration
|
||||
if archConfig.ProfileConfig.Profile.Main != "Desktop" {
|
||||
t.Errorf("Expected profile main 'Desktop', got '%s'", archConfig.ProfileConfig.Profile.Main)
|
||||
}
|
||||
|
||||
// Test user configuration
|
||||
if len(archConfig.AuthConfig.Users) != 1 {
|
||||
t.Errorf("Expected 1 user, got %d", len(archConfig.AuthConfig.Users))
|
||||
}
|
||||
|
||||
user := archConfig.AuthConfig.Users[0]
|
||||
if user.Username != "testuser" {
|
||||
t.Errorf("Expected username 'testuser', got '%s'", user.Username)
|
||||
}
|
||||
|
||||
// Test package list
|
||||
expectedPackages := []string{
|
||||
"base", "base-devel", "linux-hardened", "linux-firmware", "btrfs-progs",
|
||||
"neovim", "zsh", "alacritty", "tmux", "git", "opendoas",
|
||||
"firejail", "apparmor", "nftables", "hardened-malloc",
|
||||
"chromium", "xwayland-satellite",
|
||||
"cosmic-session", "cosmic-greeter", "cosmic-files",
|
||||
"cosmic-edit", "cosmic-term", "cosmic-store", "cosmic-settings",
|
||||
}
|
||||
|
||||
for _, pkg := range expectedPackages {
|
||||
found := false
|
||||
for _, installedPkg := range archConfig.Packages {
|
||||
if installedPkg == pkg {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Errorf("Expected package '%s' in package list", pkg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSaveConfigurationFiles(t *testing.T) {
|
||||
config := &InstallConfig{
|
||||
Disk: "/dev/sda",
|
||||
EnableLUKS: false,
|
||||
Hostname: "miasma-test",
|
||||
Username: "testuser",
|
||||
RootPassword: "rootpass",
|
||||
UserPassword: "userpass",
|
||||
Timezone: "UTC",
|
||||
Locale: "en_US.UTF-8",
|
||||
}
|
||||
|
||||
// Test saving configuration
|
||||
err := config.SaveArchInstallConfig("/tmp/test_user_config.json")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to save user configuration: %v", err)
|
||||
}
|
||||
|
||||
// Test saving credentials
|
||||
err = config.SaveUserCredentials("/tmp/test_user_creds.json")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to save user credentials: %v", err)
|
||||
}
|
||||
|
||||
// Verify the files were created
|
||||
if _, err := os.Stat("/tmp/test_user_config.json"); os.IsNotExist(err) {
|
||||
t.Error("User configuration file was not created")
|
||||
}
|
||||
|
||||
if _, err := os.Stat("/tmp/test_user_creds.json"); os.IsNotExist(err) {
|
||||
t.Error("User credentials file was not created")
|
||||
}
|
||||
|
||||
// Verify the configuration file content
|
||||
data, err := os.ReadFile("/tmp/test_user_config.json")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to read configuration file: %v", err)
|
||||
}
|
||||
|
||||
var parsedConfig ArchInstallConfig
|
||||
err = json.Unmarshal(data, &parsedConfig)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to parse configuration file: %v", err)
|
||||
}
|
||||
|
||||
if parsedConfig.Hostname != "miasma-test" {
|
||||
t.Errorf("Expected hostname 'miasma-test', got '%s'", parsedConfig.Hostname)
|
||||
}
|
||||
|
||||
// Clean up test files
|
||||
os.Remove("/tmp/test_user_config.json")
|
||||
os.Remove("/tmp/test_user_creds.json")
|
||||
}
|
||||
Reference in New Issue
Block a user