diff --git a/tableauserverclient/server/endpoint/auth_endpoint.py b/tableauserverclient/server/endpoint/auth_endpoint.py index e685effbe..9e316d042 100644 --- a/tableauserverclient/server/endpoint/auth_endpoint.py +++ b/tableauserverclient/server/endpoint/auth_endpoint.py @@ -41,6 +41,9 @@ def sign_in(self, auth_req): def sign_out(self): url = "{0}/{1}".format(self.baseurl, 'signout') + # If there are no auth tokens you're already signed out. No-op + if not self.parent_srv.is_signed_in(): + return self.post_request(url, '') self.parent_srv._clear_auth() logger.info('Signed out') diff --git a/tableauserverclient/server/endpoint/sites_endpoint.py b/tableauserverclient/server/endpoint/sites_endpoint.py index 704fb9de9..51736ffc7 100644 --- a/tableauserverclient/server/endpoint/sites_endpoint.py +++ b/tableauserverclient/server/endpoint/sites_endpoint.py @@ -59,7 +59,12 @@ def delete(self, site_id): raise ValueError(error) url = "{0}/{1}".format(self.baseurl, site_id) self.delete_request(url) - logger.info('Deleted single site (ID: {0})'.format(site_id)) + # If we deleted the site we are logged into + # then we are automatically logged out + if site_id == self.parent_srv.site_id: + logger.info('Deleting current site and clearing auth tokens') + self.parent_srv._clear_auth() + logger.info('Deleted single site (ID: {0}) and signed out'.format(site_id)) # Create new site def create(self, site_item): diff --git a/tableauserverclient/server/server.py b/tableauserverclient/server/server.py index 24d56e1fe..8c28c1825 100644 --- a/tableauserverclient/server/server.py +++ b/tableauserverclient/server/server.py @@ -81,3 +81,6 @@ def http_options(self): @property def session(self): return self._session + + def is_signed_in(self): + return self._auth_token is not None diff --git a/test/test_site.py b/test/test_site.py index 3076e4ce3..311f9524f 100644 --- a/test/test_site.py +++ b/test/test_site.py @@ -17,7 +17,7 @@ def setUp(self): # Fake signin self.server._auth_token = 'j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM' - + self.server._site_id = '0626857c-1def-4503-a7d8-7907c3ff9d9f' self.baseurl = self.server.sites.baseurl def test_get(self):