Files
MyGoNavi/internal/appdata/root_test.go
Syngnat 714c6fc553 feat(web-server): 新增浏览器访问认证与初始化流程
- 新增 web-server 运行模式与浏览器端运行时桥接
- 支持管理员密码、会话策略、Google Authenticator 与恢复码
- 设置中心补充浏览器访问认证状态与改密入口
- 优化初始化向导,未启用 2FA 时跳过验证器步骤

Refs #618
2026-07-04 21:50:52 +08:00

92 lines
2.6 KiB
Go

package appdata
import (
"os"
"path/filepath"
"testing"
)
func TestResolveActiveRootDefaultsToLegacyGonaviDir(t *testing.T) {
homeDir := t.TempDir()
t.Setenv("HOME", homeDir)
t.Setenv("USERPROFILE", homeDir)
root, err := ResolveActiveRoot()
if err != nil {
t.Fatalf("ResolveActiveRoot returned error: %v", err)
}
expected := filepath.Join(homeDir, ".gonavi")
if root != expected {
t.Fatalf("expected default root %q, got %q", expected, root)
}
}
func TestSetActiveRootWritesBootstrapAndResolveUsesIt(t *testing.T) {
homeDir := t.TempDir()
t.Setenv("HOME", homeDir)
t.Setenv("USERPROFILE", homeDir)
customRoot := filepath.Join(t.TempDir(), "gonavi-data")
savedRoot, err := SetActiveRoot(customRoot)
if err != nil {
t.Fatalf("SetActiveRoot returned error: %v", err)
}
if savedRoot != customRoot {
t.Fatalf("expected saved root %q, got %q", customRoot, savedRoot)
}
if _, err := os.Stat(BootstrapPath()); err != nil {
t.Fatalf("expected bootstrap file to exist: %v", err)
}
resolvedRoot, err := ResolveActiveRoot()
if err != nil {
t.Fatalf("ResolveActiveRoot returned error: %v", err)
}
if resolvedRoot != customRoot {
t.Fatalf("expected custom root %q, got %q", customRoot, resolvedRoot)
}
}
func TestSetActiveRootResetToDefaultRemovesBootstrap(t *testing.T) {
homeDir := t.TempDir()
t.Setenv("HOME", homeDir)
t.Setenv("USERPROFILE", homeDir)
customRoot := filepath.Join(t.TempDir(), "gonavi-data")
if _, err := SetActiveRoot(customRoot); err != nil {
t.Fatalf("SetActiveRoot custom returned error: %v", err)
}
defaultRoot, err := SetActiveRoot("")
if err != nil {
t.Fatalf("SetActiveRoot default returned error: %v", err)
}
expectedDefault := filepath.Join(homeDir, ".gonavi")
if defaultRoot != expectedDefault {
t.Fatalf("expected default root %q, got %q", expectedDefault, defaultRoot)
}
if _, err := os.Stat(BootstrapPath()); !os.IsNotExist(err) {
t.Fatalf("expected bootstrap file to be removed, got err=%v", err)
}
}
func TestResolveActiveRootPrefersEnvOverride(t *testing.T) {
homeDir := t.TempDir()
t.Setenv("HOME", homeDir)
t.Setenv("USERPROFILE", homeDir)
customRoot := filepath.Join(t.TempDir(), "custom-root")
if _, err := SetActiveRoot(customRoot); err != nil {
t.Fatalf("SetActiveRoot returned error: %v", err)
}
overrideRoot := filepath.Join(t.TempDir(), "override-root")
t.Setenv(dataRootEnvName, overrideRoot)
resolvedRoot, err := ResolveActiveRoot()
if err != nil {
t.Fatalf("ResolveActiveRoot returned error: %v", err)
}
if resolvedRoot != overrideRoot {
t.Fatalf("expected env override root %q, got %q", overrideRoot, resolvedRoot)
}
}