serv_http_test.go 2.0 KB

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