updated the installer so that it should actually work
Some checks failed
Build / build (push) Failing after 5m23s

This commit is contained in:
tumillanino
2025-11-11 18:57:02 +11:00
parent a7bd4d9457
commit 33dd952ad4
583 changed files with 161651 additions and 67 deletions

145
config/config_test.go Normal file
View 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")
}