diff options
| author | mo khan <mo@mokhan.ca> | 2025-05-02 15:13:43 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-05-02 15:13:43 -0600 |
| commit | b9f79ce22e0be5084b6a3b447b62c3d23ab29208 (patch) | |
| tree | 62377702574fa18ac58fe743b63836ae8b7fa946 /pkg/rpc | |
| parent | c583bcd1473205104a1e1af812ed4976d30c7baa (diff) | |
feat: add a GET /health endpoint
Diffstat (limited to 'pkg/rpc')
| -rw-r--r-- | pkg/rpc/server.go | 4 | ||||
| -rw-r--r-- | pkg/rpc/server_test.go | 62 |
2 files changed, 42 insertions, 24 deletions
diff --git a/pkg/rpc/server.go b/pkg/rpc/server.go index a37df9fc..a71ed8ca 100644 --- a/pkg/rpc/server.go +++ b/pkg/rpc/server.go @@ -11,6 +11,10 @@ func New() http.Handler { fmt.Printf("Registering : %v\n", handler.PathPrefix()) mux.Handle(handler.PathPrefix(), handler) } + + mux.Handle("/health", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + })) return mux } diff --git a/pkg/rpc/server_test.go b/pkg/rpc/server_test.go index fd6e6237..f026480b 100644 --- a/pkg/rpc/server_test.go +++ b/pkg/rpc/server_test.go @@ -10,38 +10,52 @@ import ( ) func TestServer(t *testing.T) { - srv := httptest.NewServer(New()) + handler := New() + srv := httptest.NewServer(handler) defer srv.Close() - client := NewAbilityProtobufClient(srv.URL, &http.Client{}) + t.Run("Ability.Allowed", func(t *testing.T) { + client := NewAbilityProtobufClient(srv.URL, &http.Client{}) - t.Run("forbids", func(t *testing.T) { - reply, err := client.Allowed(t.Context(), &AllowRequest{ - Subject: "", - Permission: "", - Resource: "", + t.Run("forbids", func(t *testing.T) { + reply, err := client.Allowed(t.Context(), &AllowRequest{ + Subject: "", + Permission: "", + Resource: "", + }) + require.NoError(t, err) + assert.False(t, reply.Result) + }) + + t.Run("allows alice:view:jane_vacation", func(t *testing.T) { + reply, err := client.Allowed(t.Context(), &AllowRequest{ + Subject: "gid://example/User/alice", + Permission: "view", + Resource: "gid://example/Album/jane_vacation", + }) + require.NoError(t, err) + assert.True(t, reply.Result) }) - require.NoError(t, err) - assert.False(t, reply.Result) - }) - t.Run("allows alice:view:jane_vacation", func(t *testing.T) { - reply, err := client.Allowed(t.Context(), &AllowRequest{ - Subject: "gid://example/User/alice", - Permission: "view", - Resource: "gid://example/Album/jane_vacation", + t.Run("allows gid://User/1 read gid://Organization/2", func(t *testing.T) { + reply, err := client.Allowed(t.Context(), &AllowRequest{ + Subject: "gid://example/User/1", + Permission: "read", + Resource: "gid://example/Organization/2", + }) + require.NoError(t, err) + assert.True(t, reply.Result) }) - require.NoError(t, err) - assert.True(t, reply.Result) }) - t.Run("allows gid://User/1 read gid://Organization/2", func(t *testing.T) { - reply, err := client.Allowed(t.Context(), &AllowRequest{ - Subject: "gid://example/User/1", - Permission: "read", - Resource: "gid://example/Organization/2", + t.Run("GET /health", func(t *testing.T) { + t.Run("returns OK", func(t *testing.T) { + r := httptest.NewRequest("GET", "/health", nil) + w := httptest.NewRecorder() + + handler.ServeHTTP(w, r) + + assert.Equal(t, http.StatusOK, w.Code) }) - require.NoError(t, err) - assert.True(t, reply.Result) }) } |
