datahub/metadata-ingestion/tests/unit/test_compare_metadata.py

168 lines
6.0 KiB
Python

import json
import pytest
from datahub.testing.compare_metadata_json import diff_metadata_json
from tests.test_helpers import mce_helpers
basic_1 = json.loads(
"""[
{
"auditHeader": null,
"proposedSnapshot": {
"com.linkedin.pegasus2avro.metadata.snapshot.DatasetSnapshot": {
"urn": "urn:li:dataset:(urn:li:dataPlatform:kafka,SampleKafkaDataset,PROD)",
"aspects": [
{
"com.linkedin.pegasus2avro.common.Ownership": {
"owners": [
{
"owner": "urn:li:corpuser:jdoe",
"type": "DATAOWNER",
"source": null
}
],
"lastModified": {
"time": 1581407189000,
"actor": "urn:li:corpuser:jdoe",
"impersonator": null
}
}
},
{
"com.linkedin.pegasus2avro.common.InstitutionalMemory": {
"elements": [
{
"url": "https://www.linkedin.com",
"description": "Sample doc",
"createStamp": {
"time": 1581407189000,
"actor": "urn:li:corpuser:jdoe",
"impersonator": null
}
}
]
}
}
]
}
},
"proposedDelta": null
}
]"""
)
# Timestamps changed from basic_1 but same otherwise.
basic_2 = json.loads(
"""[
{
"auditHeader": null,
"proposedSnapshot": {
"com.linkedin.pegasus2avro.metadata.snapshot.DatasetSnapshot": {
"urn": "urn:li:dataset:(urn:li:dataPlatform:kafka,SampleKafkaDataset,PROD)",
"aspects": [
{
"com.linkedin.pegasus2avro.common.Ownership": {
"owners": [
{
"owner": "urn:li:corpuser:jdoe",
"type": "DATAOWNER",
"source": null
}
],
"lastModified": {
"time": 1581407199000,
"actor": "urn:li:corpuser:jdoe",
"impersonator": null
}
}
},
{
"com.linkedin.pegasus2avro.common.InstitutionalMemory": {
"elements": [
{
"url": "https://www.linkedin.com",
"description": "Sample doc",
"createStamp": {
"time": 1581407389000,
"actor": "urn:li:corpuser:jdoe",
"impersonator": null
}
}
]
}
}
]
}
},
"proposedDelta": null
}
]"""
)
# Dataset owner changed from basic_2.
basic_3 = json.loads(
"""[
{
"auditHeader": null,
"proposedSnapshot": {
"com.linkedin.pegasus2avro.metadata.snapshot.DatasetSnapshot": {
"urn": "urn:li:dataset:(urn:li:dataPlatform:kafka,SampleKafkaDataset,PROD)",
"aspects": [
{
"com.linkedin.pegasus2avro.common.Ownership": {
"owners": [
{
"owner": "urn:li:corpuser:datahub",
"type": "DATAOWNER",
"source": null
}
],
"lastModified": {
"time": 1581407199000,
"actor": "urn:li:corpuser:jdoe",
"impersonator": null
}
}
},
{
"com.linkedin.pegasus2avro.common.InstitutionalMemory": {
"elements": [
{
"url": "https://www.linkedin.com",
"description": "Sample doc",
"createStamp": {
"time": 1581407389000,
"actor": "urn:li:corpuser:jdoe",
"impersonator": null
}
}
]
}
}
]
}
},
"proposedDelta": null
}
]"""
)
def test_basic_diff_same() -> None:
assert not diff_metadata_json(basic_1, basic_2, mce_helpers.IGNORE_PATH_TIMESTAMPS)
def test_basic_diff_only_owner_change() -> None:
with pytest.raises(AssertionError):
assert not diff_metadata_json(
basic_2, basic_3, mce_helpers.IGNORE_PATH_TIMESTAMPS
)
def test_basic_diff_owner_change() -> None:
with pytest.raises(AssertionError):
assert not diff_metadata_json(
basic_1, basic_3, mce_helpers.IGNORE_PATH_TIMESTAMPS
)