package serv_http import ( "net/http" "os" "testing" "time" "github.com/gofiber/fiber/v2" "git.p78su.freemyip.com/svi/gostore/pkg/mock/mock_service" "git.p78su.freemyip.com/svi/gostore/pkg/types" ) type tester struct { t *testing.T serv types.IService web *ServHttp } func TestServHttp(t *testing.T) { sf := &tester{ t: t, } sf.create() sf.get() sf.close() } // Закрытие сервиса func (sf *tester) close() { sf.t.Log("close") sf.serv.CancelApp() sf.serv.Wg().Wait() sf.web.close() } // Получение индексной страницы func (sf *tester) get() { sf.t.Log("get") app := fiber.New() app.Get("/", sf.web.get) req, err := http.NewRequest("GET", "/", nil) if err != nil { sf.t.Fatalf("get(): err=\n\t%v", err) } resp, err := app.Test(req) if err != nil { sf.t.Fatalf("get(): err=\n\t%v", err) } defer resp.Body.Close() } // Создание нового веб-сервера func (sf *tester) create() { sf.t.Log("create") sf.createBad1() sf.createBad2() sf.createGood1() } func (sf *tester) createGood1() { sf.t.Log("createGood1") os.Setenv("STORE_HTTP_PORT", "8080") web, err := NewServHttp(sf.serv) if err != nil { sf.t.Fatalf("createGood1(): err=\n\t%v", err) } sf.web = web.(*ServHttp) if sf.web == nil { sf.t.Fatalf("createGood1(): web==nil") } go func() { _ = sf.web.Run() }() sf.serv.CancelApp() time.Sleep(50 * time.Millisecond) } // Нет порта для работы сервера func (sf *tester) createBad2() { sf.t.Log("createBad2") sf.serv = mock_service.NewMockService() web, err := NewServHttp(sf.serv) if err == nil { sf.t.Fatalf("createBad2(): err==nil") } if web != nil { sf.t.Fatalf("createBad2(): web!=nil") } } // Нет объекта сервиса func (sf *tester) createBad1() { sf.t.Log("createBad1") sf.serv = mock_service.NewMockService() web, err := NewServHttp(nil) if err == nil { sf.t.Fatalf("createBad1(): err==nil") } if web != nil { sf.t.Fatalf("createBad1(): web!=nil") } }