Brak opisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

my_config_token_test.go 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "io"
  6. "net/http"
  7. "os/exec"
  8. "testing"
  9. "git.x2erp.com/qdy/go-base/model/request/configreq"
  10. )
  11. // 建立访问配置中心的token
  12. func TestCreateConfigToken(t *testing.T) {
  13. // 清除测试缓存
  14. cmd := exec.Command("go", "clean", "-testcache")
  15. if err := cmd.Run(); err != nil {
  16. t.Logf("清除测试缓存失败: %v", err)
  17. // 继续执行测试
  18. }
  19. httpClient := &http.Client{}
  20. // 首先登录获取有效token
  21. loginURL := "http://localhost:8080/api/login/user"
  22. loginData := map[string]string{
  23. "user_id": "test-user-001",
  24. "password": "password123",
  25. }
  26. loginJSON, _ := json.Marshal(loginData)
  27. loginReq, err := http.NewRequest("POST", loginURL, bytes.NewReader(loginJSON))
  28. if err != nil {
  29. t.Fatalf("创建登录请求失败: %v", err)
  30. }
  31. loginReq.Header.Set("Content-Type", "application/json")
  32. loginResp, err := httpClient.Do(loginReq)
  33. if err != nil {
  34. t.Fatalf("发送登录请求失败: %v", err)
  35. }
  36. defer loginResp.Body.Close()
  37. loginBody, err := io.ReadAll(loginResp.Body)
  38. if err != nil {
  39. t.Fatalf("读取登录响应失败: %v", err)
  40. }
  41. var loginResult map[string]interface{}
  42. if err := json.Unmarshal(loginBody, &loginResult); err != nil {
  43. t.Fatalf("解析登录响应失败: %v", err)
  44. }
  45. if !loginResult["success"].(bool) {
  46. t.Fatalf("登录失败: %v", loginResult)
  47. }
  48. authToken := loginResult["data"].(string)
  49. t.Logf("获取到认证token: %s", authToken[:50]+"...")
  50. // 使用获取的token创建配置token
  51. url := "http://localhost:8080/api/create/config/token"
  52. data := configreq.ConfigTokenRequest{
  53. ProjectID: "test-project",
  54. ServiceName: "test-service",
  55. ExpiresDays: 30,
  56. }
  57. jsonData, err := json.Marshal(data)
  58. if err != nil {
  59. t.Fatalf("JSON序列化失败: %v", err)
  60. }
  61. req, err := http.NewRequest("POST", url, bytes.NewReader(jsonData))
  62. if err != nil {
  63. t.Fatalf("创建请求失败: %v", err)
  64. }
  65. // Token Auth 认证
  66. req.Header.Set("Authorization", "Bearer "+authToken)
  67. req.Header.Set("Content-Type", "application/json")
  68. resp, err := httpClient.Do(req)
  69. if err != nil {
  70. t.Fatalf("发送请求失败: %v", err)
  71. }
  72. defer resp.Body.Close()
  73. // 读取响应
  74. body, err := io.ReadAll(resp.Body)
  75. if err != nil {
  76. t.Fatalf("读取响应失败: %v", err)
  77. }
  78. var result map[string]interface{}
  79. if err := json.Unmarshal(body, &result); err != nil {
  80. t.Fatalf("解析响应失败: %v", err)
  81. }
  82. t.Logf("状态码: %d", resp.StatusCode)
  83. t.Logf("响应体: %s", string(body))
  84. // 验证响应
  85. if resp.StatusCode != 200 {
  86. t.Errorf("期望状态码200,实际: %d", resp.StatusCode)
  87. }
  88. if !result["success"].(bool) {
  89. t.Errorf("创建配置token失败: %v", result)
  90. }
  91. if data, ok := result["data"].(string); !ok || data == "" {
  92. t.Errorf("未返回有效的配置token")
  93. } else {
  94. t.Logf("成功创建配置token: %s...", data[:50])
  95. }
  96. }