Files
dygou_go/internal/app/app_accounts_test.go
T
2026-08-08 19:30:23 +08:00

65 lines
1.8 KiB
Go

package app
import (
"os"
"path/filepath"
"strings"
"testing"
"douyu_go/internal/seckill"
"douyu_go/internal/types"
)
func TestParseAccountImport(t *testing.T) {
entries, err := parseAccountImport("# 注释\r\nfoo----pass----cookie-a\nbar----pass----cookie-b\n")
if err != nil {
t.Fatalf("解析账号失败: %v", err)
}
if len(entries) != 2 || entries[0].Raw != "foo----pass----cookie-a" {
t.Fatalf("解析结果异常: %#v", entries)
}
if _, err := parseAccountImport("bad-line"); err == nil {
t.Fatal("格式错误的账号行应该被拒绝")
}
if _, err := parseAccountImport("foo----pass----cookie\nfoo----pass----cookie2"); err == nil {
t.Fatal("重复账号应该被拒绝")
}
}
func TestAccountMutations(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "user.txt")
if err := os.WriteFile(path, []byte("# 账号\r\nfoo----pass----cookie-a\r\n"), 0644); err != nil {
t.Fatal(err)
}
scheduler := seckill.New(nil, types.AppPaths{AccountFile: path}, nil, 1, 1, nil, types.SeckillModeNormal)
scheduler.LoadAccounts()
a := &App{scheduler: scheduler}
result := a.ImportAccounts("bar----pass----cookie-b")
if !result.Success || result.Count != 1 {
t.Fatalf("导入失败: %#v", result)
}
result = a.UpdateAccount("bar", "baz", "")
if !result.Success {
t.Fatalf("编辑失败: %#v", result)
}
result = a.DeleteAccounts([]string{"foo"})
if !result.Success || result.Count != 1 {
t.Fatalf("删除失败: %#v", result)
}
data, err := os.ReadFile(path)
if err != nil {
t.Fatal(err)
}
content := string(data)
if strings.Contains(content, "foo----") || !strings.Contains(content, "baz----pass----cookie-b") {
t.Fatalf("账号文件内容异常: %q", content)
}
if len(content) == 0 || !strings.HasSuffix(content, "\r\n") {
t.Fatalf("账号文件未使用规范换行: %q", content)
}
}