Skip to content

Commit 0836839

Browse files
committed
chore: pytestify server info
1 parent e648cd4 commit 0836839

File tree

1 file changed

+75
-68
lines changed

1 file changed

+75
-68
lines changed

test/test_server_info.py

Lines changed: 75 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,82 @@
1-
import os.path
1+
from pathlib import Path
22
import unittest
33

4+
import pytest
45
import requests_mock
56

67
import tableauserverclient as TSC
78
from tableauserverclient.server.endpoint.exceptions import NonXMLResponseError
89

9-
TEST_ASSET_DIR = os.path.join(os.path.dirname(__file__), "assets")
10-
11-
SERVER_INFO_GET_XML = os.path.join(TEST_ASSET_DIR, "server_info_get.xml")
12-
SERVER_INFO_25_XML = os.path.join(TEST_ASSET_DIR, "server_info_25.xml")
13-
SERVER_INFO_404 = os.path.join(TEST_ASSET_DIR, "server_info_404.xml")
14-
SERVER_INFO_AUTH_INFO_XML = os.path.join(TEST_ASSET_DIR, "server_info_auth_info.xml")
15-
SERVER_INFO_WRONG_SITE = os.path.join(TEST_ASSET_DIR, "server_info_wrong_site.html")
16-
17-
18-
class ServerInfoTests(unittest.TestCase):
19-
def setUp(self):
20-
self.server = TSC.Server("http://test", False)
21-
self.baseurl = self.server.server_info.baseurl
22-
self.server.version = "2.4"
23-
24-
def test_server_info_get(self):
25-
with open(SERVER_INFO_GET_XML, "rb") as f:
26-
response_xml = f.read().decode("utf-8")
27-
with requests_mock.mock() as m:
28-
m.get(self.server.server_info.baseurl, text=response_xml)
29-
actual = self.server.server_info.get()
30-
31-
self.assertEqual("10.1.0", actual.product_version)
32-
self.assertEqual("10100.16.1024.2100", actual.build_number)
33-
self.assertEqual("3.10", actual.rest_api_version)
34-
35-
def test_server_info_use_highest_version_downgrades(self):
36-
with open(SERVER_INFO_AUTH_INFO_XML, "rb") as f:
37-
# This is the auth.xml endpoint present back to 9.0 Servers
38-
auth_response_xml = f.read().decode("utf-8")
39-
with open(SERVER_INFO_404, "rb") as f:
40-
# 10.1 serverInfo response
41-
si_response_xml = f.read().decode("utf-8")
42-
with requests_mock.mock() as m:
43-
# Return a 404 for serverInfo so we can pretend this is an old Server
44-
m.get(self.server.server_address + "/api/2.4/serverInfo", text=si_response_xml, status_code=404)
45-
m.get(self.server.server_address + "/auth?format=xml", text=auth_response_xml)
46-
self.server.use_server_version()
47-
# does server-version[9.2] lookup in PRODUCT_TO_REST_VERSION
48-
self.assertEqual(self.server.version, "2.2")
49-
50-
def test_server_info_use_highest_version_upgrades(self):
51-
with open(SERVER_INFO_GET_XML, "rb") as f:
52-
si_response_xml = f.read().decode("utf-8")
53-
with requests_mock.mock() as m:
54-
m.get(self.server.server_address + "/api/2.8/serverInfo", text=si_response_xml)
55-
# Pretend we're old
56-
self.server.version = "2.8"
57-
self.server.use_server_version()
58-
# Did we upgrade to 3.10?
59-
self.assertEqual(self.server.version, "3.10")
60-
61-
def test_server_use_server_version_flag(self):
62-
with open(SERVER_INFO_25_XML, "rb") as f:
63-
si_response_xml = f.read().decode("utf-8")
64-
with requests_mock.mock() as m:
65-
m.get("http://test/api/2.4/serverInfo", text=si_response_xml)
66-
server = TSC.Server("http://test", use_server_version=True)
67-
self.assertEqual(server.version, "2.5")
68-
69-
def test_server_wrong_site(self):
70-
with open(SERVER_INFO_WRONG_SITE, "rb") as f:
71-
response = f.read().decode("utf-8")
72-
with requests_mock.mock() as m:
73-
m.get(self.server.server_info.baseurl, text=response, status_code=404)
74-
with self.assertRaises(NonXMLResponseError):
75-
self.server.server_info.get()
10+
TEST_ASSET_DIR = Path(__file__).parent / "assets"
11+
12+
SERVER_INFO_GET_XML = TEST_ASSET_DIR / "server_info_get.xml"
13+
SERVER_INFO_25_XML = TEST_ASSET_DIR / "server_info_25.xml"
14+
SERVER_INFO_404 = TEST_ASSET_DIR / "server_info_404.xml"
15+
SERVER_INFO_AUTH_INFO_XML = TEST_ASSET_DIR / "server_info_auth_info.xml"
16+
SERVER_INFO_WRONG_SITE = TEST_ASSET_DIR / "server_info_wrong_site.html"
17+
18+
19+
@pytest.fixture(scope="function")
20+
def server():
21+
"""Fixture to create a TSC.Server instance for testing."""
22+
server = TSC.Server("http://test", False)
23+
24+
# Fake signin
25+
server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
26+
server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
27+
server.version = "2.4"
28+
29+
return server
30+
31+
32+
def test_server_info_get(server: TSC.Server) -> None:
33+
response_xml = SERVER_INFO_GET_XML.read_text()
34+
with requests_mock.mock() as m:
35+
m.get(server.server_info.baseurl, text=response_xml)
36+
actual = server.server_info.get()
37+
38+
assert actual is not None
39+
assert "10.1.0" == actual.product_version
40+
assert "10100.16.1024.2100" == actual.build_number
41+
assert "3.10" == actual.rest_api_version
42+
43+
44+
def test_server_info_use_highest_version_downgrades(server: TSC.Server) -> None:
45+
# This is the auth.xml endpoint present back to 9.0 Servers
46+
auth_response_xml = SERVER_INFO_AUTH_INFO_XML.read_text()
47+
# 10.1 serverInfo response
48+
si_response_xml = SERVER_INFO_404.read_text()
49+
with requests_mock.mock() as m:
50+
# Return a 404 for serverInfo so we can pretend this is an old Server
51+
m.get(server.server_address + "/api/2.4/serverInfo", text=si_response_xml, status_code=404)
52+
m.get(server.server_address + "/auth?format=xml", text=auth_response_xml)
53+
server.use_server_version()
54+
# does server-version[9.2] lookup in PRODUCT_TO_REST_VERSION
55+
assert server.version == "2.2"
56+
57+
58+
def test_server_info_use_highest_version_upgrades(server: TSC.Server) -> None:
59+
si_response_xml = SERVER_INFO_GET_XML.read_text()
60+
with requests_mock.mock() as m:
61+
m.get(server.server_address + "/api/2.8/serverInfo", text=si_response_xml)
62+
# Pretend we're old
63+
server.version = "2.8"
64+
server.use_server_version()
65+
# Did we upgrade to 3.10?
66+
assert server.version == "3.10"
67+
68+
69+
def test_server_use_server_version_flag(server: TSC.Server) -> None:
70+
si_response_xml = SERVER_INFO_25_XML.read_text()
71+
with requests_mock.mock() as m:
72+
m.get("http://test/api/2.4/serverInfo", text=si_response_xml)
73+
server = TSC.Server("http://test", use_server_version=True)
74+
assert server.version == "2.5"
75+
76+
77+
def test_server_wrong_site(server: TSC.Server) -> None:
78+
response = SERVER_INFO_WRONG_SITE.read_text()
79+
with requests_mock.mock() as m:
80+
m.get(server.server_info.baseurl, text=response, status_code=404)
81+
with pytest.raises(NonXMLResponseError):
82+
server.server_info.get()

0 commit comments

Comments
 (0)