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)
	}
}