...
1 package rulestest
2
3 import (
4 "bytes"
5 "fmt"
6 "net/http"
7 "testing"
8
9 "github.com/gin-gonic/gin"
10 "github.com/stretchr/testify/assert"
11 "github.com/stretchr/testify/require"
12
13 "edge-infra.dev/pkg/lib/fog"
14 "edge-infra.dev/pkg/sds/emergencyaccess/config"
15 rulesengine "edge-infra.dev/pkg/sds/emergencyaccess/rules"
16 "edge-infra.dev/pkg/sds/emergencyaccess/rules/server"
17 "edge-infra.dev/pkg/sds/emergencyaccess/rules/setup"
18 "edge-infra.dev/test/f2"
19 "edge-infra.dev/test/f2/x/postgres"
20 )
21
22 func TestHealth(t *testing.T) {
23 var (
24 rulesEngine *gin.Engine
25 tName = t.Name()
26 )
27
28 feat := f2.NewFeature("Health tests").
29 Setup("Create Rulesengine service", func(ctx f2.Context, t *testing.T) f2.Context {
30 var (
31 pg = postgres.FromContextT(ctx, t)
32 )
33
34
35 conf := setup.RulesConfig{
36 SQL: config.SQLConfig{
37 ConnectionName: pg.ConnectionName,
38 DatabaseName: pg.Database,
39 User: pg.User,
40 Password: pg.Password,
41 Host: pg.Host,
42 Port: fmt.Sprint(pg.Port),
43 Schema: tName,
44 },
45 }
46
47 buf := new(bytes.Buffer)
48 log := fog.New(fog.To(buf))
49
50 dataset, checks, err := setup.CreateDataset(log, conf)
51 require.NoError(t, err)
52
53
54 gin.SetMode(gin.TestMode)
55 router := gin.New()
56
57 re := rulesengine.New(dataset)
58 res, err := server.New(router, re, log, checks...)
59 require.NoError(t, err)
60
61 rulesEngine = res.GinEngine
62 return ctx
63 }).
64 Test("Test health ok", func(ctx f2.Context, t *testing.T) f2.Context {
65 test := testCase{
66 url: "/health",
67 method: http.MethodGet,
68
69 expectedStatus: http.StatusOK,
70 expectedOut: func(object interface{}, msgAndArgs ...interface{}) bool {
71 return assert.Equal(t, "ok", object, msgAndArgs...)
72 },
73 }
74
75 return testEndpoint(ctx, t, rulesEngine, test)
76 }).
77 Feature()
78
79 f.Test(t, feat)
80 }
81
View as plain text