Files
gatus/controller/handler/spa_test.go
T

70 lines
1.8 KiB
Go
Raw Normal View History

2021-09-12 18:39:09 -04:00
package handler
import (
"net/http"
"net/http/httptest"
"testing"
"time"
"github.com/TwiN/gatus/v3/config"
"github.com/TwiN/gatus/v3/core"
2021-10-28 19:35:46 -04:00
"github.com/TwiN/gatus/v3/storage/store"
"github.com/TwiN/gatus/v3/watchdog"
2021-09-12 18:39:09 -04:00
)
func TestSinglePageApplication(t *testing.T) {
2021-10-28 19:35:46 -04:00
defer store.Get().Clear()
2021-09-12 18:39:09 -04:00
defer cache.Clear()
cfg := &config.Config{
Metrics: true,
2021-10-23 16:47:12 -04:00
Endpoints: []*core.Endpoint{
2021-09-12 18:39:09 -04:00
{
Name: "frontend",
Group: "core",
},
{
Name: "backend",
Group: "core",
},
},
}
2021-10-23 16:47:12 -04:00
watchdog.UpdateEndpointStatuses(cfg.Endpoints[0], &core.Result{Success: true, Duration: time.Millisecond, Timestamp: time.Now()})
watchdog.UpdateEndpointStatuses(cfg.Endpoints[1], &core.Result{Success: false, Duration: time.Second, Timestamp: time.Now()})
2021-09-12 18:39:09 -04:00
router := CreateRouter("../../web/static", cfg.Security, nil, cfg.Metrics)
type Scenario struct {
Name string
Path string
ExpectedCode int
Gzip bool
}
scenarios := []Scenario{
{
Name: "frontend-home",
Path: "/",
ExpectedCode: http.StatusOK,
},
{
2021-10-23 16:47:12 -04:00
Name: "frontend-endpoint",
Path: "/endpoints/core_frontend",
ExpectedCode: http.StatusOK,
},
{ // XXX: Remove this in v4.0.0
2021-09-12 18:39:09 -04:00
Name: "frontend-service",
Path: "/services/core_frontend",
ExpectedCode: http.StatusOK,
},
}
for _, scenario := range scenarios {
t.Run(scenario.Name, func(t *testing.T) {
request, _ := http.NewRequest("GET", scenario.Path, nil)
if scenario.Gzip {
request.Header.Set("Accept-Encoding", "gzip")
}
responseRecorder := httptest.NewRecorder()
router.ServeHTTP(responseRecorder, request)
if responseRecorder.Code != scenario.ExpectedCode {
t.Errorf("%s %s should have returned %d, but returned %d instead", request.Method, request.URL, scenario.ExpectedCode, responseRecorder.Code)
}
})
}
}