From cfb81ca154c8fda88a4edd14e71c7431a404c2e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Wed, 18 Feb 2026 18:17:01 +0400 Subject: [PATCH] Fix e2e again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- e2e/internal/testutil/client.go | 93 +++++++++++++++++++----- pkg/server/api/connect/v1/v1_resolver.go | 1 + 2 files changed, 76 insertions(+), 18 deletions(-) diff --git a/e2e/internal/testutil/client.go b/e2e/internal/testutil/client.go index b99b1e89d..64c110438 100644 --- a/e2e/internal/testutil/client.go +++ b/e2e/internal/testutil/client.go @@ -126,16 +126,14 @@ func (c *Client) SetupTestUserInOrg(ownerClient *Client) { password := "TestPassword123!" fullName := fmt.Sprintf("Test User %s", uniqueID) - // Sign up new user - c.userID = c.signUp(email, password, fullName) - // Owner invites user to organization - profileID := ownerClient.createUser(email, fullName, coredata.MembershipRole(c.role)) + profileID, identityID := ownerClient.createUser(email, fullName, coredata.MembershipRole(c.role)) + c.userID = identityID ownerClient.inviteUser(profileID) - token := c.getActivationToken(email) - - c.activateUser(token) + passwordToken := c.activateUser(token) + c.resetPassword(password, passwordToken) + c.signIn(email, password) // Assume organization session to use console API c.assumeOrganizationSession() @@ -173,6 +171,32 @@ func (c *Client) signUp(email, password, fullName string) gid.GID { return userID } +func (c *Client) signIn(email string, password string) { + const query = ` + mutation($input: SignInInput!) { + signIn(input: $input) { + identity { id } + } + } + ` + + var result struct { + SignIn struct { + Identity struct { + ID string `json:"id"` + } `json:"identity"` + } `json:"signIn"` + } + + err := c.ExecuteConnect(query, map[string]any{ + "input": map[string]any{ + "email": email, + "password": password, + }, + }, &result) + require.NoError(c.T, err, "signIn mutation failed") +} + func (c *Client) createOrganization(name string) gid.GID { const query = ` mutation($input: CreateOrganizationInput!) { @@ -274,12 +298,17 @@ func (c *Client) updateOwnMembershipRole(role coredata.MembershipRole) { require.NoError(c.T, err, "updateMembership mutation failed") } -func (c *Client) createUser(email, fullName string, role coredata.MembershipRole) gid.GID { +func (c *Client) createUser(email, fullName string, role coredata.MembershipRole) (gid.GID, gid.GID) { const query = ` mutation($input: CreateUserInput!) { createUser(input: $input) { profileEdge { - node { id } + node { + id + identity { + id + } + } } } } @@ -289,7 +318,10 @@ func (c *Client) createUser(email, fullName string, role coredata.MembershipRole CreateUser struct { ProfileEdge struct { Node struct { - ID string `json:"id"` + ID string `json:"id"` + Identity struct { + ID string `json:"id"` + } `json:"identity"` } `json:"node"` } `json:"profileEdge"` } `json:"createUser"` @@ -310,7 +342,10 @@ func (c *Client) createUser(email, fullName string, role coredata.MembershipRole profileID, err := gid.ParseGID(result.CreateUser.ProfileEdge.Node.ID) require.NoError(c.T, err, "cannot parse profile ID") - return profileID + identityID, err := gid.ParseGID(result.CreateUser.ProfileEdge.Node.Identity.ID) + require.NoError(c.T, err, "cannot parse identity ID") + + return profileID, identityID } func (c *Client) inviteUser(profileID gid.GID) { @@ -373,22 +408,18 @@ func (c *Client) getActivationToken(email string) string { return "" } -func (c *Client) activateUser(token string) { +func (c *Client) activateUser(token string) string { const query = ` mutation($input: ActivateAccountInput!) { activateAccount(input: $input) { - profile { - id - } + createPasswordToken } } ` var result struct { ActivateAccount struct { - Profile struct { - ID string `json:"id"` - } `json:"profile"` + CreatePasswordToken string `json:"createPasswordToken"` } `json:"activateAccount"` } @@ -398,6 +429,32 @@ func (c *Client) activateUser(token string) { }, }, &result) require.NoError(c.T, err, "activateAccount mutation failed") + + return result.ActivateAccount.CreatePasswordToken +} + +func (c *Client) resetPassword(password string, token string) { + const query = ` + mutation($input: ResetPasswordInput!) { + resetPassword(input: $input) { + success + } + } + ` + + var result struct { + ResetPassword struct { + Success bool `json:"success"` + } `json:"resetPassword"` + } + + err := c.ExecuteConnect(query, map[string]any{ + "input": map[string]any{ + "token": token, + "password": password, + }, + }, &result) + require.NoError(c.T, err, "resetPassword mutation failed") } func (c *Client) assumeOrganizationSession() { diff --git a/pkg/server/api/connect/v1/v1_resolver.go b/pkg/server/api/connect/v1/v1_resolver.go index 710a5d7bd..fbfd10120 100644 --- a/pkg/server/api/connect/v1/v1_resolver.go +++ b/pkg/server/api/connect/v1/v1_resolver.go @@ -1198,6 +1198,7 @@ func (r *organizationResolver) Profiles(ctx context.Context, obj *types.Organiza return &types.ProfileConnection{ Resolver: r, ParentID: obj.ID, + Filters: filter, }, nil }