File size: 886 Bytes
6d60378 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package auth
import (
"os"
"path/filepath"
"runtime"
"strings"
"testing"
)
// TestSaveAtomicPermissionHint 无写权限目录下保存,错误应包含 Docker chown 指引。
func TestSaveAtomicPermissionHint(t *testing.T) {
if runtime.GOOS == "windows" || os.Geteuid() == 0 {
t.Skip("Windows 无 POSIX 权限语义 / root 无权限限制,跳过")
}
dir := t.TempDir()
ro := filepath.Join(dir, "ro")
os.MkdirAll(ro, 0o555) // 只读目录
defer os.Chmod(ro, 0o755)
a := &Auth{AccessToken: "at", RefreshToken: "rt", ExpiresAt: 1,
UID: "u1", FilePath: filepath.Join(ro, "workbuddy-u1.json")}
err := a.SaveAtomic()
if err == nil {
t.Fatal("只读目录保存应失败")
}
if !strings.Contains(err.Error(), "chown") || !strings.Contains(err.Error(), "10001") {
t.Errorf("权限错误应包含 Docker 指引,实际: %v", err)
}
}
|