| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package main
- import (
- "encoding/json"
- "fmt"
- "fwh-toolbox-server/logger"
- "fwh-toolbox-server/repositories/api/plane_v2"
- )
- // 打印模式:true=完整JSON,false=简洁摘要
- var verbose = false
- func main() {
- // 初始化
- logger.Init("dev")
- slug := "au-version"
- projectId := "b44a29fc-496b-4767-bbf1-1912f4c922ab"
- host := "http://localhost:8600"
- email := "liang_jlyx@163.com"
- password := "Ljd@163.com"
- fmt.Println("=== Plane V2 API 测试 ===")
- fmt.Printf("Host: %s\n", host)
- fmt.Printf("Workspace: %s\n", slug)
- fmt.Printf("Project: %s\n", projectId)
- fmt.Println()
- // 初始化 Client
- fmt.Print("1. 初始化 PlaneClient... ")
- plane_v2.InitPlaneClient(host, email, password)
- svc := plane_v2.NewPlaneService()
- fmt.Println("✅ 登录成功")
- fmt.Println()
- // 测试 Workspace API
- fmt.Println("=== Workspace ===")
- testGet("ListWorkspaces", func() ([]byte, error) {
- return svc.ListWorkspaces()
- })
- testGet("GetWorkspace", func() ([]byte, error) {
- return svc.GetWorkspace(slug)
- })
- // 测试 Project API
- fmt.Println("\n=== Project ===")
- testGet("ListProjects", func() ([]byte, error) {
- return svc.ListProjects(slug)
- })
- testGet("GetProject", func() ([]byte, error) {
- return svc.GetProject(slug, projectId)
- })
- // 测试 Member API
- fmt.Println("\n=== Member ===")
- testGet("ListWorkspaceMembers", func() ([]byte, error) {
- return svc.ListWorkspaceMembers(slug)
- })
- testGet("ListProjectMembers", func() ([]byte, error) {
- return svc.ListProjectMembers(slug, projectId)
- })
- // 测试 Label API
- fmt.Println("\n=== Label ===")
- testGet("ListLabels", func() ([]byte, error) {
- return svc.ListLabels(slug, projectId)
- })
- // 测试 State API
- fmt.Println("\n=== State ===")
- testGet("ListStates", func() ([]byte, error) {
- return svc.ListStates(slug, projectId)
- })
- // 测试 Issue API
- fmt.Println("\n=== Issue ===")
- testGet("ListIssues", func() ([]byte, error) {
- return svc.ListIssues(slug, projectId)
- })
- // 测试 Intake API
- fmt.Println("\n=== Intake ===")
- testGet("ListIntakeIssues (all)", func() ([]byte, error) {
- return svc.ListIntakeIssues(slug, projectId, "-2,-1,0,1,2")
- })
- // 测试 Cycle API
- fmt.Println("\n=== Cycle ===")
- testGet("ListCycles", func() ([]byte, error) {
- return svc.ListCycles(slug, projectId)
- })
- // 测试 Module API
- fmt.Println("\n=== Module ===")
- testGet("ListModules", func() ([]byte, error) {
- return svc.ListModules(slug, projectId)
- })
- // 测试 Page API
- fmt.Println("\n=== Page ===")
- testGet("ListPages", func() ([]byte, error) {
- return svc.ListPages(slug, projectId)
- })
- // 测试 Sticky API
- fmt.Println("\n=== Sticky ===")
- testGet("ListStickies", func() ([]byte, error) {
- return svc.ListStickies(slug)
- })
- fmt.Println("\n=== 测试完成 ===")
- }
- func testGet(name string, fn func() ([]byte, error)) {
- fmt.Printf(" %s... ", name)
- data, err := fn()
- if err != nil {
- fmt.Printf("❌ %v\n", err)
- return
- }
- var parsed any
- if err := json.Unmarshal(data, &parsed); err == nil {
- if verbose {
- // 完整打印模式
- pretty, _ := json.MarshalIndent(parsed, " ", " ")
- fmt.Printf("✅\n %s\n", string(pretty))
- } else {
- // 简洁打印模式
- switch v := parsed.(type) {
- case []any:
- fmt.Printf("✅ (%d items)\n", len(v))
- case map[string]any:
- if results, ok := v["results"].([]any); ok {
- fmt.Printf("✅ (%d results)\n", len(results))
- } else {
- fmt.Printf("✅ (object, %d keys)\n", len(v))
- }
- default:
- fmt.Printf("✅ (%d bytes)\n", len(data))
- }
- }
- } else {
- fmt.Printf("✅ (%d bytes, non-JSON)\n", len(data))
- }
- }
|