Skip to content

Commit 59eaebb

Browse files
authored
chore: convert test_auth to pytest (#1646)
* chore: convert test_auth to pytest * chore: type hint tests --------- Co-authored-by: Jordan Woods <[email protected]>
1 parent 915f1af commit 59eaebb

File tree

1 file changed

+141
-128
lines changed

1 file changed

+141
-128
lines changed

test/test_auth.py

Lines changed: 141 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,133 +1,146 @@
1-
import os.path
2-
import unittest
1+
from pathlib import Path
32

3+
import pytest
44
import requests_mock
55

66
import tableauserverclient as TSC
77

8-
TEST_ASSET_DIR = os.path.join(os.path.dirname(__file__), "assets")
9-
10-
SIGN_IN_XML = os.path.join(TEST_ASSET_DIR, "auth_sign_in.xml")
11-
SIGN_IN_IMPERSONATE_XML = os.path.join(TEST_ASSET_DIR, "auth_sign_in_impersonate.xml")
12-
SIGN_IN_ERROR_XML = os.path.join(TEST_ASSET_DIR, "auth_sign_in_error.xml")
13-
14-
15-
class AuthTests(unittest.TestCase):
16-
def setUp(self):
17-
self.server = TSC.Server("http://test", False)
18-
self.baseurl = self.server.auth.baseurl
19-
20-
def test_sign_in(self):
21-
with open(SIGN_IN_XML, "rb") as f:
22-
response_xml = f.read().decode("utf-8")
23-
with requests_mock.mock() as m:
24-
m.post(self.baseurl + "/signin", text=response_xml)
25-
tableau_auth = TSC.TableauAuth("testuser", "password", site_id="Samples")
26-
self.server.auth.sign_in(tableau_auth)
27-
28-
self.assertEqual("eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l", self.server.auth_token)
29-
self.assertEqual("6b7179ba-b82b-4f0f-91ed-812074ac5da6", self.server.site_id)
30-
self.assertEqual("Samples", self.server.site_url)
31-
self.assertEqual("1a96d216-e9b8-497b-a82a-0b899a965e01", self.server.user_id)
32-
33-
def test_sign_in_with_personal_access_tokens(self):
34-
with open(SIGN_IN_XML, "rb") as f:
35-
response_xml = f.read().decode("utf-8")
36-
with requests_mock.mock() as m:
37-
m.post(self.baseurl + "/signin", text=response_xml)
38-
tableau_auth = TSC.PersonalAccessTokenAuth(
39-
token_name="mytoken", personal_access_token="Random123Generated", site_id="Samples"
40-
)
41-
self.server.auth.sign_in(tableau_auth)
42-
43-
self.assertEqual("eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l", self.server.auth_token)
44-
self.assertEqual("6b7179ba-b82b-4f0f-91ed-812074ac5da6", self.server.site_id)
45-
self.assertEqual("Samples", self.server.site_url)
46-
self.assertEqual("1a96d216-e9b8-497b-a82a-0b899a965e01", self.server.user_id)
47-
48-
def test_sign_in_impersonate(self):
49-
with open(SIGN_IN_IMPERSONATE_XML, "rb") as f:
50-
response_xml = f.read().decode("utf-8")
51-
with requests_mock.mock() as m:
52-
m.post(self.baseurl + "/signin", text=response_xml)
53-
tableau_auth = TSC.TableauAuth(
54-
"testuser", "password", user_id_to_impersonate="dd2239f6-ddf1-4107-981a-4cf94e415794"
55-
)
56-
self.server.auth.sign_in(tableau_auth)
57-
58-
self.assertEqual("MJonFA6HDyy2C3oqR13fRGqE6cmgzwq3", self.server.auth_token)
59-
self.assertEqual("dad65087-b08b-4603-af4e-2887b8aafc67", self.server.site_id)
60-
self.assertEqual("dd2239f6-ddf1-4107-981a-4cf94e415794", self.server.user_id)
61-
62-
def test_sign_in_error(self):
63-
with open(SIGN_IN_ERROR_XML, "rb") as f:
64-
response_xml = f.read().decode("utf-8")
65-
with requests_mock.mock() as m:
66-
m.post(self.baseurl + "/signin", text=response_xml, status_code=401)
67-
tableau_auth = TSC.TableauAuth("testuser", "wrongpassword")
68-
self.assertRaises(TSC.FailedSignInError, self.server.auth.sign_in, tableau_auth)
69-
70-
def test_sign_in_invalid_token(self):
71-
with open(SIGN_IN_ERROR_XML, "rb") as f:
72-
response_xml = f.read().decode("utf-8")
73-
with requests_mock.mock() as m:
74-
m.post(self.baseurl + "/signin", text=response_xml, status_code=401)
75-
tableau_auth = TSC.PersonalAccessTokenAuth(token_name="mytoken", personal_access_token="invalid")
76-
self.assertRaises(TSC.FailedSignInError, self.server.auth.sign_in, tableau_auth)
77-
78-
def test_sign_in_without_auth(self):
79-
with open(SIGN_IN_ERROR_XML, "rb") as f:
80-
response_xml = f.read().decode("utf-8")
81-
with requests_mock.mock() as m:
82-
m.post(self.baseurl + "/signin", text=response_xml, status_code=401)
83-
tableau_auth = TSC.TableauAuth("", "")
84-
self.assertRaises(TSC.FailedSignInError, self.server.auth.sign_in, tableau_auth)
85-
86-
def test_sign_out(self):
87-
with open(SIGN_IN_XML, "rb") as f:
88-
response_xml = f.read().decode("utf-8")
89-
with requests_mock.mock() as m:
90-
m.post(self.baseurl + "/signin", text=response_xml)
91-
m.post(self.baseurl + "/signout", text="")
92-
tableau_auth = TSC.TableauAuth("testuser", "password")
93-
self.server.auth.sign_in(tableau_auth)
94-
self.server.auth.sign_out()
95-
96-
self.assertIsNone(self.server._auth_token)
97-
self.assertIsNone(self.server._site_id)
98-
self.assertIsNone(self.server._site_url)
99-
self.assertIsNone(self.server._user_id)
100-
101-
def test_switch_site(self):
102-
self.server.version = "2.6"
103-
baseurl = self.server.auth.baseurl
104-
site_id, user_id, auth_token = list("123")
105-
self.server._set_auth(site_id, user_id, auth_token)
106-
with open(SIGN_IN_XML, "rb") as f:
107-
response_xml = f.read().decode("utf-8")
108-
with requests_mock.mock() as m:
109-
m.post(baseurl + "/switchSite", text=response_xml)
110-
site = TSC.SiteItem("Samples", "Samples")
111-
self.server.auth.switch_site(site)
112-
113-
self.assertEqual("eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l", self.server.auth_token)
114-
self.assertEqual("6b7179ba-b82b-4f0f-91ed-812074ac5da6", self.server.site_id)
115-
self.assertEqual("Samples", self.server.site_url)
116-
self.assertEqual("1a96d216-e9b8-497b-a82a-0b899a965e01", self.server.user_id)
117-
118-
def test_revoke_all_server_admin_tokens(self):
119-
self.server.version = "3.10"
120-
baseurl = self.server.auth.baseurl
121-
with open(SIGN_IN_XML, "rb") as f:
122-
response_xml = f.read().decode("utf-8")
123-
with requests_mock.mock() as m:
124-
m.post(baseurl + "/signin", text=response_xml)
125-
m.post(baseurl + "/revokeAllServerAdminTokens", text="")
126-
tableau_auth = TSC.TableauAuth("testuser", "password")
127-
self.server.auth.sign_in(tableau_auth)
128-
self.server.auth.revoke_all_server_admin_tokens()
129-
130-
self.assertEqual("eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l", self.server.auth_token)
131-
self.assertEqual("6b7179ba-b82b-4f0f-91ed-812074ac5da6", self.server.site_id)
132-
self.assertEqual("Samples", self.server.site_url)
133-
self.assertEqual("1a96d216-e9b8-497b-a82a-0b899a965e01", self.server.user_id)
8+
TEST_ASSET_DIR = Path(__file__).parent / "assets"
9+
10+
SIGN_IN_XML = TEST_ASSET_DIR / "auth_sign_in.xml"
11+
SIGN_IN_IMPERSONATE_XML = TEST_ASSET_DIR / "auth_sign_in_impersonate.xml"
12+
SIGN_IN_ERROR_XML = TEST_ASSET_DIR / "auth_sign_in_error.xml"
13+
14+
15+
@pytest.fixture(scope="function")
16+
def server() -> TSC.Server:
17+
"""Fixture to create a Tableau Server instance for testing."""
18+
server_instance = TSC.Server("http://test", False)
19+
return server_instance
20+
21+
22+
def test_sign_in(server: TSC.Server) -> None:
23+
with open(SIGN_IN_XML, "rb") as f:
24+
response_xml = f.read().decode("utf-8")
25+
with requests_mock.mock() as m:
26+
m.post(server.auth.baseurl + "/signin", text=response_xml)
27+
tableau_auth = TSC.TableauAuth("testuser", "password", site_id="Samples")
28+
server.auth.sign_in(tableau_auth)
29+
30+
assert "eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l" == server.auth_token
31+
assert "6b7179ba-b82b-4f0f-91ed-812074ac5da6" == server.site_id
32+
assert "Samples" == server.site_url
33+
assert "1a96d216-e9b8-497b-a82a-0b899a965e01" == server.user_id
34+
35+
36+
def test_sign_in_with_personal_access_tokens(server: TSC.Server) -> None:
37+
with open(SIGN_IN_XML, "rb") as f:
38+
response_xml = f.read().decode("utf-8")
39+
with requests_mock.mock() as m:
40+
m.post(server.auth.baseurl + "/signin", text=response_xml)
41+
tableau_auth = TSC.PersonalAccessTokenAuth(
42+
token_name="mytoken", personal_access_token="Random123Generated", site_id="Samples"
43+
)
44+
server.auth.sign_in(tableau_auth)
45+
46+
assert "eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l" == server.auth_token
47+
assert "6b7179ba-b82b-4f0f-91ed-812074ac5da6" == server.site_id
48+
assert "Samples" == server.site_url
49+
assert "1a96d216-e9b8-497b-a82a-0b899a965e01" == server.user_id
50+
51+
52+
def test_sign_in_impersonate(server: TSC.Server) -> None:
53+
with open(SIGN_IN_IMPERSONATE_XML, "rb") as f:
54+
response_xml = f.read().decode("utf-8")
55+
with requests_mock.mock() as m:
56+
m.post(server.auth.baseurl + "/signin", text=response_xml)
57+
tableau_auth = TSC.TableauAuth(
58+
"testuser", "password", user_id_to_impersonate="dd2239f6-ddf1-4107-981a-4cf94e415794"
59+
)
60+
server.auth.sign_in(tableau_auth)
61+
62+
assert "MJonFA6HDyy2C3oqR13fRGqE6cmgzwq3" == server.auth_token
63+
assert "dad65087-b08b-4603-af4e-2887b8aafc67" == server.site_id
64+
assert "dd2239f6-ddf1-4107-981a-4cf94e415794" == server.user_id
65+
66+
67+
def test_sign_in_error(server: TSC.Server) -> None:
68+
with open(SIGN_IN_ERROR_XML, "rb") as f:
69+
response_xml = f.read().decode("utf-8")
70+
with requests_mock.mock() as m:
71+
m.post(server.auth.baseurl + "/signin", text=response_xml, status_code=401)
72+
tableau_auth = TSC.TableauAuth("testuser", "wrongpassword")
73+
with pytest.raises(TSC.FailedSignInError):
74+
server.auth.sign_in(tableau_auth)
75+
76+
77+
def test_sign_in_invalid_token(server: TSC.Server) -> None:
78+
with open(SIGN_IN_ERROR_XML, "rb") as f:
79+
response_xml = f.read().decode("utf-8")
80+
with requests_mock.mock() as m:
81+
m.post(server.auth.baseurl + "/signin", text=response_xml, status_code=401)
82+
tableau_auth = TSC.PersonalAccessTokenAuth(token_name="mytoken", personal_access_token="invalid")
83+
with pytest.raises(TSC.FailedSignInError):
84+
server.auth.sign_in(tableau_auth)
85+
86+
87+
def test_sign_in_without_auth(server: TSC.Server) -> None:
88+
with open(SIGN_IN_ERROR_XML, "rb") as f:
89+
response_xml = f.read().decode("utf-8")
90+
with requests_mock.mock() as m:
91+
m.post(server.auth.baseurl + "/signin", text=response_xml, status_code=401)
92+
tableau_auth = TSC.TableauAuth("", "")
93+
with pytest.raises(TSC.FailedSignInError):
94+
server.auth.sign_in(tableau_auth)
95+
96+
97+
def test_sign_out(server: TSC.Server) -> None:
98+
with open(SIGN_IN_XML, "rb") as f:
99+
response_xml = f.read().decode("utf-8")
100+
with requests_mock.mock() as m:
101+
m.post(server.auth.baseurl + "/signin", text=response_xml)
102+
m.post(server.auth.baseurl + "/signout", text="")
103+
tableau_auth = TSC.TableauAuth("testuser", "password")
104+
server.auth.sign_in(tableau_auth)
105+
server.auth.sign_out()
106+
107+
assert server._auth_token is None
108+
assert server._site_id is None
109+
assert server._site_url is None
110+
assert server._user_id is None
111+
112+
113+
def test_switch_site(server: TSC.Server) -> None:
114+
server.version = "2.6"
115+
baseurl = server.auth.baseurl
116+
site_id, user_id, auth_token = list("123")
117+
server._set_auth(site_id, user_id, auth_token)
118+
with open(SIGN_IN_XML, "rb") as f:
119+
response_xml = f.read().decode("utf-8")
120+
with requests_mock.mock() as m:
121+
m.post(baseurl + "/switchSite", text=response_xml)
122+
site = TSC.SiteItem("Samples", "Samples")
123+
server.auth.switch_site(site)
124+
125+
assert "eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l" == server.auth_token
126+
assert "6b7179ba-b82b-4f0f-91ed-812074ac5da6" == server.site_id
127+
assert "Samples" == server.site_url
128+
assert "1a96d216-e9b8-497b-a82a-0b899a965e01" == server.user_id
129+
130+
131+
def test_revoke_all_server_admin_tokens(server: TSC.Server) -> None:
132+
server.version = "3.10"
133+
baseurl = server.auth.baseurl
134+
with open(SIGN_IN_XML, "rb") as f:
135+
response_xml = f.read().decode("utf-8")
136+
with requests_mock.mock() as m:
137+
m.post(baseurl + "/signin", text=response_xml)
138+
m.post(baseurl + "/revokeAllServerAdminTokens", text="")
139+
tableau_auth = TSC.TableauAuth("testuser", "password")
140+
server.auth.sign_in(tableau_auth)
141+
server.auth.revoke_all_server_admin_tokens()
142+
143+
assert "eIX6mvFsqyansa4KqEI1UwOpS8ggRs2l" == server.auth_token
144+
assert "6b7179ba-b82b-4f0f-91ed-812074ac5da6" == server.site_id
145+
assert "Samples" == server.site_url
146+
assert "1a96d216-e9b8-497b-a82a-0b899a965e01" == server.user_id

0 commit comments

Comments
 (0)