api_test.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  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:80"
  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 := ghttp.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 := ghttp.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", "username="+Username)
  55. if data.Success() {
  56. t.Log(data.Json())
  57. } else {
  58. t.Error("error:", data.Json())
  59. }
  60. // 登出
  61. t.Log("3. execute logout")
  62. data = Post(t, "/user/logout", "username="+Username)
  63. if data.Success() {
  64. t.Log(data.Json())
  65. } else {
  66. t.Error("error:", data.Json())
  67. }
  68. // 登出访问用户信息
  69. t.Log("4. visit user")
  70. data = Post(t, "/system/user", "username="+Username)
  71. if data.Success() {
  72. t.Error("error:", data.Json())
  73. } else {
  74. t.Log(data.Json())
  75. }
  76. }
  77. func TestExclude(t *testing.T) {
  78. // 未登录可以访问
  79. t.Log("1. exclude user info")
  80. if r, e := ghttp.Post(TestURL+"/system/user/info", "username="+Username); e != nil {
  81. t.Error("error:", e)
  82. } else {
  83. defer r.Close()
  84. content := string(r.ReadAll())
  85. t.Log(content)
  86. var respData gtoken.Resp
  87. err := json.Unmarshal([]byte(content), &respData)
  88. if err != nil {
  89. t.Error("error:", err)
  90. }
  91. if !respData.Success() {
  92. t.Error("error:", respData.Json())
  93. }
  94. }
  95. if r, e := ghttp.Post(TestURL+"/user/info", "username="+Username); e != nil {
  96. t.Error("error:", e)
  97. } else {
  98. defer r.Close()
  99. content := string(r.ReadAll())
  100. t.Log(content)
  101. var respData gtoken.Resp
  102. err := json.Unmarshal([]byte(content), &respData)
  103. if err != nil {
  104. t.Error("error:", err)
  105. }
  106. if !respData.Success() {
  107. t.Error("error:", respData.Json())
  108. }
  109. }
  110. }
  111. //func TestRefresh(t *testing.T) {
  112. // // 登录,访问用户信息
  113. // t.Log("1. execute login and visit user")
  114. // data := Post(t, "/system/user", "username="+Username)
  115. // if data.Success() {
  116. // t.Log(data.Json())
  117. // } else {
  118. // t.Error("error:", data.Json())
  119. // }
  120. //
  121. // for i := 1; i < 9; i++ {
  122. // time.Sleep(2 * time.Second)
  123. // // 登录,访问用户信息
  124. // t.Log("1. execute login and visit user")
  125. // data = Post(t, "/system/user", "username="+Username)
  126. // if data.Success() {
  127. // t.Log(data.Json())
  128. // } else {
  129. // t.Error("error:", data.Json())
  130. // }
  131. // }
  132. //
  133. //}
  134. func TestLogin(t *testing.T) {
  135. Username = "testLogin"
  136. t.Log(" login first ")
  137. token1 := getToken(t)
  138. t.Log("token:" + token1)
  139. t.Log(" login second and same token ")
  140. token2 := getToken(t)
  141. t.Log("token:" + token2)
  142. if token1 != token2 {
  143. t.Error("error:", "token not same ")
  144. }
  145. Username = "flyfox"
  146. }
  147. func TestLogout(t *testing.T) {
  148. Username = "testLogout"
  149. t.Log(" logout test ")
  150. data := Post(t, "/user/logout", "username="+Username)
  151. if data.Success() {
  152. t.Log(data.Json())
  153. } else {
  154. t.Error("error:", data.Json())
  155. }
  156. Username = "flyfox"
  157. }
  158. func Post(t *testing.T, urlPath string, data ...interface{}) gtoken.Resp {
  159. client := ghttp.NewClient()
  160. client.SetHeader("Authorization", "Bearer "+getToken(t))
  161. content := client.RequestContent("POST", TestURL+urlPath, data...)
  162. var respData gtoken.Resp
  163. err := json.Unmarshal([]byte(content), &respData)
  164. if err != nil {
  165. t.Error("error:", err)
  166. }
  167. return respData
  168. }
  169. func getToken(t *testing.T) string {
  170. if Token[Username] != "" {
  171. return Token[Username]
  172. }
  173. if r, e := ghttp.Post(TestURL+"/login", "username="+Username+"&passwd=123456"); e != nil {
  174. t.Error("error:", e)
  175. } else {
  176. defer r.Close()
  177. content := string(r.ReadAll())
  178. var respData gtoken.Resp
  179. err := json.Unmarshal([]byte(content), &respData)
  180. if err != nil {
  181. t.Error("error:", err)
  182. }
  183. if !respData.Success() {
  184. t.Error("error:", "resp fail:"+respData.Json())
  185. }
  186. Token[Username] = respData.GetString("token")
  187. }
  188. return Token[Username]
  189. }
  190. func TestMultiLogin(t *testing.T) {
  191. Username = "testLogin"
  192. t.Log(" TestMultiLogin start... ")
  193. var token1, token2 string
  194. if r, e := ghttp.Post(TestURL+"/login", "username="+Username+"&passwd=123456"); e != nil {
  195. t.Error("error:", e)
  196. } else {
  197. defer r.Close()
  198. content := string(r.ReadAll())
  199. t.Log("token1 content:" + content)
  200. var respData gtoken.Resp
  201. err := json.Unmarshal([]byte(content), &respData)
  202. if err != nil {
  203. t.Error("error:", err)
  204. }
  205. if !respData.Success() {
  206. t.Error("error:", "resp fail:"+respData.Json())
  207. }
  208. token1 = respData.GetString("token")
  209. }
  210. t.Log("token1:" + token1)
  211. if r, e := ghttp.Post(TestURL+"/login", "username="+Username+"&passwd=123456"); e != nil {
  212. t.Error("error:", e)
  213. } else {
  214. defer r.Close()
  215. content := string(r.ReadAll())
  216. t.Log("token2 content:" + content)
  217. var respData gtoken.Resp
  218. err := json.Unmarshal([]byte(content), &respData)
  219. if err != nil {
  220. t.Error("error:", err)
  221. }
  222. if !respData.Success() {
  223. t.Error("error:", "resp fail:"+respData.Json())
  224. }
  225. token2 = respData.GetString("token")
  226. }
  227. t.Log("token2:" + token2)
  228. if g.Config().GetBool("gtoken.multi-login") {
  229. if token1 != token2 {
  230. t.Error("error:", "token not same ")
  231. }
  232. } else {
  233. if token1 == token2 {
  234. t.Error("error:", "token same ")
  235. }
  236. }
  237. Username = "flyfox"
  238. }