From 6a2965c41d15fb8669892ec97e951794f76cb4d4 Mon Sep 17 00:00:00 2001 From: mo khan Date: Fri, 11 Apr 2025 09:42:38 -0600 Subject: feat: add health check endpoint --- go.mod | 2 +- pkg/web/server.go | 2 ++ pkg/web/server_test.go | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 35f541f..6bc4bf0 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module gitlab.com/mokhax/sparkled go 1.24.0 require ( + github.com/google/jsonapi v1.0.0 github.com/oklog/ulid v1.3.1 github.com/stretchr/testify v1.10.0 github.com/xlgmokha/x v0.0.0-20250404223908-0b29f54f06e7 @@ -10,7 +11,6 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/google/jsonapi v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/pkg/web/server.go b/pkg/web/server.go index 2949309..e553920 100644 --- a/pkg/web/server.go +++ b/pkg/web/server.go @@ -23,6 +23,8 @@ func NewServer(storage db.Repository) *Server { func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { switch r.URL.String() { + case "/health": + w.WriteHeader(http.StatusOK) case "/sparkles.json": switch r.Method { case "GET": diff --git a/pkg/web/server_test.go b/pkg/web/server_test.go index 0281867..a8a0e19 100644 --- a/pkg/web/server_test.go +++ b/pkg/web/server_test.go @@ -22,6 +22,7 @@ func TestServer(t *testing.T) { response := httptest.NewRecorder() request, err := http.NewRequest("GET", "/sparkles.json", nil) require.NoError(t, err) + NewServer(store).ServeHTTP(response, request) assert.Equal(t, http.StatusOK, response.Code) @@ -34,4 +35,15 @@ func TestServer(t *testing.T) { assert.Equal(t, "for helping me", items[0].Reason) }) }) + + t.Run("GET /health", func(t *testing.T) { + t.Run("returns OK", func(t *testing.T) { + response := httptest.NewRecorder() + request, err := http.NewRequest("GET", "/health", nil) + require.NoError(t, err) + + NewServer(db.NewRepository()).ServeHTTP(response, request) + assert.Equal(t, http.StatusOK, response.Code) + }) + }) } -- cgit v1.2.3