Skip to content

Commit 81f80ca

Browse files
authored
chore: pytestify test_database (#1655)
Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
1 parent 4becca6 commit 81f80ca

File tree

1 file changed

+108
-109
lines changed

1 file changed

+108
-109
lines changed

test/test_database.py

Lines changed: 108 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,113 +1,112 @@
1-
import unittest
1+
from pathlib import Path
22

3+
import pytest
34
import requests_mock
45

56
import tableauserverclient as TSC
6-
from ._utils import read_xml_asset, asset
7-
8-
GET_XML = "database_get.xml"
9-
POPULATE_PERMISSIONS_XML = "database_populate_permissions.xml"
10-
UPDATE_XML = "database_update.xml"
11-
GET_DQW_BY_CONTENT = "dqw_by_content_type.xml"
12-
13-
14-
class DatabaseTests(unittest.TestCase):
15-
def setUp(self):
16-
self.server = TSC.Server("http://test", False)
17-
# Fake signin
18-
self.server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
19-
self.server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
20-
self.server.version = "3.5"
21-
22-
self.baseurl = self.server.databases.baseurl
23-
24-
def test_get(self):
25-
response_xml = read_xml_asset(GET_XML)
26-
with requests_mock.mock() as m:
27-
m.get(self.baseurl, text=response_xml)
28-
all_databases, pagination_item = self.server.databases.get()
29-
30-
self.assertEqual(5, pagination_item.total_available)
31-
self.assertEqual("5ea59b45-e497-4827-8809-bfe213236f75", all_databases[0].id)
32-
self.assertEqual("hyper", all_databases[0].connection_type)
33-
self.assertEqual("hyper_0.hyper", all_databases[0].name)
34-
35-
self.assertEqual("23591f2c-4802-4d6a-9e28-574a8ea9bc4c", all_databases[1].id)
36-
self.assertEqual("sqlserver", all_databases[1].connection_type)
37-
self.assertEqual("testv1", all_databases[1].name)
38-
self.assertEqual("9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0", all_databases[1].contact_id)
39-
self.assertEqual(True, all_databases[1].certified)
40-
41-
def test_update(self):
42-
response_xml = read_xml_asset(UPDATE_XML)
43-
with requests_mock.mock() as m:
44-
m.put(self.baseurl + "/23591f2c-4802-4d6a-9e28-574a8ea9bc4c", text=response_xml)
45-
single_database = TSC.DatabaseItem("test")
46-
single_database.contact_id = "9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0"
47-
single_database._id = "23591f2c-4802-4d6a-9e28-574a8ea9bc4c"
48-
single_database.certified = True
49-
single_database.certification_note = "Test"
50-
single_database = self.server.databases.update(single_database)
51-
52-
self.assertEqual("23591f2c-4802-4d6a-9e28-574a8ea9bc4c", single_database.id)
53-
self.assertEqual("9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0", single_database.contact_id)
54-
self.assertEqual(True, single_database.certified)
55-
self.assertEqual("Test", single_database.certification_note)
56-
57-
def test_populate_permissions(self):
58-
with open(asset(POPULATE_PERMISSIONS_XML), "rb") as f:
59-
response_xml = f.read().decode("utf-8")
60-
with requests_mock.mock() as m:
61-
m.get(self.baseurl + "/0448d2ed-590d-4fa0-b272-a2a8a24555b5/permissions", text=response_xml)
62-
single_database = TSC.DatabaseItem("test")
63-
single_database._id = "0448d2ed-590d-4fa0-b272-a2a8a24555b5"
64-
65-
self.server.databases.populate_permissions(single_database)
66-
permissions = single_database.permissions
67-
68-
self.assertEqual(permissions[0].grantee.tag_name, "group")
69-
self.assertEqual(permissions[0].grantee.id, "5e5e1978-71fa-11e4-87dd-7382f5c437af")
70-
self.assertDictEqual(
71-
permissions[0].capabilities,
72-
{
73-
TSC.Permission.Capability.ChangePermissions: TSC.Permission.Mode.Deny,
74-
TSC.Permission.Capability.Read: TSC.Permission.Mode.Allow,
75-
},
76-
)
77-
78-
self.assertEqual(permissions[1].grantee.tag_name, "user")
79-
self.assertEqual(permissions[1].grantee.id, "7c37ee24-c4b1-42b6-a154-eaeab7ee330a")
80-
self.assertDictEqual(
81-
permissions[1].capabilities,
82-
{
83-
TSC.Permission.Capability.Write: TSC.Permission.Mode.Allow,
84-
},
85-
)
86-
87-
def test_populate_data_quality_warning(self):
88-
with open(asset(GET_DQW_BY_CONTENT), "rb") as f:
89-
response_xml = f.read().decode("utf-8")
90-
with requests_mock.mock() as m:
91-
m.get(
92-
self.server.databases._data_quality_warnings.baseurl + "/94441d26-9a52-4a42-b0fb-3f94792d1aac",
93-
text=response_xml,
94-
)
95-
single_database = TSC.DatabaseItem("test")
96-
single_database._id = "94441d26-9a52-4a42-b0fb-3f94792d1aac"
97-
98-
self.server.databases.populate_dqw(single_database)
99-
dqws = single_database.dqws
100-
first_dqw = dqws.pop()
101-
self.assertEqual(first_dqw.id, "c2e0e406-84fb-4f4e-9998-f20dd9306710")
102-
self.assertEqual(first_dqw.warning_type, "WARNING")
103-
self.assertEqual(first_dqw.message, "Hello, World!")
104-
self.assertEqual(first_dqw.owner_id, "eddc8c5f-6af0-40be-b6b0-2c790290a43f")
105-
self.assertEqual(first_dqw.active, True)
106-
self.assertEqual(first_dqw.severe, True)
107-
self.assertEqual(str(first_dqw.created_at), "2021-04-09 18:39:54+00:00")
108-
self.assertEqual(str(first_dqw.updated_at), "2021-04-09 18:39:54+00:00")
109-
110-
def test_delete(self):
111-
with requests_mock.mock() as m:
112-
m.delete(self.baseurl + "/0448d2ed-590d-4fa0-b272-a2a8a24555b5", status_code=204)
113-
self.server.databases.delete("0448d2ed-590d-4fa0-b272-a2a8a24555b5")
7+
8+
TEST_ASSET_DIR = Path(__file__).parent / "assets"
9+
10+
GET_XML = TEST_ASSET_DIR / "database_get.xml"
11+
POPULATE_PERMISSIONS_XML = TEST_ASSET_DIR / "database_populate_permissions.xml"
12+
UPDATE_XML = TEST_ASSET_DIR / "database_update.xml"
13+
GET_DQW_BY_CONTENT = TEST_ASSET_DIR / "dqw_by_content_type.xml"
14+
15+
16+
@pytest.fixture(scope="function")
17+
def server() -> TSC.Server:
18+
server = TSC.Server("http://test", False)
19+
# Fake signin
20+
server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
21+
server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
22+
server.version = "3.5"
23+
24+
return server
25+
26+
27+
def test_get(server):
28+
response_xml = GET_XML.read_text()
29+
with requests_mock.mock() as m:
30+
m.get(server.databases.baseurl, text=response_xml)
31+
all_databases, pagination_item = server.databases.get()
32+
33+
assert 5 == pagination_item.total_available
34+
assert "5ea59b45-e497-4827-8809-bfe213236f75" == all_databases[0].id
35+
assert "hyper" == all_databases[0].connection_type
36+
assert "hyper_0.hyper" == all_databases[0].name
37+
38+
assert "23591f2c-4802-4d6a-9e28-574a8ea9bc4c" == all_databases[1].id
39+
assert "sqlserver" == all_databases[1].connection_type
40+
assert "testv1" == all_databases[1].name
41+
assert "9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0" == all_databases[1].contact_id
42+
assert all_databases[1].certified
43+
44+
45+
def test_update(server):
46+
response_xml = UPDATE_XML.read_text()
47+
with requests_mock.mock() as m:
48+
m.put(server.databases.baseurl + "/23591f2c-4802-4d6a-9e28-574a8ea9bc4c", text=response_xml)
49+
single_database = TSC.DatabaseItem("test")
50+
single_database.contact_id = "9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0"
51+
single_database._id = "23591f2c-4802-4d6a-9e28-574a8ea9bc4c"
52+
single_database.certified = True
53+
single_database.certification_note = "Test"
54+
single_database = server.databases.update(single_database)
55+
56+
assert "23591f2c-4802-4d6a-9e28-574a8ea9bc4c" == single_database.id
57+
assert "9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0" == single_database.contact_id
58+
assert single_database.certified
59+
assert "Test" == single_database.certification_note
60+
61+
62+
def test_populate_permissions(server):
63+
response_xml = POPULATE_PERMISSIONS_XML.read_text()
64+
with requests_mock.mock() as m:
65+
m.get(server.databases.baseurl + "/0448d2ed-590d-4fa0-b272-a2a8a24555b5/permissions", text=response_xml)
66+
single_database = TSC.DatabaseItem("test")
67+
single_database._id = "0448d2ed-590d-4fa0-b272-a2a8a24555b5"
68+
69+
server.databases.populate_permissions(single_database)
70+
permissions = single_database.permissions
71+
72+
assert permissions[0].grantee.tag_name == "group"
73+
assert permissions[0].grantee.id == "5e5e1978-71fa-11e4-87dd-7382f5c437af"
74+
assert permissions[0].capabilities == {
75+
TSC.Permission.Capability.ChangePermissions: TSC.Permission.Mode.Deny,
76+
TSC.Permission.Capability.Read: TSC.Permission.Mode.Allow,
77+
}
78+
79+
assert permissions[1].grantee.tag_name == "user"
80+
assert permissions[1].grantee.id == "7c37ee24-c4b1-42b6-a154-eaeab7ee330a"
81+
assert permissions[1].capabilities == {
82+
TSC.Permission.Capability.Write: TSC.Permission.Mode.Allow,
83+
}
84+
85+
86+
def test_populate_data_quality_warning(server):
87+
response_xml = GET_DQW_BY_CONTENT.read_text()
88+
with requests_mock.mock() as m:
89+
m.get(
90+
server.databases._data_quality_warnings.baseurl + "/94441d26-9a52-4a42-b0fb-3f94792d1aac",
91+
text=response_xml,
92+
)
93+
single_database = TSC.DatabaseItem("test")
94+
single_database._id = "94441d26-9a52-4a42-b0fb-3f94792d1aac"
95+
96+
server.databases.populate_dqw(single_database)
97+
dqws = single_database.dqws
98+
first_dqw = dqws.pop()
99+
assert first_dqw.id == "c2e0e406-84fb-4f4e-9998-f20dd9306710"
100+
assert first_dqw.warning_type == "WARNING"
101+
assert first_dqw.message, "Hello == World!"
102+
assert first_dqw.owner_id == "eddc8c5f-6af0-40be-b6b0-2c790290a43f"
103+
assert first_dqw.active
104+
assert first_dqw.severe
105+
assert str(first_dqw.created_at) == "2021-04-09 18:39:54+00:00"
106+
assert str(first_dqw.updated_at) == "2021-04-09 18:39:54+00:00"
107+
108+
109+
def test_delete(server):
110+
with requests_mock.mock() as m:
111+
m.delete(server.databases.baseurl + "/0448d2ed-590d-4fa0-b272-a2a8a24555b5", status_code=204)
112+
server.databases.delete("0448d2ed-590d-4fa0-b272-a2a8a24555b5")

0 commit comments

Comments
 (0)