|
5 | 5 | from inspect import signature |
6 | 6 | from pathlib import Path |
7 | 7 | from re import escape |
| 8 | +from typing import List |
8 | 9 | from unittest.mock import create_autospec |
9 | 10 |
|
10 | 11 | import pytest |
| 12 | +from pydantic.v1 import parse_obj_as |
11 | 13 | from pydantic.v1.error_wrappers import ValidationError |
12 | 14 |
|
13 | 15 | from pyatlan.client.atlan import AtlanClient |
|
57 | 59 | Function, |
58 | 60 | GCSBucket, |
59 | 61 | GCSObject, |
| 62 | + IndistinctAsset, |
60 | 63 | KafkaConsumerGroup, |
61 | 64 | KafkaTopic, |
62 | 65 | Link, |
@@ -975,3 +978,93 @@ def test_tableau_upstream_fields_deserialization(test_data): |
975 | 978 | **{"typeName": "TableauDatasourceField", "attributes": test_data} |
976 | 979 | ) |
977 | 980 | assert tdf.upstream_tables == test_data["upstreamTables"] |
| 981 | + |
| 982 | + |
| 983 | +def test_indistict_asset_type_deserialization(): |
| 984 | + data = { |
| 985 | + "entities": [ |
| 986 | + { |
| 987 | + "typeName": "UnknownAsset1", |
| 988 | + "attributes": { |
| 989 | + "name": "Batman", |
| 990 | + "connectorName": "mssql", |
| 991 | + "ownerUsers": ["admin1"], |
| 992 | + "qualifiedName": "default/mssql/1709355572/Batman", |
| 993 | + "meanings": [ |
| 994 | + { |
| 995 | + "guid": "728d8571-a4fc-42ed-8d47-62377384570c", |
| 996 | + "typeName": "AtlasGlossaryTerm", |
| 997 | + "attributes": {"name": "test-term1"}, |
| 998 | + "uniqueAttributes": {"qualifiedName": "test-term1-qn"}, |
| 999 | + } |
| 1000 | + ], |
| 1001 | + }, |
| 1002 | + "guid": "558c5cc8-0b18-4b27-b7c7-0c1693c9d1e5", |
| 1003 | + "isIncomplete": False, |
| 1004 | + "status": "ACTIVE", |
| 1005 | + "createdBy": "service-account-apikey-123", |
| 1006 | + "updatedBy": "service-account-apikey-123", |
| 1007 | + "createTime": 1709355972663, |
| 1008 | + "updateTime": 1709356203915, |
| 1009 | + "version": 0, |
| 1010 | + "labels": [], |
| 1011 | + }, |
| 1012 | + { |
| 1013 | + "typeName": "UnknownAsset2", |
| 1014 | + "attributes": { |
| 1015 | + "name": "Superman", |
| 1016 | + "connectorName": "sqlserver", |
| 1017 | + "ownerUsers": ["admin2"], |
| 1018 | + "qualifiedName": "default/mssql/1709355572/Superman", |
| 1019 | + "meanings": [ |
| 1020 | + { |
| 1021 | + "guid": "828d8571-a4fc-42ed-8d47-62377384570c", |
| 1022 | + "typeName": "AtlasGlossaryTerm", |
| 1023 | + "attributes": {"name": "test-term21"}, |
| 1024 | + "uniqueAttributes": {"qualifiedName": "test-term21-qn"}, |
| 1025 | + }, |
| 1026 | + { |
| 1027 | + "guid": "928d8571-a4fc-42ed-8d47-62377384570c", |
| 1028 | + "typeName": "AtlasGlossaryTerm", |
| 1029 | + "attributes": {"name": "test-term22"}, |
| 1030 | + "uniqueAttributes": {"qualifiedName": "test-term22-qn"}, |
| 1031 | + }, |
| 1032 | + ], |
| 1033 | + }, |
| 1034 | + "guid": "458c5cc8-0b18-4b27-b7c7-0c1693c9d1e5", |
| 1035 | + "isIncomplete": False, |
| 1036 | + "status": "ACTIVE", |
| 1037 | + "createdBy": "service-account-apikey-123", |
| 1038 | + "updatedBy": "service-account-apikey-123", |
| 1039 | + "createTime": 1709355972663, |
| 1040 | + "updateTime": 1709356203915, |
| 1041 | + "version": 0, |
| 1042 | + "labels": [], |
| 1043 | + }, |
| 1044 | + ] |
| 1045 | + } |
| 1046 | + |
| 1047 | + assets = parse_obj_as(List[Asset], data["entities"]) |
| 1048 | + assert ( |
| 1049 | + len(assets) == 2 |
| 1050 | + and isinstance(assets[0], IndistinctAsset) |
| 1051 | + and isinstance(assets[1], IndistinctAsset) |
| 1052 | + ) |
| 1053 | + |
| 1054 | + assert assets[0].type_name == "UnknownAsset1" |
| 1055 | + assert assets[0].name == "Batman" |
| 1056 | + assert assets[0].connector_name == "mssql" |
| 1057 | + assert assets[0].owner_users == {"admin1"} |
| 1058 | + assert len(assets[0].assigned_terms) == 1 |
| 1059 | + assert assets[0].assigned_terms[0].name == "test-term1" |
| 1060 | + assert assets[0].assigned_terms[0].qualified_name == "test-term1-qn" |
| 1061 | + |
| 1062 | + assert assets[1].type_name == "UnknownAsset2" |
| 1063 | + assert assets[1].name == "Superman" |
| 1064 | + assert assets[1].connector_name == "sqlserver" |
| 1065 | + assert assets[1].owner_users == {"admin2"} |
| 1066 | + assert len(assets[1].assigned_terms) == 2 |
| 1067 | + assert assets[1].assigned_terms[0].name == "test-term21" |
| 1068 | + assert assets[1].assigned_terms[0].qualified_name == "test-term21-qn" |
| 1069 | + assert assets[1].assigned_terms[1].name == "test-term22" |
| 1070 | + assert assets[1].assigned_terms[1].qualified_name == "test-term22-qn" |
0 commit comments