From 8b45b639fd59abaf95baf55c3a46304bd10859eb Mon Sep 17 00:00:00 2001 From: Sriharsha Chintalapani Date: Fri, 27 Jan 2023 18:50:35 -0800 Subject: [PATCH] Add table entity name pattern (#9970) * Added ()0 to table entityName for oracle metadata * move # character to columnName pattern * Test newly allowed characters in table name and columns --------- Co-authored-by: Teddy Crepineau Co-authored-by: sureshms --- .../service/resources/EntityResourceTest.java | 10 +-- .../WebAnalyticEventResourceTest.java | 16 ++--- .../databases/TableResourceTest.java | 71 +++++++++---------- .../dqtests/TestCaseResourceTest.java | 21 +++--- .../dqtests/TestSuiteResourceTest.java | 3 +- .../resources/feeds/FeedResourceTest.java | 2 +- .../glossary/GlossaryResourceTest.java | 14 ++-- .../glossary/GlossaryTermResourceTest.java | 3 +- .../resources/kpi/KpiResourceTest.java | 10 ++- .../locations/LocationResourceTest.java | 7 +- .../resources/metadata/TypeResourceTest.java | 3 +- .../pipelines/PipelineResourceTest.java | 7 +- .../resources/teams/UserResourceTest.java | 2 +- .../resources/topics/TopicResourceTest.java | 14 ++-- .../resources/util/UtilResourceTest.java | 4 +- .../json/schema/entity/data/table.json | 4 +- .../resources/json/schema/type/basic.json | 2 +- 17 files changed, 92 insertions(+), 101 deletions(-) diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java index d7c60096167..6dbdc4e9f67 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java @@ -181,14 +181,14 @@ public abstract class EntityResourceTest$\"]"; + "[entityLink must match \"^<#E::\\w+::[\\w'\\- .&/:+\"\\\\()$#]+>$\"]"; // Users public static User USER1; @@ -281,7 +281,7 @@ public abstract class EntityResourceTest COLUMNS; @@ -1624,11 +1624,11 @@ public abstract class EntityResourceTest authHeaders) throws HttpResponseException { diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/analytics/WebAnalyticEventResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/analytics/WebAnalyticEventResourceTest.java index c7fc8198581..0cc7a6c319d 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/analytics/WebAnalyticEventResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/analytics/WebAnalyticEventResourceTest.java @@ -26,7 +26,6 @@ import org.openmetadata.schema.analytics.type.WebAnalyticEventType; import org.openmetadata.schema.api.tests.CreateWebAnalyticEvent; import org.openmetadata.schema.type.MetadataOperation; import org.openmetadata.service.Entity; -import org.openmetadata.service.OpenMetadataApplicationTest; import org.openmetadata.service.resources.EntityResourceTest; import org.openmetadata.service.util.ResultList; import org.openmetadata.service.util.TestUtils; @@ -174,22 +173,21 @@ public class WebAnalyticEventResourceTest extends EntityResourceTest authHeaders) + public void putWebAnalyticEventData(WebAnalyticEventData data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("analytics/webAnalyticEvent/collect"); + WebTarget target = getCollection().path("/collect"); TestUtils.put(target, data, OK, authHeaders); } - public static void deleteWebAnalyticEventData(Long timestamp, Map authHeaders) throws IOException { - String url = - String.format("analytics/webAnalyticEvent/%s/%s/collect", WebAnalyticEventType.PAGE_VIEW.value(), timestamp); - WebTarget target = OpenMetadataApplicationTest.getResource(url); + public void deleteWebAnalyticEventData(Long timestamp, Map authHeaders) throws IOException { + String url = String.format("/%s/%s/collect", WebAnalyticEventType.PAGE_VIEW.value(), timestamp); + WebTarget target = getCollection().path(url); TestUtils.delete(target, WebAnalyticEvent.class, authHeaders); } - public static ResultList getWebAnalyticEventData( + public ResultList getWebAnalyticEventData( String eventType, Long start, Long end, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("analytics/webAnalyticEvent/collect"); + WebTarget target = getCollection().path("/collect"); target = target.queryParam("startTs", start); target = target.queryParam("endTs", end); target = target.queryParam("eventType", eventType); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java index 527d3433a65..be903915765 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/databases/TableResourceTest.java @@ -122,7 +122,6 @@ import org.openmetadata.schema.type.TableType; import org.openmetadata.schema.type.TagLabel; import org.openmetadata.schema.type.TagLabel.LabelType; import org.openmetadata.service.Entity; -import org.openmetadata.service.OpenMetadataApplicationTest; import org.openmetadata.service.exception.CatalogExceptionMessage; import org.openmetadata.service.resources.EntityResourceTest; import org.openmetadata.service.resources.databases.TableResource.TableList; @@ -147,6 +146,7 @@ public class TableResourceTest extends EntityResourceTest { public TableResourceTest() { super(TABLE, Table.class, TableList.class, "tables", TableResource.FIELDS); + supportedNameCharacters = "_'- .()$"; } public void setupDatabaseSchemas(TestInfo test) throws IOException { @@ -1744,7 +1744,7 @@ public class TableResourceTest extends EntityResourceTest { } private void deleteAndCheckLocation(Table table) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource(String.format("tables/%s/location", table.getId())); + WebTarget target = getResource(table.getId()).path("/location"); TestUtils.delete(target, TestUtils.TEST_AUTH_HEADERS); checkLocationDeleted(table.getId(), TestUtils.TEST_AUTH_HEADERS); } @@ -1756,7 +1756,7 @@ public class TableResourceTest extends EntityResourceTest { public void addAndCheckLocation(Table table, UUID locationId, Status status, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource(String.format("tables/%s/location", table.getId())); + WebTarget target = getResource(table.getId()).path("/location"); TestUtils.put(target, locationId, status, authHeaders); // GET .../tables/{tableId} returns newly added location @@ -1901,95 +1901,90 @@ public class TableResourceTest extends EntityResourceTest { return createEntity(create, ADMIN_AUTH_HEADERS).withDatabase(database.getEntityReference()); } - public static Table putJoins(UUID tableId, TableJoins joins, Map authHeaders) - throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/joins"); + public Table putJoins(UUID tableId, TableJoins joins, Map authHeaders) throws HttpResponseException { + WebTarget target = getResource(tableId).path("/joins"); return TestUtils.put(target, joins, Table.class, OK, authHeaders); } - public static Table putSampleData(UUID tableId, TableData data, Map authHeaders) + public Table putSampleData(UUID tableId, TableData data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/sampleData"); + WebTarget target = getResource(tableId).path("/sampleData"); return TestUtils.put(target, data, Table.class, OK, authHeaders); } - public static Table getSampleData(UUID tableId, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/sampleData"); + public Table getSampleData(UUID tableId, Map authHeaders) throws HttpResponseException { + WebTarget target = getResource(tableId).path("/sampleData"); return TestUtils.get(target, Table.class, authHeaders); } - public static Table putTableProfilerConfig(UUID tableId, TableProfilerConfig data, Map authHeaders) + public Table putTableProfilerConfig(UUID tableId, TableProfilerConfig data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/tableProfilerConfig"); + WebTarget target = getResource(tableId).path("/tableProfilerConfig"); return TestUtils.put(target, data, Table.class, OK, authHeaders); } - public static Table deleteTableProfilerConfig(UUID tableId, Map authHeaders) - throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/tableProfilerConfig"); + public Table deleteTableProfilerConfig(UUID tableId, Map authHeaders) throws HttpResponseException { + WebTarget target = getResource(tableId).path("/tableProfilerConfig"); return TestUtils.delete(target, Table.class, authHeaders); } - public static Table getLatestTableProfile(String fqn, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + fqn + "/tableProfile/latest"); + public Table getLatestTableProfile(String fqn, Map authHeaders) throws HttpResponseException { + WebTarget target = getCollection().path("/" + fqn + "/tableProfile/latest"); return TestUtils.get(target, Table.class, authHeaders); } - public static Table putTableProfileData(UUID tableId, CreateTableProfile data, Map authHeaders) + public Table putTableProfileData(UUID tableId, CreateTableProfile data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/tableProfile"); + WebTarget target = getResource(tableId).path("/tableProfile"); return TestUtils.put(target, data, Table.class, OK, authHeaders); } - public static void deleteTableProfile(String fqn, String entityType, Long timestamp, Map authHeaders) + public void deleteTableProfile(String fqn, String entityType, Long timestamp, Map authHeaders) throws HttpResponseException { - WebTarget target = - OpenMetadataApplicationTest.getResource("tables/" + fqn + "/" + entityType + "/" + timestamp + "/profile"); + WebTarget target = getCollection().path("/" + fqn + "/" + entityType + "/" + timestamp + "/profile"); TestUtils.delete(target, authHeaders); } - public static ResultList getTableProfiles( + public ResultList getTableProfiles( String fqn, Long startTs, Long endTs, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + fqn + "/tableProfile"); + WebTarget target = getCollection().path("/" + fqn + "/tableProfile"); target = target.queryParam("startTs", startTs).queryParam("endTs", endTs); return TestUtils.get(target, TableResource.TableProfileList.class, authHeaders); } - public static ResultList getColumnProfiles( + public ResultList getColumnProfiles( String fqn, Long startTs, Long endTs, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + fqn + "/columnProfile"); + WebTarget target = getCollection().path("/" + fqn + "/columnProfile"); target = target.queryParam("startTs", startTs).queryParam("endTs", endTs); return TestUtils.get(target, TableResource.ColumnProfileList.class, authHeaders); } - public static Table putTableQueriesData(UUID tableId, SQLQuery data, Map authHeaders) + public Table putTableQueriesData(UUID tableId, SQLQuery data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/tableQuery"); + WebTarget target = getResource(tableId).path("/tableQuery"); return TestUtils.put(target, data, Table.class, OK, authHeaders); } - public static Table getTableQueriesData(UUID tableId, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/tableQuery"); + public Table getTableQueriesData(UUID tableId, Map authHeaders) throws HttpResponseException { + WebTarget target = getResource(tableId).path("/tableQuery"); return TestUtils.get(target, Table.class, authHeaders); } - public static Table putTableDataModel(UUID tableId, DataModel dataModel, Map authHeaders) + public Table putTableDataModel(UUID tableId, DataModel dataModel, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/dataModel"); + WebTarget target = getResource(tableId).path("/dataModel"); return TestUtils.put(target, dataModel, Table.class, OK, authHeaders); } - public static Table putCustomMetric(UUID tableId, CreateCustomMetric data, Map authHeaders) + public Table putCustomMetric(UUID tableId, CreateCustomMetric data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/customMetric"); + WebTarget target = getResource(tableId).path("/customMetric"); return TestUtils.put(target, data, Table.class, OK, authHeaders); } - public static Table deleteCustomMetric( - UUID tableId, String columnName, String metricName, Map authHeaders) + public Table deleteCustomMetric(UUID tableId, String columnName, String metricName, Map authHeaders) throws HttpResponseException { - WebTarget target = - OpenMetadataApplicationTest.getResource("tables/" + tableId + "/customMetric/" + columnName + "/" + metricName); + WebTarget target = getResource(tableId).path("/customMetric/" + columnName + "/" + metricName); return TestUtils.delete(target, Table.class, authHeaders); } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java index 1eec3c80059..9326dd4e2d7 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java @@ -49,7 +49,6 @@ import org.openmetadata.schema.type.ChangeDescription; import org.openmetadata.schema.type.Column; import org.openmetadata.schema.type.ColumnDataType; import org.openmetadata.service.Entity; -import org.openmetadata.service.OpenMetadataApplicationTest; import org.openmetadata.service.resources.EntityResourceTest; import org.openmetadata.service.resources.databases.TableResourceTest; import org.openmetadata.service.util.JsonUtils; @@ -410,9 +409,9 @@ public class TestCaseResourceTest extends EntityResourceTest authHeaders) + public void putTestCaseResult(String fqn, TestCaseResult data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("testCase/" + fqn + "/testCaseResult"); + WebTarget target = getCollection().path("/" + fqn + "/testCaseResult"); TestUtils.put(target, data, CREATED, authHeaders); } @@ -468,24 +467,24 @@ public class TestCaseResourceTest extends EntityResourceTest authHeaders) + public void deleteTestCaseResult(String fqn, Long timestamp, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("testCase/" + fqn + "/testCaseResult/" + timestamp); + WebTarget target = getCollection().path("/" + fqn + "/testCaseResult/" + timestamp); TestUtils.delete(target, authHeaders); } - public static ResultList getTestCaseResults( + public ResultList getTestCaseResults( String fqn, Long start, Long end, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("testCase/" + fqn + "/testCaseResult"); + WebTarget target = getCollection().path("/" + fqn + "/testCaseResult"); target = target.queryParam("startTs", start); target = target.queryParam("endTs", end); return TestUtils.get(target, TestCaseResource.TestCaseResultList.class, authHeaders); } - public static ResultList getTestCases( + public ResultList getTestCases( Integer limit, String fields, String link, Boolean includeAll, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("testCase"); + WebTarget target = getCollection(); target = limit != null ? target.queryParam("limit", limit) : target; target = target.queryParam("fields", fields); if (link != null) { @@ -497,10 +496,10 @@ public class TestCaseResourceTest extends EntityResourceTest getTestCases( + public ResultList getTestCases( Integer limit, String fields, TestSuite testSuite, Boolean includeAll, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("testCase"); + WebTarget target = getCollection(); target = limit != null ? target.queryParam("limit", limit) : target; target = target.queryParam("fields", fields); target = target.queryParam("testSuiteId", testSuite.getId()); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java index 1f01e650b2b..2c899c8c9f4 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java @@ -24,7 +24,6 @@ import org.openmetadata.schema.tests.TestCase; import org.openmetadata.schema.tests.TestSuite; import org.openmetadata.schema.type.EntityReference; import org.openmetadata.service.Entity; -import org.openmetadata.service.OpenMetadataApplicationTest; import org.openmetadata.service.resources.EntityResourceTest; import org.openmetadata.service.util.ResultList; import org.openmetadata.service.util.TestUtils; @@ -103,7 +102,7 @@ public class TestSuiteResourceTest extends EntityResourceTest getTestSuites(Integer limit, String fields, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("testSuite"); + WebTarget target = getResource("testSuite"); target = limit != null ? target.queryParam("limit", limit) : target; target = target.queryParam("fields", fields); return TestUtils.get(target, TestSuiteResource.TestSuiteList.class, authHeaders); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/feeds/FeedResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/feeds/FeedResourceTest.java index a384abf406d..0fe3adbfb62 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/feeds/FeedResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/feeds/FeedResourceTest.java @@ -191,7 +191,7 @@ public class FeedResourceTest extends OpenMetadataApplicationTest { // Create thread without addressed to entity in the request CreateThread create = create().withFrom(USER.getName()).withAbout("<>"); // Invalid EntityLink - String failureReason = "[about must match \"^<#E::\\w+::[\\w'\\- .&/:+\"\\\\]+>$\"]"; + String failureReason = "[about must match \"^<#E::\\w+::[\\w'\\- .&/:+\"\\\\()$#]+>$\"]"; assertResponseContains(() -> createThread(create, AUTH_HEADERS), BAD_REQUEST, failureReason); create.withAbout("<#E::>"); // Invalid EntityLink - missing entityType and entityId diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java index aed7af49f6e..74e124c99fc 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/glossary/GlossaryResourceTest.java @@ -190,7 +190,10 @@ public class GlossaryResourceTest extends EntityResourceTest tagLabels = toTagLabels(t1, t11, t12, t2, t21, t22); Column column = new Column().withName(C1).withDataType(ColumnDataType.INT).withTags(tagLabels); CreateTable createTable = - tableResourceTest.createRequest(getEntityName(test)).withTags(tagLabels).withColumns(listOf(column)); + tableResourceTest + .createRequest(tableResourceTest.getEntityName(test)) + .withTags(tagLabels) + .withColumns(listOf(column)); Table table = tableResourceTest.createEntity(createTable, ADMIN_AUTH_HEADERS); // @@ -247,7 +250,10 @@ public class GlossaryResourceTest extends EntityResourceTest tagLabels = toTagLabels(t1, t11, t111, t12, t121, t13, t131, t2, t21, t211, h1, h11, h111); Column column = new Column().withName(C1).withDataType(ColumnDataType.INT).withTags(tagLabels); CreateTable createTable = - tableResourceTest.createRequest(getEntityName(test)).withTags(tagLabels).withColumns(listOf(column)); + tableResourceTest + .createRequest(tableResourceTest.getEntityName(test)) + .withTags(tagLabels) + .withColumns(listOf(column)); Table table = tableResourceTest.createEntity(createTable, ADMIN_AUTH_HEADERS); Object[][] scenarios = { @@ -376,13 +382,13 @@ public class GlossaryResourceTest extends EntityResourceTest { verifyKpiResults(kpiResults, kpiResultList, 12); } - public static void putKpiResult(String fqn, KpiResult data, Map authHeaders) - throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("kpi/" + fqn + "/kpiResult"); + public void putKpiResult(String fqn, KpiResult data, Map authHeaders) throws HttpResponseException { + WebTarget target = getCollection().path("/" + fqn + "/kpiResult"); TestUtils.put(target, data, CREATED, authHeaders); } - public static ResultList getKpiResults(String fqn, Long start, Long end, Map authHeaders) + public ResultList getKpiResults(String fqn, Long start, Long end, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("kpi/" + fqn + "/kpiResult"); + WebTarget target = getCollection().path("/" + fqn + "/kpiResult"); target = target.queryParam("startTs", start); target = target.queryParam("endTs", end); return TestUtils.get(target, KpiResource.KpiResultList.class, authHeaders); diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java index 83bf6a9f880..c663ad0be80 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/locations/LocationResourceTest.java @@ -38,7 +38,6 @@ import org.openmetadata.schema.api.data.CreateLocation; import org.openmetadata.schema.entity.data.Location; import org.openmetadata.schema.type.EntityReference; import org.openmetadata.service.Entity; -import org.openmetadata.service.OpenMetadataApplicationTest; import org.openmetadata.service.resources.EntityResourceTest; import org.openmetadata.service.resources.locations.LocationResource.LocationList; import org.openmetadata.service.util.FullyQualifiedName; @@ -50,7 +49,8 @@ public class LocationResourceTest extends EntityResourceTest getAssociatedEntity(Location location) throws HttpResponseException { - WebTarget target = - OpenMetadataApplicationTest.getResource(String.format("locations/association/%s", location.getId())); + WebTarget target = getResource(String.format("locations/association/%s", location.getId())); return (List) TestUtils.get(target, List.class, ADMIN_AUTH_HEADERS); } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/metadata/TypeResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/metadata/TypeResourceTest.java index bc20942b738..14014847b61 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/metadata/TypeResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/metadata/TypeResourceTest.java @@ -60,8 +60,7 @@ public class TypeResourceTest extends EntityResourceTest { super(Entity.TYPE, Type.class, TypeList.class, "metadata/types", TypeResource.PROPERTIES); supportsEmptyDescription = false; supportsFieldsQueryParam = false; - // Special characters are not supported in the name - supportedNameCharacters = supportedNameCharacters.replaceAll("[ ':&/.]", ""); + supportedNameCharacters = "_"; // No other special characters allowed } public void setupTypes() throws HttpResponseException { diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/pipelines/PipelineResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/pipelines/PipelineResourceTest.java index a34f9671321..8d5eac7f41c 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/pipelines/PipelineResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/pipelines/PipelineResourceTest.java @@ -58,7 +58,6 @@ import org.openmetadata.schema.type.Status; import org.openmetadata.schema.type.StatusType; import org.openmetadata.schema.type.Task; import org.openmetadata.service.Entity; -import org.openmetadata.service.OpenMetadataApplicationTest; import org.openmetadata.service.resources.EntityResourceTest; import org.openmetadata.service.resources.pipelines.PipelineResource.PipelineList; import org.openmetadata.service.util.FullyQualifiedName; @@ -565,19 +564,19 @@ public class PipelineResourceTest extends EntityResourceTest authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("pipelines/" + fqn + "/status"); + WebTarget target = getResource("pipelines/" + fqn + "/status"); return TestUtils.put(target, data, Pipeline.class, OK, authHeaders); } public static Pipeline deletePipelineStatus(String fqn, Long timestamp, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("pipelines/" + fqn + "/status/" + timestamp); + WebTarget target = getResource("pipelines/" + fqn + "/status/" + timestamp); return TestUtils.delete(target, Pipeline.class, authHeaders); } public static ResultList getPipelineStatues( String fqn, Long startTs, Long endTs, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("pipelines/" + fqn + "/status"); + WebTarget target = getResource("pipelines/" + fqn + "/status"); target = target.queryParam("startTs", startTs).queryParam("endTs", endTs); return TestUtils.get(target, PipelineResource.PipelineStatusList.class, authHeaders); } 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 e0c698768a4..f29b8d4ec7f 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 @@ -122,7 +122,7 @@ public class UserResourceTest extends EntityResourceTest { public UserResourceTest() { super(Entity.USER, User.class, UserList.class, "users", UserResource.FIELDS); - supportedNameCharacters = supportedNameCharacters.replace(" ", ""); // Space not supported + supportedNameCharacters = "_-."; } public void setupUsers(TestInfo test) throws HttpResponseException { diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/topics/TopicResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/topics/TopicResourceTest.java index 715f5f68b24..80539e9c43b 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/topics/TopicResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/topics/TopicResourceTest.java @@ -54,7 +54,6 @@ import org.openmetadata.schema.type.TagLabel; import org.openmetadata.schema.type.topic.CleanupPolicy; import org.openmetadata.schema.type.topic.TopicSampleData; import org.openmetadata.service.Entity; -import org.openmetadata.service.OpenMetadataApplicationTest; import org.openmetadata.service.resources.EntityResourceTest; import org.openmetadata.service.resources.topics.TopicResource.TopicList; import org.openmetadata.service.util.JsonUtils; @@ -287,15 +286,14 @@ public class TopicResourceTest extends EntityResourceTest { return topic; } - public static Topic getTopic(UUID id, String fields, Map authHeaders) throws HttpResponseException { - WebTarget target = getResource("topics/" + id); + public Topic getTopic(UUID id, String fields, Map authHeaders) throws HttpResponseException { + WebTarget target = getResource(id); target = fields != null ? target.queryParam("fields", fields) : target; return TestUtils.get(target, Topic.class, authHeaders); } - public static Topic getTopicByName(String fqn, String fields, Map authHeaders) - throws HttpResponseException { - WebTarget target = getResource("topics/name/" + fqn); + public Topic getTopicByName(String fqn, String fields, Map authHeaders) throws HttpResponseException { + WebTarget target = getResourceByName(fqn); target = fields != null ? target.queryParam("fields", fields) : target; return TestUtils.get(target, Topic.class, authHeaders); } @@ -350,9 +348,9 @@ public class TopicResourceTest extends EntityResourceTest { } } - public static Topic putSampleData(UUID topicId, TopicSampleData data, Map authHeaders) + public Topic putSampleData(UUID topicId, TopicSampleData data, Map authHeaders) throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("topics/" + topicId + "/sampleData"); + WebTarget target = getResource(topicId).path("/sampleData"); return TestUtils.put(target, data, Topic.class, OK, authHeaders); } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/util/UtilResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/util/UtilResourceTest.java index 2712fbff9e5..541c3fef88f 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/util/UtilResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/util/UtilResourceTest.java @@ -58,12 +58,12 @@ public class UtilResourceTest extends OpenMetadataApplicationTest { } public static EntitiesCount getEntitiesCount() throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("util/entities/count"); + WebTarget target = getResource("util/entities/count"); return TestUtils.get(target, EntitiesCount.class, ADMIN_AUTH_HEADERS); } public static ServicesCount getServicesCount() throws HttpResponseException { - WebTarget target = OpenMetadataApplicationTest.getResource("util/services/count"); + WebTarget target = getResource("util/services/count"); return TestUtils.get(target, ServicesCount.class, ADMIN_AUTH_HEADERS); } diff --git a/openmetadata-spec/src/main/resources/json/schema/entity/data/table.json b/openmetadata-spec/src/main/resources/json/schema/entity/data/table.json index 3c700374510..23bbd240c3c 100644 --- a/openmetadata-spec/src/main/resources/json/schema/entity/data/table.json +++ b/openmetadata-spec/src/main/resources/json/schema/entity/data/table.json @@ -15,7 +15,7 @@ "type": "string", "minLength": 1, "maxLength": 128, - "pattern": "^[\\w'\\- ./]+$" + "pattern": "^[\\w'\\- ./()$]+$" }, "profileSampleType": { "description": "Type of Profile Sample (percentage or rows)", @@ -162,7 +162,7 @@ "columnName": { "description": "Local name (not fully qualified name) of the column. ColumnName is `-` when the column is not named in struct dataType. For example, BigQuery supports struct with unnamed fields.", "type": "string", - "pattern": "^[\\w'\\-\" .+]+$", + "pattern": "^[\\w'\\-\" .+#]+$", "minLength": 1, "maxLength": 128 }, diff --git a/openmetadata-spec/src/main/resources/json/schema/type/basic.json b/openmetadata-spec/src/main/resources/json/schema/type/basic.json index 665414e932a..bdbe6733987 100644 --- a/openmetadata-spec/src/main/resources/json/schema/type/basic.json +++ b/openmetadata-spec/src/main/resources/json/schema/type/basic.json @@ -88,7 +88,7 @@ "entityLink": { "description": "Link to an entity or field within an entity using this format `<#E::{entities}::{entityType}::{field}::{arrayFieldName}::{arrayFieldValue}`.", "type": "string", - "pattern": "^<#E::\\w+::[\\w'\\- .&/:+\"\\\\]+>$" + "pattern": "^<#E::\\w+::[\\w'\\- .&/:+\"\\\\()$#]+>$" }, "entityName": { "description": "Name that identifies a entity.",