api_test.go 7.2 KB

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