Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

98 lines
3.5 KiB
Python
Raw Normal View History

"""Test default database ingestion (Druid)."""
import pytest
from playwright.sync_api import Page
from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipeline import (
PipelineState,
)
from ...configs.connectors.database.druid import DruidConnector
from ...configs.connectors.model import (
ConnectorIngestionTestConfig,
ConnectorTestConfig,
ConnectorValidationTestConfig,
IngestionFilterConfig,
IngestionTestConfig,
ValidationTestConfig,
)
from ...entity.database.common_assertions import (
assert_change_database_owner,
assert_pii_column_auto_tagging,
assert_profile_data,
assert_sample_data_ingestion,
)
@pytest.mark.parametrize(
"setUpClass",
[
{
"connector_obj": DruidConnector(
ConnectorTestConfig(
ingestion=ConnectorIngestionTestConfig(
metadata=IngestionTestConfig(
schema_=IngestionFilterConfig(includes=["druid"]),
), # type: ignore
profiler=IngestionTestConfig(
schema_=IngestionFilterConfig(includes=["druid"]),
), # type: ignore
),
validation=ConnectorValidationTestConfig(
profiler=ValidationTestConfig(
database="default", schema_="druid", table="inline_data"
) # type: ignore
),
)
)
}
],
indirect=True,
)
@pytest.mark.usefixtures("setUpClass")
class TestDruidConnector:
"""Druid connector test case"""
def test_pipelines_statuses(self):
"""check ingestion pipelines ran successfully"""
assert self.metadata_ingestion_status == PipelineState.success
# if the connector does not support profiler ingestion return None as status
assert self.profiler_ingestion_status in {PipelineState.success, None}
def test_change_database_owner(self, admin_page_context: Page):
"""test change database owner"""
assert_change_database_owner(admin_page_context, self.service_name)
def test_check_profile_data(self, admin_page_context: Page):
"""check profile data are visible"""
assert_profile_data(
admin_page_context,
self.service_name,
self.connector_obj.validation_config.profiler.database,
self.connector_obj.validation_config.profiler.schema_,
self.connector_obj.validation_config.profiler.table,
self.connector_obj,
)
def test_sample_data_ingestion(self, admin_page_context: Page):
"""test sample dta is ingested as expected for the table"""
assert_sample_data_ingestion(
admin_page_context,
self.service_name,
self.connector_obj.validation_config.profiler.database,
self.connector_obj.validation_config.profiler.schema_,
self.connector_obj.validation_config.profiler.table,
)
def test_pii_colum_auto_tagging(self, admin_page_context: Page):
"""check pii column auto tagging tagged as expected"""
assert_pii_column_auto_tagging(
admin_page_context,
self.service_name,
self.connector_obj.validation_config.profiler.database,
self.connector_obj.validation_config.profiler.schema_,
self.connector_obj.validation_config.profiler.table,
"cityName",
)