Skip to content

Commit 12968a3

Browse files
committed
Added unit test cases for platform token.
1 parent 8ba0934 commit 12968a3

4 files changed

Lines changed: 94 additions & 6 deletions

File tree

conftest.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ def env_vars():
1818
"folder_path": os.getenv("TSS_FOLDER_PATH"),
1919
}
2020

21+
@pytest.fixture
22+
def platform_env_vars():
23+
return {
24+
"username": os.getenv("PLATFORM_USERNAME"),
25+
"password": os.getenv("PLATFORM_PASSWORD"),
26+
"base_url": os.getenv("PLATFORM_BASEURL"),
27+
"secret_id": os.getenv("TSS_SECRET_ID"),
28+
"secret_path": os.getenv("TSS_SECRET_PATH"),
29+
"folder_id": os.getenv("TSS_FOLDER_ID"),
30+
"folder_path": os.getenv("TSS_FOLDER_PATH"),
31+
}
2132

2233
@pytest.fixture
2334
def authorizer(env_vars):
@@ -27,7 +38,20 @@ def authorizer(env_vars):
2738
env_vars["password"],
2839
)
2940

41+
@pytest.fixture
42+
def platform_authorizer(platform_env_vars):
43+
from delinea.secrets.server import PasswordGrantAuthorizer
44+
return PasswordGrantAuthorizer(
45+
platform_env_vars["base_url"],
46+
platform_env_vars["username"],
47+
platform_env_vars["password"],
48+
)
3049

3150
@pytest.fixture
3251
def secret_server(env_vars, authorizer):
3352
return SecretServerCloud(env_vars["tenant"], authorizer)
53+
54+
@pytest.fixture
55+
def platform_server(platform_env_vars, platform_authorizer):
56+
from delinea.secrets.server import SecretServer
57+
return SecretServer(platform_env_vars["base_url"], platform_authorizer)

delinea/secrets/server.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,9 @@ class AccessTokenAuthorizer(Authorizer):
198198
def get_access_token(self):
199199
return self.access_token
200200

201-
def __init__(self, access_token):
201+
def __init__(self, access_token, server_type='secret_server'):
202202
self.access_token = access_token
203+
self._server_type = server_type.lower()
203204

204205

205206
class PasswordGrantAuthorizer(Authorizer):
@@ -283,25 +284,25 @@ def _refresh(self, seconds_of_drift=300):
283284
else:
284285
raise SecretServerError("Unknown server type for token request.")
285286
if self._server_type == "secret_server":
286-
token_url = self.base_url.rstrip("/") + "/" + self.token_path_uri.strip("/")
287+
self.token_url = self.base_url.rstrip("/") + "/" + self.token_path_uri.strip("/")
287288
grant_request = {
288289
"username": self.username,
289290
"password": self.password,
290291
"grant_type": "password",
291292
}
292293
if hasattr(self, "domain") and self.domain:
293294
grant_request["domain"] = self.domain
294-
self.access_grant = self.get_access_grant(token_url, grant_request)
295+
self.access_grant = self.get_access_grant(self.token_url, grant_request)
295296
self.access_grant_refreshed = datetime.now()
296297
elif self._server_type == "platform":
297-
token_url = self.base_url.rstrip("/") + "/" + self.token_path_uri.strip("/")
298+
self.token_url = self.base_url.rstrip("/") + "/" + self.token_path_uri.strip("/")
298299
grant_request = {
299300
"client_id": self.username,
300301
"client_secret": self.password,
301302
"grant_type": "client_credentials",
302303
"scope": "xpmheadless",
303304
}
304-
self.access_grant = self.get_access_grant(token_url, grant_request)
305+
self.access_grant = self.get_access_grant(self.token_url, grant_request)
305306
self.access_grant_refreshed = datetime.now()
306307
else:
307308
raise SecretServerError("Unknown server type for token request.")

tests/test_server.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def test_bad_url(env_vars, authorizer):
2020

2121

2222
def test_token_url(env_vars, authorizer):
23+
authorizer.get_access_token()
2324
assert (
2425
authorizer.token_url
2526
== f"https://{env_vars['tenant']}.secretservercloud.com/oauth2/token"
@@ -77,3 +78,62 @@ def test_server_child_folder_ids_by_folderid(env_vars, secret_server):
7778
type(secret_server.get_child_folder_ids_by_folderid(env_vars["folder_id"]))
7879
is list
7980
)
81+
82+
def test_platform_bad_url(platform_env_vars, platform_authorizer):
83+
bad_server = SecretServer(
84+
f"{platform_env_vars['base_url']}/nonexistent",
85+
platform_authorizer,
86+
)
87+
with pytest.raises(SecretServerError):
88+
bad_server.get_secret(platform_env_vars["secret_id"])
89+
90+
def test_platform_token_url(platform_env_vars, platform_authorizer):
91+
platform_authorizer.get_access_token()
92+
assert (
93+
platform_authorizer.token_url
94+
== f"{platform_env_vars['base_url']}/identity/api/oauth2/token/xpmplatform"
95+
)
96+
97+
def test_platform_api_url(platform_server, platform_env_vars):
98+
assert (
99+
platform_server.api_url
100+
== f"{platform_env_vars['base_url']}/api/v1"
101+
)
102+
103+
def test_platform_access_token_authorizer(platform_env_vars, platform_authorizer):
104+
assert SecretServer(
105+
platform_env_vars["base_url"],
106+
AccessTokenAuthorizer(platform_authorizer.get_access_token(), 'platform'),
107+
).get_secret(platform_env_vars["secret_id"])["id"] == int(platform_env_vars["secret_id"])
108+
109+
def test_platform_server_secret(platform_env_vars, platform_server):
110+
assert ServerSecret(**platform_server.get_secret(platform_env_vars["secret_id"])).id == int(
111+
platform_env_vars["secret_id"]
112+
)
113+
114+
def test_platform_server_secret_by_path(platform_env_vars, platform_server):
115+
assert ServerSecret(
116+
**platform_server.get_secret_by_path(platform_env_vars["secret_path"])
117+
).id == int(platform_env_vars["secret_id"])
118+
119+
def test_platform_server_folder_by_path(platform_env_vars, platform_server):
120+
assert ServerFolder(
121+
**platform_server.get_folder_by_path(platform_env_vars["folder_path"])
122+
).id == int(platform_env_vars["folder_id"])
123+
124+
def test_platform_nonexistent_secret(platform_server):
125+
with pytest.raises(SecretServerClientError):
126+
platform_server.get_secret(1000)
127+
128+
def test_platform_nonexistent_folder(platform_server):
129+
with pytest.raises(SecretServerClientError):
130+
platform_server.get_folder(1000)
131+
132+
def test_platform_server_secret_ids_by_folderid(platform_env_vars, platform_server):
133+
assert type(platform_server.get_secret_ids_by_folderid(platform_env_vars["folder_id"])) is list
134+
135+
def test_platform_server_child_folder_ids_by_folderid(platform_env_vars, platform_server):
136+
assert (
137+
type(platform_server.get_child_folder_ids_by_folderid(platform_env_vars["folder_id"]))
138+
is list
139+
)

tox.ini

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# Docs for tox config -> https://tox.readthedocs.io/en/latest/config.html
77

88
[tox]
9-
envlist = 3.8, 3.9, 3.10, 3.11
9+
envlist = 3.8, 3.9, 3.10, 3.11, 3.12
1010
isolated_build = True
1111
skipsdist = True
1212

@@ -23,5 +23,8 @@ passenv =
2323
TSS_SECRET_PATH
2424
TSS_FOLDER_ID
2525
TSS_FOLDER_PATH
26+
PLATFORM_USERNAME
27+
PLATFORM_PASSWORD
28+
PLATFORM_BASEURL
2629
commands =
2730
pytest

0 commit comments

Comments
 (0)