fix(structuredProps) Add validation that ID and qualifiedName have no… (#11930)

This commit is contained in:
david-leifker 2024-11-22 16:32:33 -06:00 committed by GitHub
parent 28cc8caf65
commit 2878c65ceb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 55 additions and 0 deletions

View File

@ -89,6 +89,9 @@ public class PropertyDefinitionValidator extends AspectPayloadValidator {
item.getAspect(StructuredPropertyDefinition.class);
versionFormatCheck(item, newDefinition.getVersion()).ifPresent(exceptions::addException);
urnIdCheck(item).ifPresent(exceptions::addException);
qualifiedNameCheck(item, newDefinition.getQualifiedName())
.ifPresent(exceptions::addException);
if (item.getPreviousSystemAspect() != null) {
@ -192,4 +195,20 @@ public class PropertyDefinitionValidator extends AspectPayloadValidator {
}
return Optional.empty();
}
private static Optional<AspectValidationException> urnIdCheck(MCPItem item) {
if (item.getUrn().getId().contains(" ")) {
return Optional.of(AspectValidationException.forItem(item, "Urn ID cannot have spaces"));
}
return Optional.empty();
}
private static Optional<AspectValidationException> qualifiedNameCheck(
MCPItem item, @Nonnull String qualifiedName) {
if (qualifiedName.contains(" ")) {
return Optional.of(
AspectValidationException.forItem(item, "Qualified names cannot have spaces"));
}
return Optional.empty();
}
}

View File

@ -397,4 +397,40 @@ public class PropertyDefinitionValidatorTest {
.count(),
0);
}
@Test
public void testUrnIdWithSpace()
throws URISyntaxException, CloneNotSupportedException, AspectValidationException {
Urn propertyUrn = UrnUtils.getUrn("urn:li:structuredProperty:test me out.foo.bar");
StructuredPropertyDefinition newProperty = new StructuredPropertyDefinition();
newProperty.setEntityTypes(new UrnArray(Urn.createFromString("urn:li:logicalEntity:dataset")));
newProperty.setDisplayName("oldProp");
newProperty.setQualifiedName("foo.bar");
newProperty.setCardinality(PropertyCardinality.MULTIPLE);
newProperty.setValueType(Urn.createFromString("urn:li:logicalType:STRING"));
assertEquals(
PropertyDefinitionValidator.validateDefinitionUpserts(
TestMCP.ofOneMCP(propertyUrn, null, newProperty, entityRegistry),
mockRetrieverContext)
.count(),
1);
}
@Test
public void testQualifiedNameWithSpace()
throws URISyntaxException, CloneNotSupportedException, AspectValidationException {
Urn propertyUrn = UrnUtils.getUrn("urn:li:structuredProperty:foo.bar");
StructuredPropertyDefinition newProperty = new StructuredPropertyDefinition();
newProperty.setEntityTypes(new UrnArray(Urn.createFromString("urn:li:logicalEntity:dataset")));
newProperty.setDisplayName("oldProp");
newProperty.setQualifiedName("foo.bar with spaces");
newProperty.setCardinality(PropertyCardinality.MULTIPLE);
newProperty.setValueType(Urn.createFromString("urn:li:logicalType:STRING"));
assertEquals(
PropertyDefinitionValidator.validateDefinitionUpserts(
TestMCP.ofOneMCP(propertyUrn, null, newProperty, entityRegistry),
mockRetrieverContext)
.count(),
1);
}
}