diff options
Diffstat (limited to 'internal/service/sever_test.go')
| -rw-r--r-- | internal/service/sever_test.go | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/internal/service/sever_test.go b/internal/service/sever_test.go new file mode 100644 index 000000000..6effa88e9 --- /dev/null +++ b/internal/service/sever_test.go @@ -0,0 +1,121 @@ +package service + +import ( + "context" + "testing" + "time" + + "github.com/sirupsen/logrus" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/authelia/authelia/v4/internal/configuration/schema" + "github.com/authelia/authelia/v4/internal/logging" + "github.com/authelia/authelia/v4/internal/metrics" + "github.com/authelia/authelia/v4/internal/middlewares" + "github.com/authelia/authelia/v4/internal/templates" +) + +func TestNewMainServer(t *testing.T) { + tx, err := templates.New(templates.Config{}) + require.NoError(t, err) + + address, err := schema.NewAddress("tcp://:9091") + require.NoError(t, err) + + config := &schema.Configuration{ + Server: schema.Server{ + Address: &schema.AddressTCP{Address: *address}, + }, + } + + ctx := &testCtx{ + Context: context.Background(), + Configuration: config, + Providers: middlewares.Providers{ + Templates: tx, + }, + Logger: logrus.NewEntry(logging.Logger()), + } + + server, err := ProvisionServer(ctx) + assert.NoError(t, err) + assert.NotNil(t, server) + + go func() { + require.NoError(t, server.Run()) + }() + + // Give the service a moment to start. + time.Sleep(100 * time.Millisecond) + + assert.Equal(t, "main", server.ServiceName()) + assert.Equal(t, "server", server.ServiceType()) + assert.NotNil(t, server.Log()) + + server.Shutdown() +} + +func TestNewMetricsServer(t *testing.T) { + tx, err := templates.New(templates.Config{}) + require.NoError(t, err) + + address, err := schema.NewAddress("tcp://:9891/metrics") + require.NoError(t, err) + + config := &schema.Configuration{ + Telemetry: schema.Telemetry{ + Metrics: schema.TelemetryMetrics{ + Enabled: true, + Address: &schema.AddressTCP{Address: *address}, + }, + }, + } + + ctx := &testCtx{ + Context: context.Background(), + Configuration: config, + Providers: middlewares.Providers{ + Templates: tx, + Metrics: metrics.NewPrometheus(), + }, + Logger: logrus.NewEntry(logging.Logger()), + } + + server, err := ProvisionServerMetrics(ctx) + assert.NoError(t, err) + assert.NotNil(t, server) + + go func() { + require.NoError(t, server.Run()) + }() + + // Give the service a moment to start. + time.Sleep(100 * time.Millisecond) + + assert.Equal(t, "metrics", server.ServiceName()) + assert.Equal(t, "server", server.ServiceType()) + assert.NotNil(t, server.Log()) + + server.Shutdown() +} + +type testCtx struct { + Configuration *schema.Configuration + Providers middlewares.Providers + Logger *logrus.Entry + + context.Context +} + +func (c *testCtx) GetConfiguration() *schema.Configuration { + return c.Configuration +} + +func (c *testCtx) GetProviders() middlewares.Providers { + return c.Providers +} + +func (c *testCtx) GetLogger() *logrus.Entry { + return c.Logger +} |
