From 51cca072e69632fe841c7deb83365cd5b897ba58 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Fri, 18 Oct 2024 08:23:45 +0200 Subject: [PATCH] Add more tests Signed-off-by: Johan Haals --- cmd/yopass-server/main.go | 11 ++++++--- cmd/yopass-server/main_test.go | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/cmd/yopass-server/main.go b/cmd/yopass-server/main.go index a17066814..31a7ff3e9 100644 --- a/cmd/yopass-server/main.go +++ b/cmd/yopass-server/main.go @@ -52,9 +52,7 @@ func main() { if err != nil { logger.Fatal("failed to setup database", zap.Error(err)) } - registry := prometheus.NewRegistry() - registry.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{})) - registry.MustRegister(collectors.NewGoCollector()) + registry := setupRegistry() cert := viper.GetString("tls-cert") key := viper.GetString("tls-key") @@ -120,6 +118,13 @@ func metricsHandler(r *prometheus.Registry) http.Handler { return mx } +func setupRegistry() *prometheus.Registry { + registry := prometheus.NewRegistry() + registry.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{})) + registry.MustRegister(collectors.NewGoCollector()) + return registry +} + // configureZapLogger uses the `log-level` command line argument to set and replace the zap global logger. func configureZapLogger() *zap.Logger { loggerCfg := zap.NewProductionConfig() diff --git a/cmd/yopass-server/main_test.go b/cmd/yopass-server/main_test.go index 493808d44..5d056110c 100644 --- a/cmd/yopass-server/main_test.go +++ b/cmd/yopass-server/main_test.go @@ -1,6 +1,8 @@ package main import ( + "net/http" + "net/http/httptest" "testing" "github.com/spf13/viper" @@ -68,3 +70,42 @@ func TestSetupDatabaseInvalid(t *testing.T) { t.Fatalf("Expected '%s', got '%v'", expected, err.Error()) } } + +func TestMetricsHandler(t *testing.T) { + registry := setupRegistry() + + handler := metricsHandler(registry) + + req, err := http.NewRequest("GET", "/metrics", nil) + if err != nil { + t.Fatalf("Could not create request: %v", err) + } + + rr := httptest.NewRecorder() + handler.ServeHTTP(rr, req) + + if status := rr.Code; status != http.StatusOK { + t.Errorf("Handler returned wrong status code: got %v want %v", status, http.StatusOK) + } + + if body := rr.Body.String(); len(body) == 0 { + t.Error("Handler returned empty body") + } +} + +func TestConfigureZapLogger(t *testing.T) { + logger := configureZapLogger() + + if logger == nil { + t.Fatal("Expected non-nil logger") + } + + // Check if logger is working by capturing logs + core, logs := observer.New(zapcore.DebugLevel) + testLogger := zap.New(core) + testLogger.Debug("test log message") + + if logs.FilterMessage("test log message").Len() != 1 { + t.Error("Expected log message 'test log message'") + } +}