mock_web.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // package mock_web -- мок веб-сервер для тестов
  2. package mock_web
  3. import (
  4. "fmt"
  5. "log"
  6. "github.com/gofiber/fiber/v2"
  7. "git.p78su.freemyip.com/svi/gostore/pkg/types"
  8. )
  9. // MockWeb -- мок веб-сервер для тестов
  10. type MockWeb struct {
  11. serv types.IService
  12. fiberApp *fiber.App
  13. }
  14. // NewMockWeb -- возвращает мок веб-сервер для тестов
  15. func NewMockWeb(serv types.IService) (*MockWeb, error) {
  16. if serv == nil {
  17. return nil, fmt.Errorf("NewMockWeb(): serv==nil")
  18. }
  19. sf := &MockWeb{
  20. serv: serv,
  21. fiberApp: fiber.New(),
  22. }
  23. return sf, nil
  24. }
  25. // Service -- возвращает сервис
  26. func (sf *MockWeb) Service() types.IService {
  27. return sf.serv
  28. }
  29. // Run -- запускает веб-сервер в работу
  30. func (sf *MockWeb) Run() {
  31. sf.serv.Wg().Add(1)
  32. go func() {
  33. err := sf.fiberApp.Listen(":25000")
  34. if err != nil {
  35. log.Printf("MockWeb.Run(): in listen port(25000), err=\n\t%v\n", err)
  36. sf.serv.CancelApp()
  37. sf.serv.Wg().Done()
  38. }
  39. }()
  40. }
  41. // FiberApp -- возвращает приложение fiber
  42. func (sf *MockWeb) FiberApp() *fiber.App {
  43. return sf.fiberApp
  44. }