From 16e8778993e65b8644c5325a6de14a55f4339f59 Mon Sep 17 00:00:00 2001 From: Vivek Ratnavel Subramanian Date: Fri, 30 Sep 2022 23:01:05 -0700 Subject: [PATCH] Fix #7812 Backend : Leave Team is throwing an error (#7835) --- .../service/jdbi3/UserRepository.java | 5 ++++ .../resources/teams/UserResourceTest.java | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+) 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());