...

Source file src/edge-infra.dev/pkg/sds/emergencyaccess/rules/server/integration/health_test.go

Documentation: edge-infra.dev/pkg/sds/emergencyaccess/rules/server/integration

     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  			// Dataset setup
    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  			// Server Setup
    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