Fix #7187 Backend: Patching teams API for team type is not working properly (#7236)

This commit is contained in:
Vivek Ratnavel Subramanian 2022-09-05 21:12:08 -07:00 committed by GitHub
parent 535f4b4f4f
commit f463cf48c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 5 deletions

View File

@ -50,8 +50,8 @@ import org.openmetadata.catalog.util.JsonUtils;
@Slf4j @Slf4j
public class TeamRepository extends EntityRepository<Team> { public class TeamRepository extends EntityRepository<Team> {
static final String TEAM_UPDATE_FIELDS = "owner,profile,users,defaultRoles,parents,children,policies"; static final String TEAM_UPDATE_FIELDS = "owner,profile,users,defaultRoles,parents,children,policies,teamType";
static final String TEAM_PATCH_FIELDS = "owner,profile,users,defaultRoles,parents,children,policies"; static final String TEAM_PATCH_FIELDS = "owner,profile,users,defaultRoles,parents,children,policies,teamType";
private Team organization = null; private Team organization = null;
public TeamRepository(CollectionDAO dao) { public TeamRepository(CollectionDAO dao) {
@ -365,6 +365,7 @@ public class TeamRepository extends EntityRepository<Team> {
public void entitySpecificUpdate() throws IOException { public void entitySpecificUpdate() throws IOException {
recordChange("profile", original.getProfile(), updated.getProfile()); recordChange("profile", original.getProfile(), updated.getProfile());
recordChange("isJoinable", original.getIsJoinable(), updated.getIsJoinable()); recordChange("isJoinable", original.getIsJoinable(), updated.getIsJoinable());
recordChange("teamType", original.getTeamType(), updated.getTeamType());
updateUsers(original, updated); updateUsers(original, updated);
updateDefaultRoles(original, updated); updateDefaultRoles(original, updated);
updateParents(original, updated); updateParents(original, updated);

View File

@ -219,9 +219,9 @@ public class TeamResourceTest extends EntityResourceTest<Team, CreateTeam> {
@Test @Test
void patch_teamAttributes_as_non_admin_403(TestInfo test) throws HttpResponseException, JsonProcessingException { void patch_teamAttributes_as_non_admin_403(TestInfo test) throws HttpResponseException, JsonProcessingException {
// Create table without any attributes // Create team without any attributes
Team team = createEntity(createRequest(test), ADMIN_AUTH_HEADERS); Team team = createEntity(createRequest(test), ADMIN_AUTH_HEADERS);
// Patching as a non-admin should is disallowed // Patching as a non-admin should be disallowed
String originalJson = JsonUtils.pojoToJson(team); String originalJson = JsonUtils.pojoToJson(team);
team.setDisplayName("newDisplayName"); team.setDisplayName("newDisplayName");
assertResponse( assertResponse(
@ -230,6 +230,20 @@ public class TeamResourceTest extends EntityResourceTest<Team, CreateTeam> {
permissionNotAllowed(TEST_USER_NAME, List.of(MetadataOperation.EDIT_DISPLAY_NAME))); permissionNotAllowed(TEST_USER_NAME, List.of(MetadataOperation.EDIT_DISPLAY_NAME)));
} }
@Test
void patch_teamType_as_user_with_UpdateTeam_permission(TestInfo test) throws IOException {
Team team = createEntity(createRequest(test).withTeamType(BUSINESS_UNIT), ADMIN_AUTH_HEADERS);
String originalJson = JsonUtils.pojoToJson(team);
team.setTeamType(DIVISION);
ChangeDescription change = getChangeDescription(team.getVersion());
fieldUpdated(change, "teamType", BUSINESS_UNIT.toString(), DIVISION.toString());
patchEntityAndCheck(team, originalJson, ADMIN_AUTH_HEADERS, MINOR_UPDATE, change);
team = getEntity(team.getId(), ADMIN_AUTH_HEADERS);
assertEquals(DIVISION, team.getTeamType());
}
@Test @Test
void patch_teamUsers_as_user_with_UpdateTeam_permission(TestInfo test) throws IOException { void patch_teamUsers_as_user_with_UpdateTeam_permission(TestInfo test) throws IOException {
UserResourceTest userResourceTest = new UserResourceTest(); UserResourceTest userResourceTest = new UserResourceTest();
@ -623,7 +637,7 @@ public class TeamResourceTest extends EntityResourceTest<Team, CreateTeam> {
@Override @Override
public CreateTeam createRequest(String name) { public CreateTeam createRequest(String name) {
return new CreateTeam().withName(name).withProfile(PROFILE); return new CreateTeam().withName(name).withProfile(PROFILE).withTeamType(GROUP);
} }
@Override @Override