暫無描述
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_test.go 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  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. func TestConfigMeta(t *testing.T) {
  12. httpClient := &http.Client{}
  13. // 首先登录获取有效token
  14. loginURL := "http://localhost:8080/api/login/user"
  15. loginData := map[string]string{
  16. "user_id": "test-user-001",
  17. "password": "password123",
  18. }
  19. loginJSON, _ := json.Marshal(loginData)
  20. loginReq, err := http.NewRequest("POST", loginURL, bytes.NewReader(loginJSON))
  21. if err != nil {
  22. t.Fatalf("创建登录请求失败: %v", err)
  23. }
  24. loginReq.Header.Set("Content-Type", "application/json")
  25. loginResp, err := httpClient.Do(loginReq)
  26. if err != nil {
  27. t.Fatalf("发送登录请求失败: %v", err)
  28. }
  29. defer loginResp.Body.Close()
  30. loginBody, err := io.ReadAll(loginResp.Body)
  31. if err != nil {
  32. t.Fatalf("读取登录响应失败: %v", err)
  33. }
  34. var loginResult map[string]interface{}
  35. if err := json.Unmarshal(loginBody, &loginResult); err != nil {
  36. t.Fatalf("解析登录响应失败: %v", err)
  37. }
  38. if !loginResult["success"].(bool) {
  39. t.Fatalf("登录失败: %v", loginResult)
  40. }
  41. authToken := loginResult["data"].(string)
  42. t.Logf("获取到认证token: %s...", authToken[:50])
  43. // 使用获取的token调用API
  44. url := "http://localhost:8080/api/init/config/meta"
  45. req, err := http.NewRequest("POST", url, nil)
  46. if err != nil {
  47. t.Fatalf("创建请求失败: %v", err)
  48. }
  49. req.Header.Set("Authorization", "Bearer "+authToken)
  50. req.Header.Set("Content-Type", "application/json")
  51. resp, err := httpClient.Do(req)
  52. if err != nil {
  53. t.Fatalf("发送请求失败: %v", err)
  54. }
  55. defer resp.Body.Close()
  56. // 读取响应
  57. body, err := io.ReadAll(resp.Body)
  58. if err != nil {
  59. t.Fatalf("读取响应失败: %v", err)
  60. }
  61. var result map[string]interface{}
  62. if err := json.Unmarshal(body, &result); err != nil {
  63. t.Fatalf("解析响应失败: %v", err)
  64. }
  65. t.Logf("状态码: %d", resp.StatusCode)
  66. t.Logf("响应体: %s", string(body))
  67. if resp.StatusCode != 200 {
  68. t.Errorf("期望状态码200,实际: %d", resp.StatusCode)
  69. }
  70. if !result["success"].(bool) {
  71. t.Errorf("初始化配置元数据失败: %v", result)
  72. }
  73. }
  74. func TestCreateConfigStartup(t *testing.T) {
  75. // 清除测试缓存
  76. cmd := exec.Command("go", "clean", "-testcache")
  77. if err := cmd.Run(); err != nil {
  78. t.Logf("清除测试缓存失败: %v", err)
  79. // 继续执行测试
  80. }
  81. httpClient := &http.Client{}
  82. // 首先登录获取有效token
  83. loginURL := "http://localhost:8080/api/login/user"
  84. loginData := map[string]string{
  85. "user_id": "test-user-001",
  86. "password": "password123",
  87. }
  88. loginJSON, _ := json.Marshal(loginData)
  89. loginReq, err := http.NewRequest("POST", loginURL, bytes.NewReader(loginJSON))
  90. if err != nil {
  91. t.Fatalf("创建登录请求失败: %v", err)
  92. }
  93. loginReq.Header.Set("Content-Type", "application/json")
  94. loginResp, err := httpClient.Do(loginReq)
  95. if err != nil {
  96. t.Fatalf("发送登录请求失败: %v", err)
  97. }
  98. defer loginResp.Body.Close()
  99. loginBody, err := io.ReadAll(loginResp.Body)
  100. if err != nil {
  101. t.Fatalf("读取登录响应失败: %v", err)
  102. }
  103. var loginResult map[string]interface{}
  104. if err := json.Unmarshal(loginBody, &loginResult); err != nil {
  105. t.Fatalf("解析登录响应失败: %v", err)
  106. }
  107. if !loginResult["success"].(bool) {
  108. t.Fatalf("登录失败: %v", loginResult)
  109. }
  110. authToken := loginResult["data"].(string)
  111. t.Logf("获取到认证token: %s...", authToken[:50])
  112. // 使用获取的token调用API
  113. url := "http://localhost:8080/api/create/config/startup"
  114. data := configreq.ConfigRequest{
  115. YamlRoot: "service",
  116. ConfigFields: map[string]*configreq.ConfigField{
  117. "secret_key": {
  118. YamlName: "secret_key",
  119. YamlValue: "123wad",
  120. },
  121. "write_timeout": {
  122. YamlName: "write_timeout",
  123. YamlValue: "90",
  124. },
  125. "read_timeout": {
  126. YamlName: "read_timeout",
  127. YamlValue: "80",
  128. },
  129. },
  130. }
  131. jsonData, err := json.Marshal(data)
  132. if err != nil {
  133. t.Fatalf("JSON序列化失败: %v", err)
  134. }
  135. req, err := http.NewRequest("POST", url, bytes.NewReader(jsonData))
  136. if err != nil {
  137. t.Fatalf("创建请求失败: %v", err)
  138. }
  139. req.Header.Set("Authorization", "Bearer "+authToken)
  140. req.Header.Set("Content-Type", "application/json")
  141. resp, err := httpClient.Do(req)
  142. if err != nil {
  143. t.Fatalf("发送请求失败: %v", err)
  144. }
  145. defer resp.Body.Close()
  146. // 读取响应
  147. body, err := io.ReadAll(resp.Body)
  148. if err != nil {
  149. t.Fatalf("读取响应失败: %v", err)
  150. }
  151. var result map[string]interface{}
  152. if err := json.Unmarshal(body, &result); err != nil {
  153. t.Fatalf("解析响应失败: %v", err)
  154. }
  155. t.Logf("状态码: %d", resp.StatusCode)
  156. t.Logf("响应体: %s", string(body))
  157. if resp.StatusCode != 200 {
  158. t.Errorf("期望状态码200,实际: %d", resp.StatusCode)
  159. }
  160. if !result["success"].(bool) {
  161. t.Errorf("创建启动配置失败: %v", result)
  162. }
  163. }
  164. func TestDelConfigStartup(t *testing.T) {
  165. httpClient := &http.Client{}
  166. url := "http://localhost:8080/api/delete/config/startup"
  167. data := configreq.ConfigRequest{
  168. YamlRoot: "service",
  169. ConfigFields: map[string]*configreq.ConfigField{
  170. "secret_key": {
  171. YamlName: "secret_key",
  172. },
  173. "write_timeout": {
  174. YamlName: "write_timeout",
  175. },
  176. "read_timeout": {
  177. YamlName: "read_timeout",
  178. },
  179. },
  180. }
  181. jsonData, err := json.Marshal(data)
  182. if err != nil {
  183. t.Fatalf("JSON序列化失败: %v", err)
  184. }
  185. req, err := http.NewRequest("POST", url, bytes.NewReader(jsonData))
  186. if err != nil {
  187. t.Fatalf("创建请求失败: %v", err)
  188. }
  189. // Basic Auth 认证
  190. req.SetBasicAuth("admin", "123")
  191. req.Header.Set("Content-Type", "application/json")
  192. resp, err := httpClient.Do(req)
  193. if err != nil {
  194. t.Fatalf("发送请求失败: %v", err)
  195. }
  196. defer resp.Body.Close()
  197. // 读取响应
  198. body, err := io.ReadAll(resp.Body)
  199. if err != nil {
  200. t.Fatalf("读取响应失败: %v", err)
  201. }
  202. var result map[string]interface{}
  203. if err := json.Unmarshal(body, &result); err != nil {
  204. t.Fatalf("解析响应失败: %v", err)
  205. }
  206. t.Logf("状态码: %d", resp.StatusCode)
  207. t.Logf("响应体: %s", string(body))
  208. if resp.StatusCode != 200 {
  209. t.Errorf("期望状态码200,实际: %d", resp.StatusCode)
  210. }
  211. if !result["success"].(bool) {
  212. t.Errorf("删除启动配置失败: %v", result)
  213. }
  214. }