serv_http_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package serv_http
  2. import (
  3. "net/http"
  4. "os"
  5. "testing"
  6. "time"
  7. "git.p78su.freemyip.com/svi/gostore/pkg/mock/mock_service"
  8. "github.com/gofiber/fiber/v2"
  9. )
  10. type tester struct {
  11. t *testing.T
  12. serv *mock_service.MockService
  13. web *ServHttp
  14. }
  15. func TestServHttp(t *testing.T) {
  16. sf := &tester{
  17. t: t,
  18. }
  19. sf.create()
  20. sf.get()
  21. sf.close()
  22. }
  23. // Закрытие сервиса
  24. func (sf *tester) close() {
  25. sf.t.Log("close")
  26. sf.serv.CancelApp()
  27. sf.serv.Wg().Wait()
  28. sf.web.close()
  29. }
  30. // Получение индексной страницы
  31. func (sf *tester) get() {
  32. sf.t.Log("get")
  33. app := fiber.New()
  34. app.Get("/", sf.web.get)
  35. req, err := http.NewRequest("GET", "/", nil)
  36. if err != nil {
  37. sf.t.Fatalf("get(): err=\n\t%v", err)
  38. }
  39. resp, err := app.Test(req)
  40. if err != nil {
  41. sf.t.Fatalf("get(): err=\n\t%v", err)
  42. }
  43. defer resp.Body.Close()
  44. }
  45. // Создание нового веб-сервера
  46. func (sf *tester) create() {
  47. sf.t.Log("create")
  48. sf.createBad1()
  49. sf.createBad2()
  50. sf.createGood1()
  51. }
  52. func (sf *tester) createGood1() {
  53. sf.t.Log("createGood1")
  54. var err error
  55. os.Setenv("HTTP_PORT", "8080")
  56. sf.web, err = NewServHttp(sf.serv)
  57. if err != nil {
  58. sf.t.Fatalf("createGood1(): err=\n\t%v", err)
  59. }
  60. if sf.web == nil {
  61. sf.t.Fatalf("createGood1(): web==nil")
  62. }
  63. go func() {
  64. _ = sf.web.Run()
  65. }()
  66. sf.serv.CancelApp()
  67. time.Sleep(50 * time.Millisecond)
  68. }
  69. // Нет порта для работы сервера
  70. func (sf *tester) createBad2() {
  71. sf.t.Log("createBad2")
  72. sf.serv = mock_service.NewMockService()
  73. var err error
  74. sf.web, err = NewServHttp(sf.serv)
  75. if err == nil {
  76. sf.t.Fatalf("createBad2(): err==nil")
  77. }
  78. if sf.web != nil {
  79. sf.t.Fatalf("createBad2(): web!=nil")
  80. }
  81. }
  82. // Нет объекта сервиса
  83. func (sf *tester) createBad1() {
  84. sf.t.Log("createBad1")
  85. sf.serv = mock_service.NewMockService()
  86. var err error
  87. sf.web, err = NewServHttp(nil)
  88. if err == nil {
  89. sf.t.Fatalf("createBad1(): err==nil")
  90. }
  91. if sf.web != nil {
  92. sf.t.Fatalf("createBad1(): web!=nil")
  93. }
  94. }