- Add settings API and UI to toggle keylog - Persist preference in settings.json - Expose klogging state in status endpoint - Inject build version into web console - Bump version automatically on build
46 lines
951 B
Go
46 lines
951 B
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestKeylogPrefOverridesEnv(t *testing.T) {
|
|
base := t.TempDir()
|
|
t.Setenv("XDG_CONFIG_HOME", base)
|
|
t.Setenv("APPDATA", base)
|
|
t.Setenv("KEYLOG_ENABLED", "1")
|
|
|
|
if !KeylogEnabled() {
|
|
t.Fatal("expected env default on")
|
|
}
|
|
if err := SetKeylogEnabled(false); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if KeylogEnabled() {
|
|
t.Fatal("pref should disable keylog")
|
|
}
|
|
if err := SetKeylogEnabled(true); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !KeylogEnabled() {
|
|
t.Fatal("pref should enable keylog")
|
|
}
|
|
raw, err := os.ReadFile(filepath.Join(base, AppDataDir, SettingsFileName))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var s fileSettings
|
|
if err := json.Unmarshal(raw, &s); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if s.Klogging == nil || !*s.Klogging {
|
|
t.Fatalf("saved settings = %s", raw)
|
|
}
|
|
if s.KeylogEnabled != nil {
|
|
t.Fatalf("legacy keylog_enabled should be dropped, got %s", raw)
|
|
}
|
|
}
|