package rulestest import ( "bytes" "fmt" "net/http" "testing" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "edge-infra.dev/pkg/lib/fog" "edge-infra.dev/pkg/sds/emergencyaccess/config" rulesengine "edge-infra.dev/pkg/sds/emergencyaccess/rules" "edge-infra.dev/pkg/sds/emergencyaccess/rules/server" "edge-infra.dev/pkg/sds/emergencyaccess/rules/setup" "edge-infra.dev/test/f2" "edge-infra.dev/test/f2/x/postgres" ) func TestHealth(t *testing.T) { var ( rulesEngine *gin.Engine tName = t.Name() ) feat := f2.NewFeature("Health tests"). Setup("Create Rulesengine service", func(ctx f2.Context, t *testing.T) f2.Context { var ( pg = postgres.FromContextT(ctx, t) ) // Dataset setup conf := setup.RulesConfig{ SQL: config.SQLConfig{ ConnectionName: pg.ConnectionName, DatabaseName: pg.Database, User: pg.User, Password: pg.Password, Host: pg.Host, Port: fmt.Sprint(pg.Port), Schema: tName, }, } buf := new(bytes.Buffer) log := fog.New(fog.To(buf)) dataset, checks, err := setup.CreateDataset(log, conf) require.NoError(t, err) // Server Setup gin.SetMode(gin.TestMode) router := gin.New() re := rulesengine.New(dataset) res, err := server.New(router, re, log, checks...) require.NoError(t, err) rulesEngine = res.GinEngine return ctx }). Test("Test health ok", func(ctx f2.Context, t *testing.T) f2.Context { test := testCase{ url: "/health", method: http.MethodGet, expectedStatus: http.StatusOK, expectedOut: func(object interface{}, msgAndArgs ...interface{}) bool { return assert.Equal(t, "ok", object, msgAndArgs...) }, } return testEndpoint(ctx, t, rulesEngine, test) }). Feature() f.Test(t, feat) }