From ad3adbda21569b30c63beadc888098cb56852624 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 15 May 2025 14:08:54 +0530 Subject: [PATCH 1/2] fix: owner downgrade. --- app/controllers/api/teams.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index dd64fe0768..9c383803f2 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -1089,7 +1089,10 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId') // Quick check: fetch up to 2 owners to determine if only one exists $ownersCount = $dbForProject->count( collection: 'memberships', - queries: [Query::contains('roles', ['owner'])], + queries: [ + Query::contains('roles', ['owner']), + Query::equal('teamInternalId', [$team->getInternalId()]) + ], max: 2 ); From 15992da36943518c82d8f90864c8321cb98733a0 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 15 May 2025 15:01:23 +0530 Subject: [PATCH 2/2] update: tests. --- tests/e2e/Services/Teams/TeamsConsoleClientTest.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/tests/e2e/Services/Teams/TeamsConsoleClientTest.php b/tests/e2e/Services/Teams/TeamsConsoleClientTest.php index 4b5ade7cbf..06358765f6 100644 --- a/tests/e2e/Services/Teams/TeamsConsoleClientTest.php +++ b/tests/e2e/Services/Teams/TeamsConsoleClientTest.php @@ -86,7 +86,7 @@ class TeamsConsoleClientTest extends Scope $session = $data['session'] ?? ''; /** - * Test for SUCCESS + * Test for FAILURE */ $roles = ['developer']; $response = $this->client->call(Client::METHOD_PATCH, '/teams/' . $teamUid . '/memberships/' . $membershipUid, array_merge([ @@ -97,12 +97,8 @@ class TeamsConsoleClientTest extends Scope 'roles' => $roles ]); - $this->assertEquals(200, $response['headers']['status-code']); - $this->assertNotEmpty($response['body']['$id']); - $this->assertNotEmpty($response['body']['userId']); - $this->assertNotEmpty($response['body']['teamId']); - $this->assertCount(count($roles), $response['body']['roles']); - $this->assertEquals($roles[0], $response['body']['roles'][0]); + $this->assertEquals(400, $response['headers']['status-code']); + $this->assertEquals('There must be at least one owner in the organization.', $response['body']['message']); /** * Test for unknown team