summaryrefslogtreecommitdiff
path: root/pkg/rpc
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-05-02 15:13:43 -0600
committermo khan <mo@mokhan.ca>2025-05-02 15:13:43 -0600
commitb9f79ce22e0be5084b6a3b447b62c3d23ab29208 (patch)
tree62377702574fa18ac58fe743b63836ae8b7fa946 /pkg/rpc
parentc583bcd1473205104a1e1af812ed4976d30c7baa (diff)
feat: add a GET /health endpoint
Diffstat (limited to 'pkg/rpc')
-rw-r--r--pkg/rpc/server.go4
-rw-r--r--pkg/rpc/server_test.go62
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)
})
}