mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 02:29:03 +00:00 
			
		
		
		
	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 <teddy.crepineau@gmail.com> Co-authored-by: sureshms <srini30005@gmail.com>
This commit is contained in:
		
							parent
							
								
									813d2c4fe6
								
							
						
					
					
						commit
						8b45b639fd
					
				| @ -181,14 +181,14 @@ public abstract class EntityResourceTest<T extends EntityInterface, K extends Cr | ||||
|   protected boolean supportsSoftDelete; | ||||
|   protected boolean supportsFieldsQueryParam = true; | ||||
|   protected boolean supportsEmptyDescription = true; | ||||
|   protected String supportedNameCharacters = ".' _"; // Special characters supported in the entity name | ||||
|   protected String supportedNameCharacters = "_'-.&"; // Special characters supported in the entity name | ||||
|   protected final boolean supportsCustomExtension; | ||||
| 
 | ||||
|   public static final String DATA_STEWARD_ROLE_NAME = "DataSteward"; | ||||
|   public static final String DATA_CONSUMER_ROLE_NAME = "DataConsumer"; | ||||
| 
 | ||||
|   public static final String ENTITY_LINK_MATCH_ERROR = | ||||
|       "[entityLink must match \"^<#E::\\w+::[\\w'\\- .&/:+\"\\\\]+>$\"]"; | ||||
|       "[entityLink must match \"^<#E::\\w+::[\\w'\\- .&/:+\"\\\\()$#]+>$\"]"; | ||||
| 
 | ||||
|   // Users | ||||
|   public static User USER1; | ||||
| @ -281,7 +281,7 @@ public abstract class EntityResourceTest<T extends EntityInterface, K extends Cr | ||||
| 
 | ||||
|   public static KpiTarget KPI_TARGET; | ||||
| 
 | ||||
|   public static final String C1 = "c'_+ 1"; | ||||
|   public static final String C1 = "c'_+# 1"; | ||||
|   public static final String C2 = "c2"; | ||||
|   public static final String C3 = "\"c.3\""; | ||||
|   public static List<Column> COLUMNS; | ||||
| @ -1624,11 +1624,11 @@ public abstract class EntityResourceTest<T extends EntityInterface, K extends Cr | ||||
|   } | ||||
| 
 | ||||
|   protected final WebTarget getFollowersCollection(UUID id) { | ||||
|     return getResource(collectionName + "/" + id + "/followers"); | ||||
|     return getResource(id).path("followers"); | ||||
|   } | ||||
| 
 | ||||
|   protected final WebTarget getFollowerResource(UUID id, UUID userId) { | ||||
|     return getResource(collectionName + "/" + id + "/followers/" + userId); | ||||
|     return getFollowersCollection(id).path("/" + userId); | ||||
|   } | ||||
| 
 | ||||
|   protected final T getEntity(UUID id, Map<String, String> authHeaders) throws HttpResponseException { | ||||
|  | ||||
| @ -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<WebAnalytic | ||||
|   @Override | ||||
|   public void assertFieldChange(String fieldName, Object expected, Object actual) {} | ||||
| 
 | ||||
|   public static void putWebAnalyticEventData(WebAnalyticEventData data, Map<String, String> authHeaders) | ||||
|   public void putWebAnalyticEventData(WebAnalyticEventData data, Map<String, String> 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<String, String> 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<String, String> 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<WebAnalyticEventData> getWebAnalyticEventData( | ||||
|   public ResultList<WebAnalyticEventData> getWebAnalyticEventData( | ||||
|       String eventType, Long start, Long end, Map<String, String> 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); | ||||
|  | ||||
| @ -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<Table, CreateTable> { | ||||
| 
 | ||||
|   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<Table, CreateTable> { | ||||
|   } | ||||
| 
 | ||||
|   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<Table, CreateTable> { | ||||
| 
 | ||||
|   public void addAndCheckLocation(Table table, UUID locationId, Status status, Map<String, String> 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<Table, CreateTable> { | ||||
|     return createEntity(create, ADMIN_AUTH_HEADERS).withDatabase(database.getEntityReference()); | ||||
|   } | ||||
| 
 | ||||
|   public static Table putJoins(UUID tableId, TableJoins joins, Map<String, String> authHeaders) | ||||
|       throws HttpResponseException { | ||||
|     WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/joins"); | ||||
|   public Table putJoins(UUID tableId, TableJoins joins, Map<String, String> 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<String, String> authHeaders) | ||||
|   public Table putSampleData(UUID tableId, TableData data, Map<String, String> 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<String, String> authHeaders) throws HttpResponseException { | ||||
|     WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/sampleData"); | ||||
|   public Table getSampleData(UUID tableId, Map<String, String> 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<String, String> authHeaders) | ||||
|   public Table putTableProfilerConfig(UUID tableId, TableProfilerConfig data, Map<String, String> 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<String, String> authHeaders) | ||||
|       throws HttpResponseException { | ||||
|     WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/tableProfilerConfig"); | ||||
|   public Table deleteTableProfilerConfig(UUID tableId, Map<String, String> authHeaders) throws HttpResponseException { | ||||
|     WebTarget target = getResource(tableId).path("/tableProfilerConfig"); | ||||
|     return TestUtils.delete(target, Table.class, authHeaders); | ||||
|   } | ||||
| 
 | ||||
|   public static Table getLatestTableProfile(String fqn, Map<String, String> authHeaders) throws HttpResponseException { | ||||
|     WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + fqn + "/tableProfile/latest"); | ||||
|   public Table getLatestTableProfile(String fqn, Map<String, String> 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<String, String> authHeaders) | ||||
|   public Table putTableProfileData(UUID tableId, CreateTableProfile data, Map<String, String> 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<String, String> authHeaders) | ||||
|   public void deleteTableProfile(String fqn, String entityType, Long timestamp, Map<String, String> 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<TableProfile> getTableProfiles( | ||||
|   public ResultList<TableProfile> getTableProfiles( | ||||
|       String fqn, Long startTs, Long endTs, Map<String, String> 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<ColumnProfile> getColumnProfiles( | ||||
|   public ResultList<ColumnProfile> getColumnProfiles( | ||||
|       String fqn, Long startTs, Long endTs, Map<String, String> 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<String, String> authHeaders) | ||||
|   public Table putTableQueriesData(UUID tableId, SQLQuery data, Map<String, String> 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<String, String> authHeaders) throws HttpResponseException { | ||||
|     WebTarget target = OpenMetadataApplicationTest.getResource("tables/" + tableId + "/tableQuery"); | ||||
|   public Table getTableQueriesData(UUID tableId, Map<String, String> 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<String, String> authHeaders) | ||||
|   public Table putTableDataModel(UUID tableId, DataModel dataModel, Map<String, String> 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<String, String> authHeaders) | ||||
|   public Table putCustomMetric(UUID tableId, CreateCustomMetric data, Map<String, String> 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<String, String> authHeaders) | ||||
|   public Table deleteCustomMetric(UUID tableId, String columnName, String metricName, Map<String, String> 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); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -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<TestCase, CreateTes | ||||
|     verifyTestCases(testCaseList, expectedTestCaseList, 12); | ||||
|   } | ||||
| 
 | ||||
|   public static void putTestCaseResult(String fqn, TestCaseResult data, Map<String, String> authHeaders) | ||||
|   public void putTestCaseResult(String fqn, TestCaseResult data, Map<String, String> 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<TestCase, CreateTes | ||||
|         permissionNotAllowed(TEST_USER_NAME, List.of(EDIT_TESTS))); | ||||
|   } | ||||
| 
 | ||||
|   public static void deleteTestCaseResult(String fqn, Long timestamp, Map<String, String> authHeaders) | ||||
|   public void deleteTestCaseResult(String fqn, Long timestamp, Map<String, String> 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<TestCaseResult> getTestCaseResults( | ||||
|   public ResultList<TestCaseResult> getTestCaseResults( | ||||
|       String fqn, Long start, Long end, Map<String, String> 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<TestCase> getTestCases( | ||||
|   public ResultList<TestCase> getTestCases( | ||||
|       Integer limit, String fields, String link, Boolean includeAll, Map<String, String> 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<TestCase, CreateTes | ||||
|     return TestUtils.get(target, TestCaseResource.TestCaseList.class, authHeaders); | ||||
|   } | ||||
| 
 | ||||
|   public static ResultList<TestCase> getTestCases( | ||||
|   public ResultList<TestCase> getTestCases( | ||||
|       Integer limit, String fields, TestSuite testSuite, Boolean includeAll, Map<String, String> 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()); | ||||
|  | ||||
| @ -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<TestSuite, CreateT | ||||
| 
 | ||||
|   public static ResultList<TestSuite> getTestSuites(Integer limit, String fields, Map<String, String> 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); | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -190,7 +190,10 @@ public class GlossaryResourceTest extends EntityResourceTest<Glossary, CreateGlo | ||||
|     List<TagLabel> 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<Glossary, CreateGlo | ||||
|     List<TagLabel> 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<Glossary, CreateGlo | ||||
|   } | ||||
| 
 | ||||
|   private CsvImportResult importCsv(String glossaryName, String csv, boolean dryRun) throws HttpResponseException { | ||||
|     WebTarget target = getResourceByName(glossaryName + "/import"); | ||||
|     WebTarget target = getResourceByName(glossaryName).path("/import"); | ||||
|     target = !dryRun ? target.queryParam("dryRun", false) : target; | ||||
|     return TestUtils.putCsv(target, csv, CsvImportResult.class, Status.OK, ADMIN_AUTH_HEADERS); | ||||
|   } | ||||
| 
 | ||||
|   private String exportCsv(String glossaryName) throws HttpResponseException { | ||||
|     WebTarget target = getResourceByName(glossaryName + "/export"); | ||||
|     WebTarget target = getResourceByName(glossaryName).path("/export"); | ||||
|     return TestUtils.get(target, String.class, ADMIN_AUTH_HEADERS); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -195,7 +195,8 @@ public class GlossaryTermResourceTest extends EntityResourceTest<GlossaryTerm, C | ||||
| 
 | ||||
|     // Apply each of the tag to a table | ||||
|     TableResourceTest tableResourceTest = new TableResourceTest(); | ||||
|     CreateTable createTable = tableResourceTest.createRequest(getEntityName(test)).withTags(toTagLabels(a, aa, aaa)); | ||||
|     CreateTable createTable = | ||||
|         tableResourceTest.createRequest(tableResourceTest.getEntityName(test)).withTags(toTagLabels(a, aa, aaa)); | ||||
|     tableResourceTest.createEntity(createTable, ADMIN_AUTH_HEADERS); | ||||
| 
 | ||||
|     // Ensure prefix based tagLabel doesn't double count due too common prefix | ||||
|  | ||||
| @ -38,7 +38,6 @@ import org.openmetadata.schema.type.ChangeDescription; | ||||
| import org.openmetadata.schema.type.DataInsightChartDataType; | ||||
| import org.openmetadata.schema.type.DataReportIndex; | ||||
| import org.openmetadata.service.Entity; | ||||
| import org.openmetadata.service.OpenMetadataApplicationTest; | ||||
| import org.openmetadata.service.resources.EntityResourceTest; | ||||
| import org.openmetadata.service.resources.dataInsight.DataInsightResourceTest; | ||||
| import org.openmetadata.service.util.ResultList; | ||||
| @ -188,15 +187,14 @@ public class KpiResourceTest extends EntityResourceTest<Kpi, CreateKpiRequest> { | ||||
|     verifyKpiResults(kpiResults, kpiResultList, 12); | ||||
|   } | ||||
| 
 | ||||
|   public static void putKpiResult(String fqn, KpiResult data, Map<String, String> authHeaders) | ||||
|       throws HttpResponseException { | ||||
|     WebTarget target = OpenMetadataApplicationTest.getResource("kpi/" + fqn + "/kpiResult"); | ||||
|   public void putKpiResult(String fqn, KpiResult data, Map<String, String> authHeaders) throws HttpResponseException { | ||||
|     WebTarget target = getCollection().path("/" + fqn + "/kpiResult"); | ||||
|     TestUtils.put(target, data, CREATED, authHeaders); | ||||
|   } | ||||
| 
 | ||||
|   public static ResultList<KpiResult> getKpiResults(String fqn, Long start, Long end, Map<String, String> authHeaders) | ||||
|   public ResultList<KpiResult> getKpiResults(String fqn, Long start, Long end, Map<String, String> 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); | ||||
|  | ||||
| @ -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<Location, CreateLoc | ||||
|   public LocationResourceTest() { | ||||
|     super(Entity.LOCATION, Location.class, LocationList.class, "locations", LocationResource.FIELDS); | ||||
|     // TODO quoted location is not allowed by the Location listPrefix APIs | ||||
|     supportedNameCharacters = supportedNameCharacters.replaceAll("[ .]", ""); // Space not supported | ||||
|     // supportedNameCharacters = "_'-."; | ||||
|     supportedNameCharacters = supportedNameCharacters.replaceAll("[ &.]", ""); // Space not supported | ||||
|   } | ||||
| 
 | ||||
|   @Override | ||||
| @ -100,8 +100,7 @@ public class LocationResourceTest extends EntityResourceTest<Location, CreateLoc | ||||
|   } | ||||
| 
 | ||||
|   private List<EntityReference> 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<EntityReference>) TestUtils.get(target, List.class, ADMIN_AUTH_HEADERS); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -60,8 +60,7 @@ public class TypeResourceTest extends EntityResourceTest<Type, CreateType> { | ||||
|     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 { | ||||
|  | ||||
| @ -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<Pipeline, CreatePip | ||||
|   // Prepare Pipeline status endpoint for PUT | ||||
|   public static Pipeline putPipelineStatusData(String fqn, PipelineStatus data, Map<String, String> 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<String, String> 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<PipelineStatus> getPipelineStatues( | ||||
|       String fqn, Long startTs, Long endTs, Map<String, String> 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); | ||||
|   } | ||||
|  | ||||
| @ -122,7 +122,7 @@ public class UserResourceTest extends EntityResourceTest<User, CreateUser> { | ||||
| 
 | ||||
|   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 { | ||||
|  | ||||
| @ -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<Topic, CreateTopic> { | ||||
|     return topic; | ||||
|   } | ||||
| 
 | ||||
|   public static Topic getTopic(UUID id, String fields, Map<String, String> authHeaders) throws HttpResponseException { | ||||
|     WebTarget target = getResource("topics/" + id); | ||||
|   public Topic getTopic(UUID id, String fields, Map<String, String> 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<String, String> authHeaders) | ||||
|       throws HttpResponseException { | ||||
|     WebTarget target = getResource("topics/name/" + fqn); | ||||
|   public Topic getTopicByName(String fqn, String fields, Map<String, String> 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<Topic, CreateTopic> { | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   public static Topic putSampleData(UUID topicId, TopicSampleData data, Map<String, String> authHeaders) | ||||
|   public Topic putSampleData(UUID topicId, TopicSampleData data, Map<String, String> 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); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -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); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|     }, | ||||
|  | ||||
| @ -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.", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Sriharsha Chintalapani
						Sriharsha Chintalapani