msfabricpysdkcore 0.1.8__py3-none-any.whl → 0.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- msfabricpysdkcore/adminapi.py +178 -12
- msfabricpysdkcore/coreapi.py +1479 -99
- msfabricpysdkcore/item.py +45 -6
- msfabricpysdkcore/job_instance.py +2 -1
- msfabricpysdkcore/otheritems.py +159 -10
- msfabricpysdkcore/tests/__init__.py +0 -0
- msfabricpysdkcore/tests/test_admin_apis.py +174 -0
- msfabricpysdkcore/tests/test_connection.py +111 -0
- msfabricpysdkcore/tests/test_datapipelines.py +45 -0
- msfabricpysdkcore/tests/test_deployment_pipeline.py +63 -0
- msfabricpysdkcore/tests/test_domains.py +126 -0
- msfabricpysdkcore/tests/test_environments.py +114 -0
- msfabricpysdkcore/tests/test_evenhouses.py +56 -0
- msfabricpysdkcore/tests/test_evenstreams.py +52 -0
- msfabricpysdkcore/tests/test_external_data_shares.py +51 -0
- msfabricpysdkcore/tests/test_fabric_azure_client.py +80 -0
- msfabricpysdkcore/tests/test_gateways.py +99 -0
- msfabricpysdkcore/tests/test_git.py +66 -0
- msfabricpysdkcore/tests/test_graphqlapi.py +44 -0
- msfabricpysdkcore/tests/test_items.py +97 -0
- msfabricpysdkcore/tests/test_jobs.py +96 -0
- msfabricpysdkcore/tests/test_kql_dashboards.py +63 -0
- msfabricpysdkcore/tests/test_kql_queryset.py +64 -0
- msfabricpysdkcore/tests/test_kqldatabases.py +56 -0
- msfabricpysdkcore/tests/test_lakehouse.py +93 -0
- msfabricpysdkcore/tests/test_managed_private_endpoints.py +61 -0
- msfabricpysdkcore/tests/test_mirroreddatabases.py +80 -0
- msfabricpysdkcore/tests/test_ml_experiments.py +47 -0
- msfabricpysdkcore/tests/test_ml_models.py +47 -0
- msfabricpysdkcore/tests/test_mounted_adf.py +64 -0
- msfabricpysdkcore/tests/test_notebooks.py +57 -0
- msfabricpysdkcore/tests/test_one_lake_data_access_security.py +63 -0
- msfabricpysdkcore/tests/test_other_items.py +45 -0
- msfabricpysdkcore/tests/test_reflex.py +57 -0
- msfabricpysdkcore/tests/test_reports.py +56 -0
- msfabricpysdkcore/tests/test_semantic_model.py +56 -0
- msfabricpysdkcore/tests/test_shortcuts.py +60 -0
- msfabricpysdkcore/tests/test_spark.py +91 -0
- msfabricpysdkcore/tests/test_sparkjobdefinition.py +55 -0
- msfabricpysdkcore/tests/test_sqldatabases.py +45 -0
- msfabricpysdkcore/tests/test_warehouses.py +50 -0
- msfabricpysdkcore/tests/test_workspaces_capacities.py +159 -0
- msfabricpysdkcore/workspace.py +295 -16
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/METADATA +261 -16
- msfabricpysdkcore-0.2.2.dist-info/RECORD +65 -0
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/WHEEL +1 -1
- msfabricpysdkcore-0.1.8.dist-info/RECORD +0 -28
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/LICENSE +0 -0
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
def test_workspace_managed_private_endpoints(self):
|
17
|
+
|
18
|
+
fc = self.fc
|
19
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
20
|
+
|
21
|
+
mpes = fc.list_workspace_managed_private_endpoints(workspace_id='535910f6-abe1-499d-94ad-f698c28805fb')
|
22
|
+
|
23
|
+
if len(mpes) > 0:
|
24
|
+
|
25
|
+
for mpe in mpes:
|
26
|
+
status_code = fc.delete_workspace_managed_private_endpoint(workspace_id='535910f6-abe1-499d-94ad-f698c28805fb',
|
27
|
+
managed_private_endpoint_id=mpe["id"])
|
28
|
+
self.assertEqual(status_code, 200)
|
29
|
+
sleep(60)
|
30
|
+
|
31
|
+
mpe = fc.create_workspace_managed_private_endpoint(workspace_id='535910f6-abe1-499d-94ad-f698c28805fb',
|
32
|
+
name = f'testmpe{datetime_str}',
|
33
|
+
target_private_link_resource_id = '/subscriptions/c77cc8fc-43bb-4d44-bdc5-6e20511ed2a8/resourceGroups/fabricdemo/providers/Microsoft.Storage/storageAccounts/publicfabricdemo9039',
|
34
|
+
target_subresource_type = 'dfs',
|
35
|
+
request_message = 'testmessage')
|
36
|
+
|
37
|
+
mpes = fc.list_workspace_managed_private_endpoints(workspace_id='535910f6-abe1-499d-94ad-f698c28805fb')
|
38
|
+
|
39
|
+
self.assertIsNotNone(mpes)
|
40
|
+
self.assertGreater(len(mpes), 0)
|
41
|
+
|
42
|
+
mpe2 = fc.get_workspace_managed_private_endpoint(workspace_id='535910f6-abe1-499d-94ad-f698c28805fb',
|
43
|
+
managed_private_endpoint_id=mpe["id"])
|
44
|
+
|
45
|
+
self.assertEqual(mpe2["id"], mpe["id"])
|
46
|
+
|
47
|
+
self.assertIsNotNone(mpe2["connectionState"])
|
48
|
+
self.assertIn("targetPrivateLinkResourceId", mpe2)
|
49
|
+
self.assertEqual(mpe2["targetPrivateLinkResourceId"], "/subscriptions/c77cc8fc-43bb-4d44-bdc5-6e20511ed2a8/resourceGroups/fabricdemo/providers/Microsoft.Storage/storageAccounts/publicfabricdemo9039")
|
50
|
+
|
51
|
+
for _ in range(0, 20):
|
52
|
+
if mpe2["connectionState"]["status"] != "Pending":
|
53
|
+
sleep(30)
|
54
|
+
else:
|
55
|
+
status_code = fc.delete_workspace_managed_private_endpoint(workspace_id='535910f6-abe1-499d-94ad-f698c28805fb',
|
56
|
+
managed_private_endpoint_id=mpe["id"])
|
57
|
+
self.assertEqual(status_code, 200)
|
58
|
+
break
|
59
|
+
mpe2 = fc.get_workspace_managed_private_endpoint(workspace_id='535910f6-abe1-499d-94ad-f698c28805fb',
|
60
|
+
managed_private_endpoint_id=mpe["id"])
|
61
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
def test_mirrored_database(self):
|
17
|
+
|
18
|
+
fc = self.fc
|
19
|
+
workspace_id = '46425c13-5736-4285-972c-6d034020f3ff'
|
20
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
21
|
+
|
22
|
+
mirrored_db_name = "mirrored_db" + datetime_str
|
23
|
+
|
24
|
+
# mirrored_db_w_content = fc.get_mirrored_database(workspace_id, mirrored_database_name="dfsdemo")
|
25
|
+
|
26
|
+
# status = fc.get_mirroring_status(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
27
|
+
# self.assertIsNotNone(status)
|
28
|
+
# self.assertIn("status", status)
|
29
|
+
|
30
|
+
# status = status["status"]
|
31
|
+
|
32
|
+
# if status == 'Running':
|
33
|
+
# fc.stop_mirroring(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
34
|
+
# sleep(60)
|
35
|
+
# fc.start_mirroring(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
36
|
+
# else:
|
37
|
+
# fc.start_mirroring(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
38
|
+
# sleep(60)
|
39
|
+
# fc.stop_mirroring(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
40
|
+
|
41
|
+
# table_status = fc.get_tables_mirroring_status(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
42
|
+
|
43
|
+
# self.assertIsNotNone(table_status)
|
44
|
+
# self.assertIn("data", table_status)
|
45
|
+
# for _ in range(5):
|
46
|
+
# if len(table_status["data"]) > 0:
|
47
|
+
# break
|
48
|
+
# sleep(60)
|
49
|
+
# table_status = fc.get_tables_mirroring_status(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
50
|
+
# self.assertIn("sourceTableName", table_status["data"][0])
|
51
|
+
|
52
|
+
# fc.stop_mirroring(workspace_id=workspace_id, mirrored_database_id=mirrored_db_w_content.id)
|
53
|
+
|
54
|
+
# definition = fc.get_mirrored_database_definition(workspace_id, mirrored_db_w_content.id)
|
55
|
+
# self.assertIsNotNone(definition)
|
56
|
+
# self.assertIn("definition", definition)
|
57
|
+
# self.assertIn("parts", definition["definition"])
|
58
|
+
|
59
|
+
# mirrored_db = fc.create_mirrored_database(workspace_id, display_name=mirrored_db_name)
|
60
|
+
|
61
|
+
# mirrored_db_check = fc.get_mirrored_database(workspace_id, mirrored_database_id=mirrored_db.id)
|
62
|
+
# self.assertEqual(mirrored_db_check.display_name, mirrored_db_name)
|
63
|
+
# self.assertIsNotNone(mirrored_db_check.id)
|
64
|
+
# self.assertEqual(mirrored_db_check.id, mirrored_db_check.id)
|
65
|
+
|
66
|
+
# mirrored_dbs = fc.list_mirrored_databases(workspace_id)
|
67
|
+
# mirrored_db_names = [md.display_name for md in mirrored_dbs]
|
68
|
+
# self.assertGreater(len(mirrored_dbs), 0)
|
69
|
+
# self.assertIn(mirrored_db_name, mirrored_db_names)
|
70
|
+
|
71
|
+
# sleep(60)
|
72
|
+
|
73
|
+
# mirrored_db_2 = fc.update_mirrored_database(workspace_id, mirrored_db_check.id,
|
74
|
+
# display_name=f"u{mirrored_db_name}", return_item=True)
|
75
|
+
# mirrored_db_2 = fc.get_mirrored_database(workspace_id, mirrored_database_id=mirrored_db_2.id)
|
76
|
+
|
77
|
+
# self.assertEqual(mirrored_db_2.display_name, f"u{mirrored_db_name}")
|
78
|
+
|
79
|
+
# status_code = fc.delete_mirrored_database(workspace_id, mirrored_db_2.id)
|
80
|
+
# self.assertEqual(status_code, 200)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
|
21
|
+
def test_ml_experiments(self):
|
22
|
+
|
23
|
+
fc = self.fc
|
24
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
25
|
+
mlexperiment_name = "mlexp" + datetime.now().strftime("%Y%m%d%H%M%S")
|
26
|
+
mlexperiment_name2 = "mlexp2" + datetime.now().strftime("%Y%m%d%H%M%S")
|
27
|
+
|
28
|
+
ml_experiment = fc.create_ml_experiment(workspace_id, display_name=mlexperiment_name)
|
29
|
+
self.assertEqual(ml_experiment.display_name, mlexperiment_name)
|
30
|
+
|
31
|
+
ml_experiments = fc.list_ml_experiments(workspace_id)
|
32
|
+
ml_experiment_names = [mle.display_name for mle in ml_experiments]
|
33
|
+
self.assertGreater(len(ml_experiments), 0)
|
34
|
+
self.assertIn(mlexperiment_name, ml_experiment_names)
|
35
|
+
|
36
|
+
mle = fc.get_ml_experiment(workspace_id, ml_experiment_name=mlexperiment_name)
|
37
|
+
self.assertIsNotNone(mle.id)
|
38
|
+
self.assertEqual(mle.display_name, mlexperiment_name)
|
39
|
+
|
40
|
+
mle2 = fc.update_ml_experiment(workspace_id, mle.id, display_name=mlexperiment_name2, return_item=True)
|
41
|
+
|
42
|
+
mle = fc.get_ml_experiment(workspace_id, ml_experiment_id=mle.id)
|
43
|
+
self.assertEqual(mle.display_name, mlexperiment_name2)
|
44
|
+
self.assertEqual(mle.id, mle2.id)
|
45
|
+
|
46
|
+
status_code = fc.delete_ml_experiment(workspace_id, mle.id)
|
47
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
|
21
|
+
def test_ml_models(self):
|
22
|
+
|
23
|
+
fc = self.fc
|
24
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
25
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
26
|
+
model_name = "mlm" + datetime_str
|
27
|
+
|
28
|
+
ml_model = fc.create_ml_model(workspace_id, display_name=model_name)
|
29
|
+
self.assertEqual(ml_model.display_name, model_name)
|
30
|
+
|
31
|
+
ml_models = fc.list_ml_models(workspace_id)
|
32
|
+
ml_model_names = [ml.display_name for ml in ml_models]
|
33
|
+
self.assertGreater(len(ml_models), 0)
|
34
|
+
self.assertIn(model_name, ml_model_names)
|
35
|
+
|
36
|
+
mlm = fc.get_ml_model(workspace_id, ml_model_name=model_name)
|
37
|
+
self.assertIsNotNone(mlm.id)
|
38
|
+
self.assertEqual(mlm.display_name, model_name)
|
39
|
+
|
40
|
+
mlm2 = fc.update_ml_model(workspace_id=workspace_id,ml_model_id= mlm.id, description=model_name, return_item=True)
|
41
|
+
|
42
|
+
mlm = fc.get_ml_model(workspace_id, ml_model_id=mlm.id)
|
43
|
+
self.assertEqual(mlm.description, model_name)
|
44
|
+
self.assertEqual(mlm.id, mlm2.id)
|
45
|
+
|
46
|
+
status_code = fc.delete_ml_model(workspace_id, mlm.id)
|
47
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
# class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
class TestFabricClientCore(unittest.TestCase):
|
12
|
+
|
13
|
+
def __init__(self, *args, **kwargs):
|
14
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
15
|
+
#load_dotenv()
|
16
|
+
self.fc = FabricClientCore()
|
17
|
+
|
18
|
+
|
19
|
+
def test_mounted_adf(self):
|
20
|
+
|
21
|
+
fc = self.fc
|
22
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
23
|
+
|
24
|
+
definition = {'parts': [{'path': 'mountedDataFactory-content.json',
|
25
|
+
'payload': 'ewogICJkYXRhRmFjdG9yeVJlc291cmNlSWQiOiAiL3N1YnNjcmlwdGlvbnMvYzc3Y2M4ZmMtNDNiYi00ZDQ0LWJkYzUtNmUyMDUxMWVkMmE4L3Jlc291cmNlR3JvdXBzL2ZhYnJpY2RlbW8vcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9mYWN0b3JpZXMvZmFicmljYWRmMjAyNTAzMDYiCn0=',
|
26
|
+
'payloadType': 'InlineBase64'},
|
27
|
+
{'path': '.platform',
|
28
|
+
'payload': 'ewogICIkc2NoZW1hIjogImh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vanNvbi1zY2hlbWFzL2ZhYnJpYy9naXRJbnRlZ3JhdGlvbi9wbGF0Zm9ybVByb3BlcnRpZXMvMi4wLjAvc2NoZW1hLmpzb24iLAogICJtZXRhZGF0YSI6IHsKICAgICJ0eXBlIjogIk1vdW50ZWREYXRhRmFjdG9yeSIsCiAgICAiZGlzcGxheU5hbWUiOiAiZmFicmljYWRmMjAyNTAzMDYiCiAgfSwKICAiY29uZmlnIjogewogICAgInZlcnNpb24iOiAiMi4wIiwKICAgICJsb2dpY2FsSWQiOiAiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIgogIH0KfQ==',
|
29
|
+
'payloadType': 'InlineBase64'}]}
|
30
|
+
|
31
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
32
|
+
|
33
|
+
mounted_adf_name = "mounted_adf" + datetime_str
|
34
|
+
mounted_adf = fc.create_mounted_data_factory(workspace_id,
|
35
|
+
display_name=mounted_adf_name,
|
36
|
+
definition=definition)
|
37
|
+
|
38
|
+
self.assertEqual(mounted_adf.display_name, mounted_adf_name)
|
39
|
+
|
40
|
+
mounted_adfs = fc.list_mounted_data_factories(workspace_id)
|
41
|
+
mounted_adf_names = [adf.display_name for adf in mounted_adfs]
|
42
|
+
self.assertGreater(len(mounted_adfs), 0)
|
43
|
+
self.assertIn(mounted_adf_name, mounted_adf_names)
|
44
|
+
|
45
|
+
adf = fc.get_mounted_data_factory(workspace_id, mounted_data_factory_name=mounted_adf_name)
|
46
|
+
self.assertIsNotNone(adf.id)
|
47
|
+
self.assertEqual(adf.display_name, mounted_adf_name)
|
48
|
+
|
49
|
+
adf2 = fc.update_mounted_data_factory(workspace_id, adf.id, display_name=f"{mounted_adf_name}2", return_item=True)
|
50
|
+
|
51
|
+
adf = fc.get_mounted_data_factory(workspace_id, mounted_data_factory_id=adf.id)
|
52
|
+
self.assertEqual(adf.display_name, f"{mounted_adf_name}2")
|
53
|
+
self.assertEqual(adf.id, adf2.id)
|
54
|
+
|
55
|
+
response = fc.update_mounted_data_factory_definition(workspace_id, mounted_data_factory_id=adf.id, definition=adf.definition)
|
56
|
+
self.assertIn(response.status_code, [200, 202])
|
57
|
+
|
58
|
+
definition = fc.get_mounted_data_factory_definition(workspace_id, mounted_data_factory_id=adf.id)
|
59
|
+
self.assertIn("definition", definition)
|
60
|
+
self.assertIn("parts", definition["definition"])
|
61
|
+
self.assertGreaterEqual(len(definition["definition"]["parts"]), 2)
|
62
|
+
|
63
|
+
status_code = fc.delete_mounted_data_factory(workspace_id, adf.id)
|
64
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
|
21
|
+
def test_notebooks(self):
|
22
|
+
|
23
|
+
fc = self.fc
|
24
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
25
|
+
|
26
|
+
notebook_name = "notebook" + datetime.now().strftime("%Y%m%d%H%M%S")
|
27
|
+
|
28
|
+
notebook_w_content = fc.get_notebook(workspace_id, notebook_name="HelloWorld")
|
29
|
+
|
30
|
+
definition = fc.get_notebook_definition(workspace_id, notebook_w_content.id)
|
31
|
+
|
32
|
+
self.assertIsNotNone(definition)
|
33
|
+
self.assertIn("definition", definition)
|
34
|
+
definition = definition["definition"]
|
35
|
+
notebook = fc.create_notebook(workspace_id, definition=definition, display_name=notebook_name)
|
36
|
+
fc.update_notebook_definition(workspace_id, notebook.id, definition=definition)
|
37
|
+
notebook = fc.get_notebook(workspace_id, notebook_id=notebook.id)
|
38
|
+
self.assertEqual(notebook.display_name, notebook_name)
|
39
|
+
self.assertIsNotNone(notebook.definition)
|
40
|
+
|
41
|
+
notebooks = fc.list_notebooks(workspace_id)
|
42
|
+
notebook_names = [nb.display_name for nb in notebooks]
|
43
|
+
self.assertGreater(len(notebooks), 0)
|
44
|
+
self.assertIn(notebook_name, notebook_names)
|
45
|
+
|
46
|
+
nb = fc.get_notebook(workspace_id, notebook_name=notebook_name)
|
47
|
+
self.assertIsNotNone(nb.id)
|
48
|
+
self.assertEqual(nb.display_name, notebook_name)
|
49
|
+
|
50
|
+
nb2 = fc.update_notebook(workspace_id, notebook_id=nb.id, display_name=f"{notebook_name}2", return_item=True)
|
51
|
+
|
52
|
+
nb = fc.get_notebook(workspace_id, notebook_id=nb.id)
|
53
|
+
self.assertEqual(nb.display_name, f"{notebook_name}2")
|
54
|
+
self.assertEqual(nb.id, nb2.id)
|
55
|
+
|
56
|
+
status_code = fc.delete_notebook(workspace_id, nb.id)
|
57
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
4
|
+
|
5
|
+
load_dotenv()
|
6
|
+
|
7
|
+
class TestFabricClientCore(unittest.TestCase):
|
8
|
+
|
9
|
+
def __init__(self, *args, **kwargs):
|
10
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
11
|
+
self.fc = FabricClientCore()
|
12
|
+
|
13
|
+
def test_one_lake_data_access_security(self):
|
14
|
+
|
15
|
+
fc = self.fc
|
16
|
+
|
17
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
18
|
+
item_id = "148ef579-4a5d-4048-8a48-0a703c5e3a1a"
|
19
|
+
|
20
|
+
resp = fc.list_data_access_roles(workspace_id=workspace_id, item_id=item_id)
|
21
|
+
self.assertEqual(len(resp), 2)
|
22
|
+
|
23
|
+
roles = resp[0]
|
24
|
+
etag = resp[1]
|
25
|
+
|
26
|
+
role1 = roles[1]
|
27
|
+
|
28
|
+
self.assertIn('members', role1)
|
29
|
+
self.assertIn('fabricItemMembers', role1['members'])
|
30
|
+
self.assertGreater(len(role1['members']['fabricItemMembers']), 0)
|
31
|
+
self.assertIn('itemAccess', role1['members']['fabricItemMembers'][0])
|
32
|
+
|
33
|
+
item_access = role1["members"]["fabricItemMembers"][0]['itemAccess']
|
34
|
+
item_access_old = list(item_access)
|
35
|
+
if 'ReadAll' in item_access:
|
36
|
+
item_access = ['Read', 'Write', 'Execute']
|
37
|
+
else:
|
38
|
+
item_access.append('ReadAll')
|
39
|
+
|
40
|
+
role1["members"]["fabricItemMembers"][0]['itemAccess'] = item_access
|
41
|
+
roles[1] = role1
|
42
|
+
|
43
|
+
resp = fc.create_or_update_data_access_roles(workspace_id=workspace_id,
|
44
|
+
item_id=item_id,
|
45
|
+
data_access_roles=roles,
|
46
|
+
etag_match={"If-Match":etag})
|
47
|
+
|
48
|
+
|
49
|
+
resp = fc.list_data_access_roles(workspace_id=workspace_id, item_id=item_id)
|
50
|
+
self.assertEqual(len(resp), 2)
|
51
|
+
|
52
|
+
roles = resp[0]
|
53
|
+
etag = resp[1]
|
54
|
+
|
55
|
+
role1 = roles[1]
|
56
|
+
|
57
|
+
self.assertIn('members', role1)
|
58
|
+
self.assertIn('fabricItemMembers', role1['members'])
|
59
|
+
self.assertGreater(len(role1['members']['fabricItemMembers']), 0)
|
60
|
+
self.assertIn('itemAccess', role1['members']['fabricItemMembers'][0])
|
61
|
+
|
62
|
+
item_access = role1["members"]["fabricItemMembers"][0]['itemAccess']
|
63
|
+
self.assertNotEqual(item_access, item_access_old)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
def test_list_other_items(self):
|
21
|
+
|
22
|
+
fc = self.fc
|
23
|
+
|
24
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
25
|
+
|
26
|
+
list_dashboards = fc.list_dashboards(workspace_id)
|
27
|
+
dashboard_names = [dashboard.display_name for dashboard in list_dashboards]
|
28
|
+
self.assertGreater(len(list_dashboards), 0)
|
29
|
+
self.assertIn("dashboard1", dashboard_names)
|
30
|
+
|
31
|
+
# list_datamarts = fc.list_datamarts(workspace_id)
|
32
|
+
# datamart_names = [datamart.display_name for datamart in list_datamarts]
|
33
|
+
# self.assertGreater(len(list_datamarts), 0)
|
34
|
+
# self.assertIn("datamart1", datamart_names)
|
35
|
+
|
36
|
+
list_sql_endpoints = fc.list_sql_endpoints(workspace_id)
|
37
|
+
sqlendpoint_names = [sqlendpoint.display_name for sqlendpoint in list_sql_endpoints]
|
38
|
+
self.assertGreater(len(list_sql_endpoints), 0)
|
39
|
+
self.assertIn("lakelhousewlabels", sqlendpoint_names)
|
40
|
+
|
41
|
+
# list_mirrored_warehouses = fc.list_mirrored_warehouses(self.workspace_id)
|
42
|
+
# self.assertGreater(len(list_mirrored_warehouses), 0)
|
43
|
+
|
44
|
+
# list_paginated_reports = fc.list_paginated_reports(self.workspace_id)
|
45
|
+
# self.assertGreater(len(list_paginated_reports), 0)
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
# class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
class TestFabricClientCore(unittest.TestCase):
|
12
|
+
|
13
|
+
def __init__(self, *args, **kwargs):
|
14
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
15
|
+
#load_dotenv()
|
16
|
+
self.fc = FabricClientCore()
|
17
|
+
|
18
|
+
|
19
|
+
def test_reflex(self):
|
20
|
+
|
21
|
+
fc = self.fc
|
22
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
23
|
+
|
24
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
25
|
+
|
26
|
+
reflex_name = "reflex" + datetime_str
|
27
|
+
|
28
|
+
reflex = fc.create_reflex(workspace_id, display_name=reflex_name)
|
29
|
+
self.assertEqual(reflex.display_name, reflex_name)
|
30
|
+
|
31
|
+
reflexes = fc.list_reflexes(workspace_id)
|
32
|
+
reflex_names = [ref.display_name for ref in reflexes]
|
33
|
+
self.assertGreater(len(reflexes), 0)
|
34
|
+
self.assertIn(reflex_name, reflex_names)
|
35
|
+
|
36
|
+
|
37
|
+
ref = fc.get_reflex(workspace_id, reflex_name=reflex_name)
|
38
|
+
self.assertIsNotNone(ref.id)
|
39
|
+
self.assertEqual(ref.display_name, reflex_name)
|
40
|
+
|
41
|
+
ref2 = fc.update_reflex(workspace_id, ref.id, display_name=f"{reflex_name}2", return_item=True)
|
42
|
+
|
43
|
+
ref = fc.get_reflex(workspace_id, reflex_id=ref.id)
|
44
|
+
self.assertEqual(ref.display_name, f"{reflex_name}2")
|
45
|
+
self.assertEqual(ref.id, ref2.id)
|
46
|
+
|
47
|
+
response = fc.update_reflex_definition(workspace_id, reflex_id=ref.id, definition=ref.definition)
|
48
|
+
self.assertIn(response.status_code, [200, 202])
|
49
|
+
|
50
|
+
definition = fc.get_reflex_definition(workspace_id, reflex_id=ref.id)
|
51
|
+
self.assertIn("definition", definition)
|
52
|
+
self.assertIn("parts", definition["definition"])
|
53
|
+
self.assertGreaterEqual(len(definition["definition"]["parts"]), 2)
|
54
|
+
|
55
|
+
status_code = fc.delete_reflex(workspace_id, ref.id)
|
56
|
+
self.assertEqual(status_code, 200)
|
57
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
|
21
|
+
def test_reports(self):
|
22
|
+
|
23
|
+
fc = self.fc
|
24
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
25
|
+
|
26
|
+
report_name = "report1234"
|
27
|
+
|
28
|
+
report_w_content = fc.get_report(workspace_id, report_name="HelloWorldReport")
|
29
|
+
|
30
|
+
definition = fc.get_report_definition(workspace_id, report_w_content.id)
|
31
|
+
|
32
|
+
self.assertIsNotNone(definition)
|
33
|
+
self.assertIn("definition", definition)
|
34
|
+
definition = definition["definition"]
|
35
|
+
|
36
|
+
report = fc.create_report(workspace_id, display_name=report_name, definition=definition)
|
37
|
+
fc.update_report_definition(workspace_id, report.id, definition=definition)
|
38
|
+
report = fc.get_report(workspace_id, report_id=report.id)
|
39
|
+
self.assertEqual(report.display_name, report_name)
|
40
|
+
self.assertIsNotNone(report.definition)
|
41
|
+
|
42
|
+
reports = fc.list_reports(workspace_id)
|
43
|
+
report_names = [r.display_name for r in reports]
|
44
|
+
self.assertGreater(len(reports), 0)
|
45
|
+
self.assertIn(report_name, report_names)
|
46
|
+
|
47
|
+
r = fc.get_report(workspace_id, report_name=report_name)
|
48
|
+
self.assertIsNotNone(r.id)
|
49
|
+
self.assertEqual(r.display_name, report_name)
|
50
|
+
|
51
|
+
r2 = fc.update_report(workspace_id, r.id, display_name=f"{report_name}2", return_item=True)
|
52
|
+
self.assertEqual(r2.display_name, f"{report_name}2")
|
53
|
+
self.assertEqual(r2.id, r.id)
|
54
|
+
|
55
|
+
status_code = fc.delete_report(workspace_id, r.id)
|
56
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
def test_semantic_models(self):
|
21
|
+
|
22
|
+
fc = self.fc
|
23
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
24
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
25
|
+
semantic_model_name = "semanticmodel" + datetime_str
|
26
|
+
|
27
|
+
semantic_model_w_content = fc.get_semantic_model(workspace_id, semantic_model_name="Table")
|
28
|
+
|
29
|
+
definition = fc.get_semantic_model_definition(workspace_id, semantic_model_w_content.id)
|
30
|
+
|
31
|
+
self.assertIsNotNone(definition)
|
32
|
+
self.assertIn("definition", definition)
|
33
|
+
definition = definition["definition"]
|
34
|
+
semantic_model = fc.create_semantic_model(workspace_id, display_name=semantic_model_name, definition=definition)
|
35
|
+
fc.update_semantic_model_definition(workspace_id, semantic_model.id, definition=definition)
|
36
|
+
semantic_model = fc.get_semantic_model(workspace_id, semantic_model_id=semantic_model.id)
|
37
|
+
self.assertEqual(semantic_model.display_name, semantic_model_name)
|
38
|
+
self.assertIsNotNone(semantic_model.definition)
|
39
|
+
|
40
|
+
semantic_models = fc.list_semantic_models(workspace_id)
|
41
|
+
semantic_model_names = [sm.display_name for sm in semantic_models]
|
42
|
+
self.assertGreater(len(semantic_models), 0)
|
43
|
+
self.assertIn(semantic_model_name, semantic_model_names)
|
44
|
+
|
45
|
+
sm = fc.get_semantic_model(workspace_id, semantic_model_name=semantic_model_name)
|
46
|
+
self.assertIsNotNone(sm.id)
|
47
|
+
self.assertEqual(sm.display_name, semantic_model_name)
|
48
|
+
|
49
|
+
sm2 = fc.update_semantic_model(workspace_id, sm.id, display_name=f"u{semantic_model_name}", return_item=True)
|
50
|
+
|
51
|
+
sm2 = fc.get_semantic_model(workspace_id, semantic_model_id=sm2.id)
|
52
|
+
|
53
|
+
self.assertEqual(sm2.display_name, f"u{semantic_model_name}")
|
54
|
+
|
55
|
+
status_code = fc.delete_semantic_model(workspace_id, sm.id)
|
56
|
+
self.assertEqual(status_code, 200)
|