api_test.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. package test
  2. import (
  3. "encoding/json"
  4. "github.com/goflyfox/gtoken/gtoken"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/net/ghttp"
  7. "testing"
  8. )
  9. const (
  10. TestURL string = "http://127.0.0.1:8081"
  11. )
  12. var (
  13. Token = g.MapStrStr{}
  14. Username = "flyFox"
  15. )
  16. func TestHello(t *testing.T) {
  17. t.Log("visit hello and no auth")
  18. if r, e := g.Client().Post(TestURL+"/hello", "username="+Username); e != nil {
  19. t.Error("error:", e)
  20. } else {
  21. defer r.Close()
  22. content := string(r.ReadAll())
  23. t.Log(content)
  24. var respData gtoken.Resp
  25. err := json.Unmarshal([]byte(content), &respData)
  26. if err != nil {
  27. t.Error("error:", err)
  28. }
  29. if !respData.Success() {
  30. t.Error("error:", respData.Json())
  31. }
  32. }
  33. }
  34. func TestSystemUser(t *testing.T) {
  35. // 未登录
  36. t.Log("1. not login and visit user")
  37. if r, e := g.Client().Post(TestURL+"/system/user", "username="+Username); e != nil {
  38. t.Error("error:", e)
  39. } else {
  40. defer r.Close()
  41. content := string(r.ReadAll())
  42. t.Log(content)
  43. var respData gtoken.Resp
  44. err := json.Unmarshal([]byte(content), &respData)
  45. if err != nil {
  46. t.Error("error:", err)
  47. }
  48. if respData.Success() {
  49. t.Error("error:", respData.Json())
  50. }
  51. }
  52. // 登录,访问用户信息
  53. t.Log("2. execute login and visit user")
  54. data := Post(t, "/system/user")
  55. if data.Success() {
  56. t.Log(data.Json())
  57. } else {
  58. t.Error("error:", data.Json())
  59. }
  60. // 登录,获取用户信息
  61. t.Log("2. execute get user data")
  62. data = Post(t, "/user/data")
  63. if data.Success() {
  64. t.Log(data.Json())
  65. } else {
  66. t.Error("error:", data.Json())
  67. }
  68. // 登出
  69. t.Log("3. execute logout")
  70. data = Post(t, "/user/logout")
  71. if data.Success() {
  72. t.Log(data.Json())
  73. } else {
  74. t.Error("error:", data.Json())
  75. }
  76. // 登出访问用户信息
  77. t.Log("4. visit user")
  78. data = Post(t, "/system/user", "username="+Username)
  79. if data.Success() {
  80. t.Error("error:", data.Json())
  81. } else {
  82. t.Log(data.Json())
  83. }
  84. delete(Token, Username)
  85. }
  86. func TestUserLoginFail(t *testing.T) {
  87. // 登录失败
  88. t.Log("1. login fail ")
  89. if r, e := g.Client().Post(TestURL+"/login", "username=&passwd="); e != nil {
  90. t.Error("error:", e)
  91. } else {
  92. defer r.Close()
  93. content := string(r.ReadAll())
  94. var respData gtoken.Resp
  95. err := json.Unmarshal([]byte(content), &respData)
  96. if err != nil {
  97. t.Error("error:", err)
  98. }
  99. if respData.Success() {
  100. t.Error("error:", "login fail:"+respData.Json())
  101. }
  102. }
  103. }
  104. func TestExclude(t *testing.T) {
  105. // 未登录可以访问
  106. t.Log("1. exclude user info")
  107. if r, e := g.Client().Post(TestURL+"/system/user/info", "username="+Username); e != nil {
  108. t.Error("error:", e)
  109. } else {
  110. defer r.Close()
  111. content := string(r.ReadAll())
  112. t.Log(content)
  113. var respData gtoken.Resp
  114. err := json.Unmarshal([]byte(content), &respData)
  115. if err != nil {
  116. t.Error("error:", err)
  117. }
  118. if !respData.Success() {
  119. t.Error("error:", respData.Json())
  120. }
  121. }
  122. if r, e := g.Client().Post(TestURL+"/user/info", "username="+Username); e != nil {
  123. t.Error("error:", e)
  124. } else {
  125. defer r.Close()
  126. content := string(r.ReadAll())
  127. t.Log(content)
  128. var respData gtoken.Resp
  129. err := json.Unmarshal([]byte(content), &respData)
  130. if err != nil {
  131. t.Error("error:", err)
  132. }
  133. if !respData.Success() {
  134. t.Error("error:", respData.Json())
  135. }
  136. }
  137. }
  138. //func TestRefresh(t *testing.T) {
  139. // // 登录,访问用户信息
  140. // t.Log("1. execute login and visit user")
  141. // data := Post(t, "/system/user", "username="+Username)
  142. // if data.Success() {
  143. // t.Log(data.Json())
  144. // } else {
  145. // t.Error("error:", data.Json())
  146. // }
  147. //
  148. // for i := 1; i < 9; i++ {
  149. // time.Sleep(2 * time.Second)
  150. // // 登录,访问用户信息
  151. // t.Log("1. execute login and visit user")
  152. // data = Post(t, "/system/user", "username="+Username)
  153. // if data.Success() {
  154. // t.Log(data.Json())
  155. // } else {
  156. // t.Error("error:", data.Json())
  157. // }
  158. // }
  159. //
  160. //}
  161. func TestLogin(t *testing.T) {
  162. t.Log(" login first ")
  163. token1 := getToken(t)
  164. t.Log("token:" + token1)
  165. t.Log(" login second and same token ")
  166. token2 := getToken(t)
  167. t.Log("token:" + token2)
  168. if token1 != token2 {
  169. t.Error("error:", "token not same ")
  170. }
  171. delete(Token, Username)
  172. }
  173. func TestLogout(t *testing.T) {
  174. t.Log(" logout test ")
  175. data := Post(t, "/user/logout", "username="+Username)
  176. if data.Success() {
  177. t.Log(data.Json())
  178. } else {
  179. t.Error("error:", data.Json())
  180. }
  181. delete(Token, Username)
  182. }
  183. func TestMultiLogin(t *testing.T) {
  184. t.Log(" TestMultiLogin start... ")
  185. var token1, token2 string
  186. if r, e := g.Client().Post(TestURL+"/login", "username="+Username+"&passwd=123456"); e != nil {
  187. t.Error("error:", e)
  188. } else {
  189. defer r.Close()
  190. content := string(r.ReadAll())
  191. t.Log("token1 content:" + content)
  192. var respData gtoken.Resp
  193. err := json.Unmarshal([]byte(content), &respData)
  194. if err != nil {
  195. t.Error("error:", err)
  196. }
  197. if !respData.Success() {
  198. t.Error("error:", "resp fail:"+respData.Json())
  199. }
  200. token1 = respData.GetString("token")
  201. }
  202. t.Log("token1:" + token1)
  203. if r, e := g.Client().Post(TestURL+"/login", "username="+Username+"&passwd=123456"); e != nil {
  204. t.Error("error:", e)
  205. } else {
  206. defer r.Close()
  207. content := string(r.ReadAll())
  208. t.Log("token2 content:" + content)
  209. var respData gtoken.Resp
  210. err := json.Unmarshal([]byte(content), &respData)
  211. if err != nil {
  212. t.Error("error:", err)
  213. }
  214. if !respData.Success() {
  215. t.Error("error:", "resp fail:"+respData.Json())
  216. }
  217. token2 = respData.GetString("token")
  218. }
  219. t.Log("token2:" + token2)
  220. if g.Config().GetBool("gToken.MultiLogin") {
  221. if token1 != token2 {
  222. t.Error("error:", "token not same ")
  223. }
  224. } else {
  225. if token1 == token2 {
  226. t.Error("error:", "token same ")
  227. }
  228. }
  229. }
  230. func Post(t *testing.T, urlPath string, data ...interface{}) gtoken.Resp {
  231. client := ghttp.NewClient()
  232. client.SetHeader("Authorization", "Bearer "+getToken(t))
  233. content := client.RequestContent("POST", TestURL+urlPath, data...)
  234. var respData gtoken.Resp
  235. err := json.Unmarshal([]byte(content), &respData)
  236. if err != nil {
  237. t.Error("error:", err)
  238. }
  239. return respData
  240. }
  241. func getToken(t *testing.T) string {
  242. if Token[Username] != "" {
  243. return Token[Username]
  244. }
  245. if r, e := g.Client().Post(TestURL+"/login", "username="+Username+"&passwd=123456"); e != nil {
  246. t.Error("error:", e)
  247. } else {
  248. defer r.Close()
  249. content := string(r.ReadAll())
  250. var respData gtoken.Resp
  251. err := json.Unmarshal([]byte(content), &respData)
  252. if err != nil {
  253. t.Error("error:", err)
  254. }
  255. if !respData.Success() {
  256. t.Error("error:", "resp fail:"+respData.Json())
  257. }
  258. Token[Username] = respData.GetString("token")
  259. }
  260. return Token[Username]
  261. }