Fixes #4478 PUT method for /api/v1/users gives 409 (#4539)

This commit is contained in:
Suresh Srinivas 2022-04-27 10:22:06 -07:00 committed by GitHub
parent 7d57a81622
commit 5ccd8ddbbf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 19 additions and 30 deletions

View File

@ -31,7 +31,6 @@ import org.openmetadata.catalog.type.Include;
import org.openmetadata.catalog.type.Relationship; import org.openmetadata.catalog.type.Relationship;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
public class DashboardServiceRepository extends EntityRepository<DashboardService> { public class DashboardServiceRepository extends EntityRepository<DashboardService> {
private static final String UPDATE_FIELDS = "owner"; private static final String UPDATE_FIELDS = "owner";
@ -141,7 +140,7 @@ public class DashboardServiceRepository extends EntityRepository<DashboardServic
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -33,7 +33,6 @@ import org.openmetadata.catalog.type.Include;
import org.openmetadata.catalog.type.Relationship; import org.openmetadata.catalog.type.Relationship;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
public class DatabaseServiceRepository extends EntityRepository<DatabaseService> { public class DatabaseServiceRepository extends EntityRepository<DatabaseService> {
@ -161,7 +160,7 @@ public class DatabaseServiceRepository extends EntityRepository<DatabaseService>
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -36,7 +36,6 @@ import org.openmetadata.catalog.type.TagLabel.Source;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
public class GlossaryRepository extends EntityRepository<Glossary> { public class GlossaryRepository extends EntityRepository<Glossary> {
private static final String UPDATE_FIELDS = "owner,tags,reviewers"; private static final String UPDATE_FIELDS = "owner,tags,reviewers";
@ -149,7 +148,7 @@ public class GlossaryRepository extends EntityRepository<Glossary> {
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -29,7 +29,6 @@ import org.openmetadata.catalog.type.Include;
import org.openmetadata.catalog.type.Relationship; import org.openmetadata.catalog.type.Relationship;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
public class MessagingServiceRepository extends EntityRepository<MessagingService> { public class MessagingServiceRepository extends EntityRepository<MessagingService> {
private static final String UPDATE_FIELDS = "owner, connection"; private static final String UPDATE_FIELDS = "owner, connection";
@ -134,7 +133,7 @@ public class MessagingServiceRepository extends EntityRepository<MessagingServic
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -26,7 +26,6 @@ import org.openmetadata.catalog.type.EntityReference;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
public class PipelineServiceRepository extends EntityRepository<PipelineService> { public class PipelineServiceRepository extends EntityRepository<PipelineService> {
private static final String UPDATE_FIELDS = "owner"; private static final String UPDATE_FIELDS = "owner";
@ -118,7 +117,7 @@ public class PipelineServiceRepository extends EntityRepository<PipelineService>
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -37,7 +37,6 @@ import org.openmetadata.catalog.type.Relationship;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
@ -169,7 +168,7 @@ public class RoleRepository extends EntityRepository<Role> {
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -25,7 +25,6 @@ import org.openmetadata.catalog.resources.services.storage.StorageServiceResourc
import org.openmetadata.catalog.type.ChangeDescription; import org.openmetadata.catalog.type.ChangeDescription;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.FullyQualifiedName;
public class StorageServiceRepository extends EntityRepository<StorageService> { public class StorageServiceRepository extends EntityRepository<StorageService> {
private static final String UPDATE_FIELDS = "owner"; private static final String UPDATE_FIELDS = "owner";
@ -111,7 +110,7 @@ public class StorageServiceRepository extends EntityRepository<StorageService> {
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -32,7 +32,6 @@ import org.openmetadata.catalog.type.Relationship;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
public class TeamRepository extends EntityRepository<Team> { public class TeamRepository extends EntityRepository<Team> {
static final String TEAM_UPDATE_FIELDS = "owner,profile,users,defaultRoles"; static final String TEAM_UPDATE_FIELDS = "owner,profile,users,defaultRoles";
@ -175,7 +174,7 @@ public class TeamRepository extends EntityRepository<Team> {
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -39,7 +39,6 @@ import org.openmetadata.catalog.type.Relationship;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
@Slf4j @Slf4j
public class UserRepository extends EntityRepository<User> { public class UserRepository extends EntityRepository<User> {
@ -265,7 +264,7 @@ public class UserRepository extends EntityRepository<User> {
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -53,7 +53,6 @@ import org.openmetadata.catalog.type.Webhook;
import org.openmetadata.catalog.type.Webhook.Status; import org.openmetadata.catalog.type.Webhook.Status;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.FullyQualifiedName;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil; import org.openmetadata.catalog.util.RestUtil;
import org.openmetadata.common.utils.CommonUtil; import org.openmetadata.common.utils.CommonUtil;
@ -190,7 +189,7 @@ public class WebhookRepository extends EntityRepository<Webhook> {
@Override @Override
public String getFullyQualifiedName() { public String getFullyQualifiedName() {
return FullyQualifiedName.build(entity.getName()); return entity.getName();
} }
@Override @Override

View File

@ -123,7 +123,6 @@ import org.openmetadata.catalog.type.Include;
import org.openmetadata.catalog.type.TagLabel; import org.openmetadata.catalog.type.TagLabel;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.FullyQualifiedName;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.catalog.util.TestUtils; import org.openmetadata.catalog.util.TestUtils;
@ -721,11 +720,14 @@ public abstract class EntityResourceTest<T, K> extends CatalogApplicationTest {
request = createRequest(name, "", null, null); request = createRequest(name, "", null, null);
entity = createEntity(request, ADMIN_AUTH_HEADERS); entity = createEntity(request, ADMIN_AUTH_HEADERS);
entityInterface = getEntityInterface(entity); entityInterface = getEntityInterface(entity);
assertTrue(entityInterface.getFullyQualifiedName().contains("\""));
String[] split = FullyQualifiedName.split(entityInterface.getFullyQualifiedName()); // The FQN has quote delimited parts if the FQN is hierarchical.
String actualName = split[split.length - 1]; // For entities where FQN is same as the entity name, (that is no hierarchical name for entities like user,
// team, webhook and the entity names that are at the root for FQN like services, TagCategory, and Glossary etc.)
// No delimiter is expected.
boolean noHierarchicalName = entityInterface.getFullyQualifiedName().equals(entityInterface.getName());
assertTrue(noHierarchicalName || entityInterface.getFullyQualifiedName().contains("\""));
assertEquals(name, entityInterface.getName()); assertEquals(name, entityInterface.getName());
assertEquals(FullyQualifiedName.quoteName(name), actualName);
} }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -281,18 +281,15 @@ public class UserResourceTest extends EntityResourceTest<User, CreateUser> {
@Test @Test
void put_validUser_200_ok(TestInfo test) throws IOException { void put_validUser_200_ok(TestInfo test) throws IOException {
// Create user with different optional fields // Create user with different optional fields
CreateUser create = createRequest(test, 1); CreateUser create = createRequest("user.xyz", null, null, null);
User user = updateAndCheckEntity(create, CREATED, ADMIN_AUTH_HEADERS, UpdateType.CREATED, null); User user = updateAndCheckEntity(create, CREATED, ADMIN_AUTH_HEADERS, UpdateType.CREATED, null);
// Update the user information using PUT // Update the user information using PUT
String oldEmail = create.getEmail(); String oldEmail = create.getEmail();
String oldDisplayName = create.getDisplayName();
CreateUser update = create.withEmail("test1@email.com").withDisplayName("displayName1"); CreateUser update = create.withEmail("test1@email.com").withDisplayName("displayName1");
ChangeDescription change = getChangeDescription(user.getVersion()); ChangeDescription change = getChangeDescription(user.getVersion());
change change.getFieldsAdded().add(new FieldChange().withName("displayName").withNewValue("displayName1"));
.getFieldsAdded()
.add(new FieldChange().withName("displayName").withOldValue(oldDisplayName).withNewValue("displayName1"));
change change
.getFieldsUpdated() .getFieldsUpdated()
.add(new FieldChange().withName("email").withOldValue(oldEmail).withNewValue("test1@email.com")); .add(new FieldChange().withName("email").withOldValue(oldEmail).withNewValue("test1@email.com"));