Skip to content

Commit

Permalink
Have LookupSubjects return Unimplemented if a cursor is used
Browse files Browse the repository at this point in the history
This will give user feedback until support is added
  • Loading branch information
josephschorr committed Jan 29, 2025
1 parent 5a24d23 commit 4c03efe
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
4 changes: 4 additions & 0 deletions internal/services/v1/permissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,10 @@ func (ps *permissionServer) LookupResources(req *v1.LookupResourcesRequest, resp
func (ps *permissionServer) LookupSubjects(req *v1.LookupSubjectsRequest, resp v1.PermissionsService_LookupSubjectsServer) error {
ctx := resp.Context()

if req.OptionalConcreteLimit != 0 {
return ps.rewriteError(ctx, status.Errorf(codes.Unimplemented, "concrete limit is not yet supported"))
}

atRevision, revisionReadAt, err := consistency.RevisionFromContext(ctx)
if err != nil {
return ps.rewriteError(ctx, err)
Expand Down
30 changes: 30 additions & 0 deletions internal/services/v1/permissions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -855,6 +855,36 @@ func TestTranslateExpansionTree(t *testing.T) {
}
}

func TestLookupSubjectsWithConcreteLimit(t *testing.T) {
conn, cleanup, _, revision := testserver.NewTestServer(require.New(t), testTimedeltas[0], memdb.DisableGC, true, tf.StandardDatastoreWithData)
client := v1.NewPermissionsServiceClient(conn)
t.Cleanup(cleanup)

ctx := context.Background()

lsClient, err := client.LookupSubjects(ctx, &v1.LookupSubjectsRequest{
Resource: &v1.ObjectReference{
ObjectType: "document",
ObjectId: "masterplan",
},
Permission: "view",
SubjectObjectType: "user",
Consistency: &v1.Consistency{
Requirement: &v1.Consistency_AtLeastAsFresh{
AtLeastAsFresh: zedtoken.MustNewFromRevision(revision),
},
},
OptionalConcreteLimit: 2,
})
require.NoError(t, err)
for {
_, err := lsClient.Recv()
require.Error(t, err)
grpcutil.RequireStatus(t, codes.Unimplemented, err)
return
}
}

func TestLookupSubjects(t *testing.T) {
testCases := []struct {
resource *v1.ObjectReference
Expand Down

0 comments on commit 4c03efe

Please sign in to comment.