| 
									
										
										
										
											2021-12-01 12:46:28 +05:30
										 |  |  | #  Copyright 2021 Collate | 
					
						
							|  |  |  | #  Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  | #  you may not use this file except in compliance with the License. | 
					
						
							|  |  |  | #  You may obtain a copy of the License at | 
					
						
							|  |  |  | #  http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  | #  Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | #  distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | #  See the License for the specific language governing permissions and | 
					
						
							|  |  |  | #  limitations under the License. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | """
 | 
					
						
							|  |  |  | OpenMetadata high-level API endpoint test | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | from unittest import TestCase | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  | from metadata.generated.schema.api.data.createTopic import CreateTopicRequest | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | from metadata.generated.schema.api.services.createDatabaseService import ( | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |     CreateDatabaseServiceRequest, | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2023-10-10 07:04:04 +02:00
										 |  |  | from metadata.generated.schema.api.services.ingestionPipelines.createIngestionPipeline import ( | 
					
						
							|  |  |  |     CreateIngestionPipelineRequest, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  | from metadata.generated.schema.api.teams.createUser import CreateUserRequest | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | from metadata.generated.schema.entity.data.chart import Chart | 
					
						
							|  |  |  | from metadata.generated.schema.entity.data.dashboard import Dashboard | 
					
						
							|  |  |  | from metadata.generated.schema.entity.data.database import Database | 
					
						
							| 
									
										
										
										
											2022-04-07 14:52:50 +02:00
										 |  |  | from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | from metadata.generated.schema.entity.data.metrics import Metrics | 
					
						
							| 
									
										
										
										
											2021-11-20 17:26:45 +01:00
										 |  |  | from metadata.generated.schema.entity.data.mlmodel import MlModel | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | from metadata.generated.schema.entity.data.pipeline import Pipeline | 
					
						
							|  |  |  | from metadata.generated.schema.entity.data.report import Report | 
					
						
							|  |  |  | from metadata.generated.schema.entity.data.table import Table | 
					
						
							|  |  |  | from metadata.generated.schema.entity.data.topic import Topic | 
					
						
							| 
									
										
										
										
											2022-04-12 23:40:21 -07:00
										 |  |  | from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import ( | 
					
						
							|  |  |  |     OpenMetadataConnection, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | from metadata.generated.schema.entity.services.dashboardService import DashboardService | 
					
						
							|  |  |  | from metadata.generated.schema.entity.services.databaseService import DatabaseService | 
					
						
							| 
									
										
										
										
											2023-10-10 07:04:04 +02:00
										 |  |  | from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipeline import ( | 
					
						
							|  |  |  |     IngestionPipeline, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | from metadata.generated.schema.entity.services.messagingService import MessagingService | 
					
						
							|  |  |  | from metadata.generated.schema.entity.services.pipelineService import PipelineService | 
					
						
							|  |  |  | from metadata.generated.schema.entity.teams.user import User | 
					
						
							| 
									
										
										
										
											2022-09-26 16:19:47 +05:30
										 |  |  | from metadata.generated.schema.security.client.openMetadataJWTClientConfig import ( | 
					
						
							|  |  |  |     OpenMetadataJWTClientConfig, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  | from metadata.ingestion.ometa.ometa_api import OpenMetadata | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class OMetaEndpointTest(TestCase): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Make sure that we can infer the proper endpoints | 
					
						
							|  |  |  |     from the generated entity classes | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-26 16:19:47 +05:30
										 |  |  |     server_config = OpenMetadataConnection( | 
					
						
							|  |  |  |         hostPort="http://localhost:8585/api", | 
					
						
							|  |  |  |         authProvider="openmetadata", | 
					
						
							|  |  |  |         securityConfig=OpenMetadataJWTClientConfig( | 
					
						
							|  |  |  |             jwtToken="eyJraWQiOiJHYjM4OWEtOWY3Ni1nZGpzLWE5MmotMDI0MmJrOTQzNTYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImlzQm90IjpmYWxzZSwiaXNzIjoib3Blbi1tZXRhZGF0YS5vcmciLCJpYXQiOjE2NjM5Mzg0NjIsImVtYWlsIjoiYWRtaW5Ab3Blbm1ldGFkYXRhLm9yZyJ9.tS8um_5DKu7HgzGBzS1VTA5uUjKWOCU0B_j08WXBiEC0mr0zNREkqVfwFDD-d24HlNEbrqioLsBuFRiwIWKc1m_ZlVQbG7P36RUxhuv2vbSp80FKyNM-Tj93FDzq91jsyNmsQhyNv_fNr3TXfzzSPjHt8Go0FMMP66weoKMgW2PbXlhVKwEuXUHyakLLzewm9UMeQaEiRzhiTMU3UkLXcKbYEJJvfNFcLwSl9W8JCO_l0Yj3ud-qt_nQYEZwqW6u5nfdQllN133iikV4fM5QZsMCnm8Rq1mvLR0y9bmJiD7fwM1tmJ791TUWqmKaTnP49U493VanKpUAfzIiOiIbhg" | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2021-10-26 23:18:43 +02:00
										 |  |  |     metadata = OpenMetadata(server_config) | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_entities_suffix(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Pass Entities and test their suffix generation | 
					
						
							|  |  |  |         """
 | 
					
						
							| 
									
										
										
										
											2021-11-20 17:26:45 +01:00
										 |  |  |         # ML | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(MlModel), "/mlmodels") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  |         # Db | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(Database), "/databases") | 
					
						
							| 
									
										
										
										
											2022-04-07 14:52:50 +02:00
										 |  |  |         self.assertEqual(self.metadata.get_suffix(DatabaseSchema), "/databaseSchemas") | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  |         self.assertEqual(self.metadata.get_suffix(Table), "/tables") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Dashboards | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(Dashboard), "/dashboards") | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(Chart), "/charts") | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(Metrics), "/metrics") | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(Report), "/reports") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Pipelines | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(Pipeline), "/pipelines") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Topic | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(Topic), "/topics") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_services_suffix(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Pass Services and test their suffix generation | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         self.assertEqual( | 
					
						
							|  |  |  |             self.metadata.get_suffix(DashboardService), "/services/dashboardServices" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         self.assertEqual( | 
					
						
							|  |  |  |             self.metadata.get_suffix(DatabaseService), "/services/databaseServices" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         self.assertEqual( | 
					
						
							|  |  |  |             self.metadata.get_suffix(MessagingService), "/services/messagingServices" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         self.assertEqual( | 
					
						
							|  |  |  |             self.metadata.get_suffix(PipelineService), "/services/pipelineServices" | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_teams_suffix(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Pass Teams and test their suffix generation | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         self.assertEqual(self.metadata.get_suffix(User), "/users") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_get_entity_from_create(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Validate the mapping from CreateEntity to Entity | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |         entity = self.metadata.get_entity_from_create(CreateTopicRequest) | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  |         assert issubclass(entity, Topic) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |         entity = self.metadata.get_entity_from_create(CreateDatabaseServiceRequest) | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  |         assert issubclass(entity, DatabaseService) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 01:29:56 +01:00
										 |  |  |         entity = self.metadata.get_entity_from_create(CreateUserRequest) | 
					
						
							| 
									
										
										
										
											2021-10-21 23:51:38 +02:00
										 |  |  |         assert issubclass(entity, User) | 
					
						
							| 
									
										
										
										
											2023-10-10 07:04:04 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         entity = self.metadata.get_entity_from_create(CreateIngestionPipelineRequest) | 
					
						
							|  |  |  |         assert issubclass(entity, IngestionPipeline) |