package config import ( "reflect" "strings" "testing" ) func TestExecSandbox_DefaultDisabled(t *testing.T) { t.Setenv("JWT_SECRET", strings.Repeat("s", 40)) t.Setenv("EXEC_SANDBOX_ENABLED", "false") t.Setenv("EXEC_SANDBOX_COMMANDS", "") t.Setenv("EXEC_SANDBOX_ROOTS", "") t.Setenv("EXEC_SANDBOX_ENV", "") cfg, err := Load("") if err != nil { t.Fatalf("Load() error: %v", err) } if cfg.ExecSandbox.Enabled { t.Errorf("ExecSandbox.Enabled = true, want default false (sandbox closed)") } if len(cfg.ExecSandbox.CommandList) != 0 { t.Errorf("CommandList = %v, want empty", cfg.ExecSandbox.CommandList) } } func TestExecSandbox_EnvOverrides(t *testing.T) { t.Setenv("JWT_SECRET", strings.Repeat("s", 40)) t.Setenv("EXEC_SANDBOX_ENABLED", "true") t.Setenv("EXEC_SANDBOX_COMMANDS", "echo,pwd") t.Setenv("EXEC_SANDBOX_ROOTS", "/tmp/sandbox,/home/me/workspace") t.Setenv("EXEC_SANDBOX_ENV", "PATH,HOME") cfg, err := Load("") if err != nil { t.Fatalf("Load() error: %v", err) } if !cfg.ExecSandbox.Enabled { t.Errorf("ExecSandbox.Enabled = false, want true") } if want := []string{"echo", "pwd"}; !reflect.DeepEqual(cfg.ExecSandbox.CommandList, want) { t.Errorf("CommandList = %v, want %v", cfg.ExecSandbox.CommandList, want) } if want := []string{"/tmp/sandbox", "/home/me/workspace"}; !reflect.DeepEqual(cfg.ExecSandbox.AllowedRoots, want) { t.Errorf("AllowedRoots = %v, want %v", cfg.ExecSandbox.AllowedRoots, want) } if want := []string{"PATH", "HOME"}; !reflect.DeepEqual(cfg.ExecSandbox.AllowedEnv, want) { t.Errorf("AllowedEnv = %v, want %v", cfg.ExecSandbox.AllowedEnv, want) } }