main_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package handler
  2. import (
  3. "bytes"
  4. "flag"
  5. "fmt"
  6. "github.com/gavv/httpexpect/v2"
  7. "github.com/gin-gonic/gin"
  8. "github.com/go-nunu/nunu-layout-advanced/internal/handler"
  9. "github.com/go-nunu/nunu-layout-advanced/internal/middleware"
  10. "github.com/go-nunu/nunu-layout-advanced/pkg/config"
  11. jwt2 "github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
  12. "github.com/go-nunu/nunu-layout-advanced/pkg/log"
  13. "net/http"
  14. "net/http/httptest"
  15. "os"
  16. "path/filepath"
  17. "testing"
  18. "time"
  19. )
  20. var (
  21. userId = "xxx"
  22. )
  23. var logger *log.Logger
  24. var hdl *handler.Handler
  25. var jwt *jwt2.JWT
  26. var router *gin.Engine
  27. func TestMain(m *testing.M) {
  28. fmt.Println("begin")
  29. err := os.Setenv("APP_CONF", "../../../config/local.yml")
  30. if err != nil {
  31. fmt.Println("Setenv error", err)
  32. }
  33. var envConf = flag.String("conf", "config/local.yml", "config path, eg: -conf ./config/local.yml")
  34. flag.Parse()
  35. conf := config.NewConfig(*envConf)
  36. // modify log directory
  37. logPath := filepath.Join("../../../", conf.GetString("log.log_file_name"))
  38. conf.Set("log.log_file_name", logPath)
  39. logger = log.NewLog(conf)
  40. hdl = handler.NewHandler(logger)
  41. jwt = jwt2.NewJwt(conf)
  42. gin.SetMode(gin.TestMode)
  43. router = gin.Default()
  44. router.Use(
  45. middleware.CORSMiddleware(),
  46. middleware.ResponseLogMiddleware(logger),
  47. middleware.RequestLogMiddleware(logger),
  48. //middleware.SignMiddleware(log),
  49. )
  50. code := m.Run()
  51. fmt.Println("test end")
  52. os.Exit(code)
  53. }
  54. func performRequest(r http.Handler, method, path string, body *bytes.Buffer) *httptest.ResponseRecorder {
  55. req, _ := http.NewRequest(method, path, body)
  56. resp := httptest.NewRecorder()
  57. r.ServeHTTP(resp, req)
  58. return resp
  59. }
  60. func genToken(t *testing.T) string {
  61. token, err := jwt.GenToken(userId, time.Now().Add(time.Hour*24*90))
  62. if err != nil {
  63. t.Error(err)
  64. return token
  65. }
  66. return token
  67. }
  68. func newHttpExcept(t *testing.T, router *gin.Engine) *httpexpect.Expect {
  69. return httpexpect.WithConfig(httpexpect.Config{
  70. Client: &http.Client{
  71. Transport: httpexpect.NewBinder(router),
  72. Jar: httpexpect.NewCookieJar(),
  73. },
  74. Reporter: httpexpect.NewAssertReporter(t),
  75. Printers: []httpexpect.Printer{
  76. // httpexpect.NewDebugPrinter(t, true),
  77. },
  78. })
  79. }