From 93ec0d73da5eb51b3a68c2251e4c21a9c3fe67f7 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 28 May 2026 22:40:01 +0000 Subject: [PATCH] Fix last owner demotion regression Use the Connect schema's profile connection in the e2e regression so the test can find the sole owner's membership. Adjust whitespace around the resolver error path to satisfy Go lint. Signed-off-by: Cursor Agent --- e2e/console/user_test.go | 38 +++++++++---------- .../api/connect/v1/membership_resolvers.go | 1 + 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/e2e/console/user_test.go b/e2e/console/user_test.go index c33193165..8984bbe38 100644 --- a/e2e/console/user_test.go +++ b/e2e/console/user_test.go @@ -119,16 +119,17 @@ func TestUser_UpdateMembershipRejectsLastOwnerDemotion(t *testing.T) { t.Parallel() owner := testutil.NewClient(t, testutil.RoleOwner) - queryMembers := ` + queryProfiles := ` query($id: ID!) { node(id: $id) { ... on Organization { - members(first: 10) { + profiles(first: 10) { edges { node { - id - identity { id } - role + membership { + id + role + } } } } @@ -137,32 +138,31 @@ func TestUser_UpdateMembershipRejectsLastOwnerDemotion(t *testing.T) { } ` - var membersResult struct { + var profilesResult struct { Node struct { - Members struct { + Profiles struct { Edges []struct { Node struct { - ID string `json:"id"` - Identity struct { - ID string `json:"id"` - } `json:"identity"` - Role string `json:"role"` + Membership struct { + ID string `json:"id"` + Role string `json:"role"` + } `json:"membership"` } `json:"node"` } `json:"edges"` - } `json:"members"` + } `json:"profiles"` } `json:"node"` } - err := owner.ExecuteConnect(queryMembers, map[string]any{ + err := owner.ExecuteConnect(queryProfiles, map[string]any{ "id": owner.GetOrganizationID().String(), - }, &membersResult) + }, &profilesResult) require.NoError(t, err) var ownerMembershipID string - for _, edge := range membersResult.Node.Members.Edges { - if edge.Node.Identity.ID == owner.GetUserID().String() { - ownerMembershipID = edge.Node.ID - assert.Equal(t, "OWNER", edge.Node.Role) + for _, edge := range profilesResult.Node.Profiles.Edges { + if edge.Node.Membership.Role == "OWNER" { + ownerMembershipID = edge.Node.Membership.ID + break } } diff --git a/pkg/server/api/connect/v1/membership_resolvers.go b/pkg/server/api/connect/v1/membership_resolvers.go index 080b63490..8b1f0ba26 100644 --- a/pkg/server/api/connect/v1/membership_resolvers.go +++ b/pkg/server/api/connect/v1/membership_resolvers.go @@ -68,6 +68,7 @@ func (r *mutationResolver) UpdateMembership(ctx context.Context, input types.Upd } r.logger.ErrorCtx(ctx, "cannot update membership", log.Error(err)) + return nil, gqlutils.Internal(ctx) }