diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java index 7a11aac5636..807172e6d7e 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UserRepository.java @@ -286,6 +286,11 @@ public class UserRepository extends EntityRepository { } addRelationship(team.getId(), user.getId(), Entity.TEAM, Entity.USER, Relationship.HAS); } + if (teams.size() > 1) { + // Remove organization team from the response + teams = teams.stream().filter(t -> !t.getId().equals(organization.getId())).collect(Collectors.toList()); + user.setTeams(teams); + } } /** Handles entity updated from PUT and POST operation. */ diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/teams/UserResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/teams/UserResourceTest.java index cb0a522c08e..35faa8ad179 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/teams/UserResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/teams/UserResourceTest.java @@ -64,6 +64,7 @@ import java.util.Map; import java.util.TimeZone; import java.util.UUID; import java.util.function.Predicate; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.http.client.HttpResponseException; @@ -519,6 +520,28 @@ public class UserResourceTest extends EntityResourceTest { assertEquals(newDisplayName, user.getDisplayName()); } + @Test + void patch_teamAddition_200_ok(TestInfo test) throws HttpResponseException, JsonProcessingException { + TeamResourceTest teamResourceTest = new TeamResourceTest(); + EntityReference team1 = + teamResourceTest.createEntity(teamResourceTest.createRequest(test, 1), ADMIN_AUTH_HEADERS).getEntityReference(); + User user = + createEntity( + createRequest(test, 10) + .withName("testUser1") + .withDisplayName("displayName") + .withEmail("testUser1@email.com"), + authHeaders("test1@email.com")); + String userJson = JsonUtils.pojoToJson(user); + List teams = user.getTeams(); + teams.add(team1); + user.setTeams(teams); // Update the teams + user = patchEntity(user.getId(), userJson, user, ADMIN_AUTH_HEADERS); // Patch the user + // Ensure default "Organization" team is not part of the patch response + assertEquals(1, user.getTeams().size()); + assertEquals(team1.getId(), user.getTeams().get(0).getId()); + } + @Test void patch_userAttributes_as_admin_200_ok(TestInfo test) throws IOException { // Create user without any attributes - ***Note*** isAdmin by default is false. @@ -793,6 +816,10 @@ public class UserResourceTest extends EntityResourceTest { } if (expectedTeams.isEmpty()) { expectedTeams = new ArrayList<>(List.of(ORG_TEAM.getEntityReference())); // Organization is default team + } else { + // Remove ORG_TEAM from the expected teams + expectedTeams = + expectedTeams.stream().filter(t -> !t.getId().equals(ORG_TEAM.getId())).collect(Collectors.toList()); } assertEntityReferences(expectedTeams, user.getTeams());