8000 Adding tests for 500 error handling (#364) · SnarkyPapi/server-client-python@fe2ff8f · GitHub
[go: up one dir, main page]

Skip to content

Commit fe2ff8f

Browse files
authored
Adding tests for 500 error handling (tableau#364)
* Adding tests for 500 error handling * fixing python 2.7 test failures * fixing style failure
1 
8000
parent cacc4fb commit fe2ff8f

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

test/test_datasource.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
4 8000 4
import xml.etree.ElementTree as ET
55
import tableauserverclient as TSC
66
from tableauserverclient.datetime_helpers import format_datetime
7+
from tableauserverclient.server.endpoint.exceptions import InternalServerError
78
from tableauserverclient.server.request_factory import RequestFactory
89
from ._utils import read_xml_asset, read_xml_assets, asset
910

@@ -313,3 +314,14 @@ def test_credentials_and_multi_connect_raises_exception(self):
313314
response = RequestFactory.Datasource._generate_xml(new_datasource,
314315
connection_credentials=connection_creds,
315316
connections=[connection1])
317+
318+
def test_synchronous_publish_timeout_error(self):
319+
with requests_mock.mock() as m:
320+
m.register_uri('POST', self.baseurl, status_code=504)
321+
322+
new_datasource = TSC.DatasourceItem(project_id='')
323+
publish_mode = self.server.PublishMode.CreateNew
324+
325+
self.assertRaisesRegexp(InternalServerError, 'Please use asynchronous publishing to avoid timeouts.',
326+
self.server.datasources.publish, new_datasource,
327+
asset('SampleDS.tds'), publish_mode)

test/test_requests.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import tableauserverclient as TSC
77

8+
from tableauserverclient.server.endpoint.exceptions import InternalServerError
9+
810

911
class RequestTests(unittest.TestCase):
1012
def setUp(self):
@@ -45,3 +47,11 @@ def test_make_post_request(self):
4547
self.assertEqual(resp.request.headers['x-tableau-auth'], 'j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM')
4648
self.assertEqual(resp.request.headers['content-type'], 'multipart/mixed')
4749
self.assertEqual(resp.request.body, b'1337')
50+
51+
# Test that 500 server errors are handled properly
52+
def test_internal_server_error(self):
53+
self.server.version = "3.2"
54+
server_response = "500: Internal Server Error"
55+
with requests_mock.mock() as m:
56+
m.register_uri('GET', self.server.server_info.baseurl, status_code=500, text=server_response)
57+
self.assertRaisesRegexp(InternalServerError, server_response, self.server.server_info.get)

test/test_workbook.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import xml.etree.ElementTree as ET
66

77
from tableauserverclient.datetime_helpers import format_datetime
8+
from tableauserverclient.server.endpoint.exceptions import InternalServerError
89
from tableauserverclient.server.request_factory import RequestFactory
10+
from ._utils import asset
911

1012
TEST_ASSET_DIR = os.path.join(os.path.dirname(__file__), 'assets')
1113

@@ -319,11 +321,11 @@ def test_publish(self):
319321
show_tabs=False,
320322
project_id='ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
321323

322-
sample_workbok = os.path.join(TEST_ASSET_DIR, 'SampleWB.twbx')
324+
sample_workbook = os.path.join(TEST_ASSET_DIR, 'SampleWB.twbx')
323325
publish_mode = self.server.PublishMode.CreateNew
324326

325327
new_workbook = self.server.workbooks.publish(new_workbook,
326-
sample_workbok,
328+
sample_workbook,
327329
publish_mode)
328330

329331
self.assertEqual('a8076ca1-e9d8-495e-bae6-c684dbb55836', new_workbook.id)
@@ -350,11 +352,11 @@ def test_publish_async(self):
350352
show_tabs=False,
351353
project_id='ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
352354

353-
sample_workbok = os.path.join(TEST_ASSET_DIR, 'SampleWB.twbx')
355+
sample_workbook = os.path.join(TEST_ASSET_DIR, 'SampleWB.twbx')
354356
publish_mode = self.server.PublishMode.CreateNew
355357

356358
new_job = self.server.workbooks.publish(new_workbook,
357-
sample_workbok,
359+
sample_workbook,
358360
publish_mode,
359361
as_job=True)
360362

@@ -421,3 +423,13 @@ def test_credentials_and_multi_connect_raises_exception(self):
421423
response = RequestFactory.Workbook._generate_xml(new_workbook,
422424
connection_credentials=connection_creds,
423425
connections=[connection1])
426+
427+
def test_synchronous_publish_timeout_error(self):
428+
with requests_mock.mock() as m:
429+
m.register_uri('POST', self.baseurl, status_code=504)
430+
431+
new_workbook = TSC.WorkbookItem(project_id='')
432+
publish_mode = self.server.PublishMode.CreateNew
433+
434+
self.assertRaisesRegexp(InternalServerError, 'Please use asynchronous publishing to avoid timeouts',
435+
self.server.workbooks.publish, new_workbook, asset('SampleWB.twbx'), publish_mode)

0 commit comments

Comments
 (0)
0