api_test.go 6.9 KB

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