package auth import ( "testing" "time" ) func TestJWT_RoundTrip(t *testing.T) { tok, err := Issue("user-123") if err != nil { t.Fatal(err) } uid, err := Parse(tok) if err != nil { t.Fatalf("应能解析自签令牌: %v", err) } if uid != "user-123" { t.Errorf("subject = %q, want user-123", uid) } } func TestJWT_Expired(t *testing.T) { tok, _ := issue("u", -time.Hour) // 已过期 if _, err := Parse(tok); err == nil { t.Error("过期令牌应拒绝") } } func TestJWT_Tampered(t *testing.T) { tok, _ := Issue("u") if _, err := Parse(tok + "x"); err == nil { t.Error("被篡改令牌应拒绝") } if _, err := Parse("not.a.jwt"); err == nil { t.Error("非法令牌应拒绝") } if _, err := Parse(""); err == nil { t.Error("空令牌应拒绝") } } func TestPassword_HashAndCheck(t *testing.T) { hash, err := HashPassword("s3cret-pw") if err != nil { t.Fatal(err) } if hash == "s3cret-pw" || hash == "" { t.Error("应为 bcrypt 哈希,非明文") } if !CheckPassword(hash, "s3cret-pw") { t.Error("正确密码应校验通过") } if CheckPassword(hash, "wrong-pw") { t.Error("错误密码应校验失败") } }