mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2026-01-06 04:26:57 +00:00
test case for DomoDatabase (#9630)
* test case for domo-database * test case for domo-database * Fix: pytest
This commit is contained in:
parent
aeb08a78b7
commit
27c68fb208
299
ingestion/tests/unit/topology/database/test_domodatabase.py
Normal file
299
ingestion/tests/unit/topology/database/test_domodatabase.py
Normal file
@ -0,0 +1,299 @@
|
||||
"""
|
||||
Test Domo Dashboard using the topology
|
||||
"""
|
||||
|
||||
from unittest import TestCase
|
||||
from unittest.mock import patch
|
||||
|
||||
from metadata.generated.schema.api.data.createDatabaseSchema import (
|
||||
CreateDatabaseSchemaRequest,
|
||||
)
|
||||
from metadata.generated.schema.api.data.createTable import CreateTableRequest
|
||||
from metadata.generated.schema.entity.data.database import Database
|
||||
from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
|
||||
from metadata.generated.schema.entity.data.table import Column, DataType, TableType
|
||||
from metadata.generated.schema.entity.services.databaseService import (
|
||||
DatabaseConnection,
|
||||
DatabaseService,
|
||||
DatabaseServiceType,
|
||||
)
|
||||
from metadata.generated.schema.metadataIngestion.workflow import (
|
||||
OpenMetadataWorkflowConfig,
|
||||
)
|
||||
from metadata.generated.schema.type.entityReference import EntityReference
|
||||
from metadata.ingestion.source.database.domodatabase.metadata import DomodatabaseSource
|
||||
|
||||
MOCK_DATABASE_SERVICE = DatabaseService(
|
||||
id="c3eb265f-5445-4ad3-ba5e-797d3a3071bb",
|
||||
name="domodashboard_source_test",
|
||||
connection=DatabaseConnection(),
|
||||
serviceType=DatabaseServiceType.DomoDatabase,
|
||||
)
|
||||
|
||||
MOCK_DATABASE = Database(
|
||||
id="a58b1856-729c-493b-bc87-6d2269b43ec0",
|
||||
name="do_it_all_with_default_config",
|
||||
fullyQualifiedName="domodatabase_source.do_it_all_with_default_config",
|
||||
displayName="do_it_all_with_default_config",
|
||||
description="",
|
||||
service=EntityReference(
|
||||
id="85811038-099a-11ed-861d-0242ac120002", type="databaseService"
|
||||
),
|
||||
)
|
||||
|
||||
MOCK_DATABASE_SCHEMA = DatabaseSchema(
|
||||
id="c3eb265f-5445-4ad3-ba5e-797d3a3071bb",
|
||||
name="do_it_all_with_default_schema",
|
||||
fullyQualifiedName="domodatabase_source.do_it_all_with_default_config.do_it_all_with_default_schema",
|
||||
service=EntityReference(id="c3eb265f-5445-4ad3-ba5e-797d3a3071bb", type="database"),
|
||||
database=EntityReference(
|
||||
id="a58b1856-729c-493b-bc87-6d2269b43ec0",
|
||||
type="database",
|
||||
),
|
||||
)
|
||||
|
||||
EXPTECTED_DATABASE_SCHEMA = [
|
||||
CreateDatabaseSchemaRequest(
|
||||
name="do_it_all_with_default_schema",
|
||||
displayName=None,
|
||||
description=None,
|
||||
owner=None,
|
||||
database=EntityReference(
|
||||
id="a58b1856-729c-493b-bc87-6d2269b43ec0",
|
||||
type="database",
|
||||
name=None,
|
||||
fullyQualifiedName=None,
|
||||
description=None,
|
||||
displayName=None,
|
||||
deleted=None,
|
||||
href=None,
|
||||
),
|
||||
)
|
||||
]
|
||||
|
||||
mock_domodatabase_config = {
|
||||
"source": {
|
||||
"type": "domodatabase",
|
||||
"serviceName": "test2",
|
||||
"serviceConnection": {
|
||||
"config": {
|
||||
"type": "DomoDatabase",
|
||||
"clientId": "00000",
|
||||
"secretToken": "abcdefg",
|
||||
"accessToken": "accessTpokem",
|
||||
"apiHost": "api.domo.com",
|
||||
"sandboxDomain": "https://domain.domo.com",
|
||||
}
|
||||
},
|
||||
"sourceConfig": {"config": {"type": "DatabaseMetadata"}},
|
||||
},
|
||||
"sink": {"type": "metadata-rest", "config": {}},
|
||||
"workflowConfig": {
|
||||
"openMetadataServerConfig": {
|
||||
"hostPort": "http://localhost:8585/api",
|
||||
"authProvider": "openmetadata",
|
||||
"securityConfig": {
|
||||
"jwtToken": "eyJraWQiOiJHYjM4OWEtOWY3Ni1nZGpzLWE5MmotMDI0MmJrOTQzNTYiLCJ0eXAiOiJKV1QiLCJhbGc"
|
||||
"iOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImlzQm90IjpmYWxzZSwiaXNzIjoib3Blbi1tZXRhZGF0YS5vcmciLCJpYXQiOjE"
|
||||
"2NjM5Mzg0NjIsImVtYWlsIjoiYWRtaW5Ab3Blbm1ldGFkYXRhLm9yZyJ9.tS8um_5DKu7HgzGBzS1VTA5uUjKWOCU0B_j08WXB"
|
||||
"iEC0mr0zNREkqVfwFDD-d24HlNEbrqioLsBuFRiwIWKc1m_ZlVQbG7P36RUxhuv2vbSp80FKyNM-Tj93FDzq91jsyNmsQhyNv_fN"
|
||||
"r3TXfzzSPjHt8Go0FMMP66weoKMgW2PbXlhVKwEuXUHyakLLzewm9UMeQaEiRzhiTMU3UkLXcKbYEJJvfNFcLwSl9W8JCO_l0Yj3u"
|
||||
"d-qt_nQYEZwqW6u5nfdQllN133iikV4fM5QZsMCnm8Rq1mvLR0y9bmJiD7fwM1tmJ791TUWqmKaTnP49U493VanKpUAfzIiOiIbhg"
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
MOCK_TABLE = {
|
||||
"id": "01bcd21a-6a0d-4560-93c3-ad99b5e9af4c",
|
||||
"name": "DataSet Input",
|
||||
"description": "this is a description for dataset input",
|
||||
"rows": 99,
|
||||
"columns": 10,
|
||||
"schema": {
|
||||
"columns": [
|
||||
{"type": "DOUBLE", "name": "amount"},
|
||||
{"type": "DOUBLE", "name": "bank_transfer_amount"},
|
||||
{"type": "DOUBLE", "name": "coupon_amount"},
|
||||
{"type": "DOUBLE", "name": "credit_card_amount"},
|
||||
]
|
||||
},
|
||||
"owner": {"id": 1027954122, "name": "Nihar Doshi"},
|
||||
"dataCurrentAt": "2022-10-18T05:30:06Z",
|
||||
"createdAt": "2022-10-17T05:52:21Z",
|
||||
"updatedAt": "2022-10-18T05:30:07Z",
|
||||
"pdpEnabled": False,
|
||||
"policies": [
|
||||
{
|
||||
"id": 17,
|
||||
"type": "open",
|
||||
"name": "All Rows",
|
||||
"filters": [],
|
||||
"users": [],
|
||||
"virtualUsers": [],
|
||||
"groups": [],
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
EXPTECTED_TABLE = [
|
||||
CreateTableRequest(
|
||||
name="DataSet Input",
|
||||
displayName="DataSet Input",
|
||||
description="this is a description for dataset input",
|
||||
tableType=TableType.Regular.value,
|
||||
columns=[
|
||||
Column(
|
||||
name="amount",
|
||||
displayName=None,
|
||||
dataType=DataType.DOUBLE.value,
|
||||
arrayDataType=None,
|
||||
dataLength=None,
|
||||
precision=None,
|
||||
scale=None,
|
||||
dataTypeDisplay=None,
|
||||
description="",
|
||||
fullyQualifiedName=None,
|
||||
tags=None,
|
||||
constraint=None,
|
||||
ordinalPosition=1,
|
||||
jsonSchema=None,
|
||||
children=None,
|
||||
customMetrics=None,
|
||||
profile=None,
|
||||
),
|
||||
Column(
|
||||
name="bank_transfer_amount",
|
||||
displayName=None,
|
||||
dataType=DataType.DOUBLE.value,
|
||||
arrayDataType=None,
|
||||
dataLength=None,
|
||||
precision=None,
|
||||
scale=None,
|
||||
dataTypeDisplay=None,
|
||||
description="",
|
||||
fullyQualifiedName=None,
|
||||
tags=None,
|
||||
constraint=None,
|
||||
ordinalPosition=2,
|
||||
jsonSchema=None,
|
||||
children=None,
|
||||
customMetrics=None,
|
||||
profile=None,
|
||||
),
|
||||
Column(
|
||||
name="coupon_amount",
|
||||
displayName=None,
|
||||
dataType=DataType.DOUBLE.value,
|
||||
arrayDataType=None,
|
||||
dataLength=None,
|
||||
precision=None,
|
||||
scale=None,
|
||||
dataTypeDisplay=None,
|
||||
description="",
|
||||
fullyQualifiedName=None,
|
||||
tags=None,
|
||||
constraint=None,
|
||||
ordinalPosition=3,
|
||||
jsonSchema=None,
|
||||
children=None,
|
||||
customMetrics=None,
|
||||
profile=None,
|
||||
),
|
||||
Column(
|
||||
name="credit_card_amount",
|
||||
displayName=None,
|
||||
dataType=DataType.DOUBLE.value,
|
||||
arrayDataType=None,
|
||||
dataLength=None,
|
||||
precision=None,
|
||||
scale=None,
|
||||
dataTypeDisplay=None,
|
||||
description="",
|
||||
fullyQualifiedName=None,
|
||||
tags=None,
|
||||
constraint=None,
|
||||
ordinalPosition=4,
|
||||
jsonSchema=None,
|
||||
children=None,
|
||||
customMetrics=None,
|
||||
profile=None,
|
||||
),
|
||||
],
|
||||
tableConstraints=None,
|
||||
tablePartition=None,
|
||||
tableProfilerConfig=None,
|
||||
owner=None,
|
||||
databaseSchema=EntityReference(
|
||||
id="c3eb265f-5445-4ad3-ba5e-797d3a3071bb",
|
||||
type="databaseSchema",
|
||||
name=None,
|
||||
fullyQualifiedName=None,
|
||||
description=None,
|
||||
displayName=None,
|
||||
deleted=None,
|
||||
href=None,
|
||||
),
|
||||
tags=None,
|
||||
viewDefinition=None,
|
||||
extension=None,
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
class DomoDatabaseUnitTest(TestCase):
|
||||
"""
|
||||
Implements the necessary methods to extract
|
||||
Domo Database Unit Test
|
||||
"""
|
||||
|
||||
@patch(
|
||||
"metadata.ingestion.source.database.database_service.DatabaseServiceSource.test_connection"
|
||||
)
|
||||
@patch("pydomo.Domo")
|
||||
def __init__(
|
||||
self,
|
||||
methodName,
|
||||
domo_client, # pylint: disable=unused-argument
|
||||
test_connection,
|
||||
) -> None:
|
||||
super().__init__(methodName)
|
||||
test_connection.return_value = False
|
||||
self.config = OpenMetadataWorkflowConfig.parse_obj(mock_domodatabase_config)
|
||||
self.domodatabase = DomodatabaseSource.create(
|
||||
mock_domodatabase_config["source"],
|
||||
self.config.workflowConfig.openMetadataServerConfig,
|
||||
)
|
||||
self.domodatabase.context.__dict__["database"] = MOCK_DATABASE
|
||||
self.domodatabase.context.__dict__["dashboard_service"] = MOCK_DATABASE_SERVICE
|
||||
self.domodatabase.context.__dict__["database_schema"] = MOCK_DATABASE_SCHEMA
|
||||
|
||||
def test_yield_schema(self):
|
||||
schema_list = []
|
||||
yield_schemas = self.domodatabase.yield_database_schema(
|
||||
schema_name=MOCK_DATABASE_SCHEMA.name
|
||||
)
|
||||
|
||||
for schema in yield_schemas:
|
||||
if isinstance(schema, CreateDatabaseSchemaRequest):
|
||||
schema_list.append(schema)
|
||||
|
||||
for _, (exptected, original) in enumerate(
|
||||
zip(EXPTECTED_DATABASE_SCHEMA, schema_list)
|
||||
):
|
||||
self.assertEqual(exptected, original)
|
||||
|
||||
def test_yield_table(self):
|
||||
table_list = []
|
||||
self.domodatabase.domo_client.ds_meta.return_value = MOCK_TABLE
|
||||
yield_tables = self.domodatabase.yield_table(
|
||||
("01bcd21a-6a0d-4560-93c3-ad99b5e9af4c", "Regular")
|
||||
)
|
||||
for table in yield_tables:
|
||||
if isinstance(table, CreateTableRequest):
|
||||
table_list.append(table)
|
||||
|
||||
for _, (expected, original) in enumerate(zip(EXPTECTED_TABLE, table_list)):
|
||||
self.assertEqual(expected, original)
|
||||
Loading…
x
Reference in New Issue
Block a user