From 3f49a496653a0dc549bbc81abc810bf342c93dda Mon Sep 17 00:00:00 2001 From: jameslcarpino Date: Tue, 6 May 2025 10:19:52 -0700 Subject: [PATCH 1/2] add roleSlug param for createOrgMembership and fix updateOrgMemberhsip to allow for optional value for roleSlug --- lib/UserManagement.php | 18 +++++++++++++----- tests/WorkOS/UserManagementTest.php | 8 ++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/lib/UserManagement.php b/lib/UserManagement.php index e21eae6a..710dd611 100644 --- a/lib/UserManagement.php +++ b/lib/UserManagement.php @@ -218,18 +218,20 @@ public function deleteUser($userId) * * @param string $userId User ID * @param string $organizationId Organization ID + * @param string|null $roleSlug Role Slug * * @throws Exception\WorkOSException * * @return Resource\OrganizationMembership */ - public function createOrganizationMembership($userId, $organizationId) + public function createOrganizationMembership($userId, $organizationId, $roleSlug = null) { $path = "user_management/organization_memberships"; $params = [ "organization_id" => $organizationId, - "user_id" => $userId + "user_id" => $userId, + "role_slug" => $roleSlug ]; $response = Client::request( @@ -239,6 +241,9 @@ public function createOrganizationMembership($userId, $organizationId) $params, true ); + if (!is_null($roleSlug) && !is_string($roleSlug)) { + throw new \InvalidArgumentException("roleSlug must be a string or null"); + } return Resource\OrganizationMembership::constructFromResponse($response); } @@ -295,18 +300,18 @@ public function deleteOrganizationMembership($organizationMembershipId) * Update a User organization membership. * * @param string $organizationMembershipId Organization Membership ID - * @param string $role_slug The unique role identifier. + * @param string|null $role_slug The unique role identifier. * * @throws Exception\WorkOSException * * @return Resource\OrganizationMembership */ - public function updateOrganizationMembership($organizationMembershipId, $role_slug) + public function updateOrganizationMembership($organizationMembershipId, $roleSlug = null) { $path = "user_management/organization_memberships/{$organizationMembershipId}"; $params = [ - "role_slug" => $role_slug + "role_slug" => $roleSlug ]; $response = Client::request( @@ -316,6 +321,9 @@ public function updateOrganizationMembership($organizationMembershipId, $role_sl $params, true ); + if (!is_null($roleSlug) && !is_string($roleSlug)) { + throw new \InvalidArgumentException("roleSlug must be a string or null"); + } return Resource\OrganizationMembership::constructFromResponse($response); } diff --git a/tests/WorkOS/UserManagementTest.php b/tests/WorkOS/UserManagementTest.php index 9a2b74aa..d45e2008 100644 --- a/tests/WorkOS/UserManagementTest.php +++ b/tests/WorkOS/UserManagementTest.php @@ -837,13 +837,15 @@ public function testCreateOrganizationMembership() { $userId = "user_01H7X1M4TZJN5N4HG4XXMA1234"; $orgId = "org_01EHQMYV6MBK39QC5PZXHY59C3"; + $roleSlug = "admin"; $path = "user_management/organization_memberships"; $result = $this->organizationMembershipResponseFixture(); $params = [ "organization_id" => $orgId, - "user_id" => $userId + "user_id" => $userId, + "role_slug" => $roleSlug ]; $this->mockRequest( @@ -857,7 +859,9 @@ public function testCreateOrganizationMembership() $organizationMembership = $this->organizationMembershipFixture(); - $response = $this->userManagement->createOrganizationMembership($userId, $orgId); + $response = $this->userManagement->createOrganizationMembership($userId, $orgId, $roleSlug); + echo "Response from Create Org:"; + print_r($response); $this->assertSame($organizationMembership, $response->toArray()); } From cf780b4983507d3318ecb5519aa4361cf359e0a2 Mon Sep 17 00:00:00 2001 From: jameslcarpino Date: Tue, 6 May 2025 16:14:45 -0700 Subject: [PATCH 2/2] remove runtime type check and print statements --- lib/UserManagement.php | 6 ------ tests/WorkOS/UserManagementTest.php | 3 +-- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/UserManagement.php b/lib/UserManagement.php index 710dd611..eae733a2 100644 --- a/lib/UserManagement.php +++ b/lib/UserManagement.php @@ -241,9 +241,6 @@ public function createOrganizationMembership($userId, $organizationId, $roleSlug $params, true ); - if (!is_null($roleSlug) && !is_string($roleSlug)) { - throw new \InvalidArgumentException("roleSlug must be a string or null"); - } return Resource\OrganizationMembership::constructFromResponse($response); } @@ -321,9 +318,6 @@ public function updateOrganizationMembership($organizationMembershipId, $roleSlu $params, true ); - if (!is_null($roleSlug) && !is_string($roleSlug)) { - throw new \InvalidArgumentException("roleSlug must be a string or null"); - } return Resource\OrganizationMembership::constructFromResponse($response); } diff --git a/tests/WorkOS/UserManagementTest.php b/tests/WorkOS/UserManagementTest.php index d45e2008..83b81063 100644 --- a/tests/WorkOS/UserManagementTest.php +++ b/tests/WorkOS/UserManagementTest.php @@ -860,8 +860,7 @@ public function testCreateOrganizationMembership() $organizationMembership = $this->organizationMembershipFixture(); $response = $this->userManagement->createOrganizationMembership($userId, $orgId, $roleSlug); - echo "Response from Create Org:"; - print_r($response); + $this->assertSame($organizationMembership, $response->toArray()); }