Skip to content

Commit ca1ba5a

Browse files
committed
tests fix and readme
1 parent 26868e5 commit ca1ba5a

File tree

4 files changed

+71
-50
lines changed

4 files changed

+71
-50
lines changed

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,19 @@ descope_client.mgmt.tenant.update(
556556
custom_attributes={"attribute-name": "value"},
557557
)
558558

559+
# Managing the tenant's session settings
560+
# Getting the session settings
561+
descope_client.mgmt.tenant.load_settings(id="my-custom-id")
562+
563+
# updating the session settings
564+
tenant_settings = {
565+
session_settings_enabled = True,
566+
self_provisioning_domains = ["ackme.com"],
567+
568+
}
569+
descope_client.mgmt.tenant.update_settings(id="my-custom-id", tenant_settings=tenant_settings)
570+
571+
559572
# Tenant deletion cannot be undone. Use carefully.
560573
# Pass true to cascade value, in case you want to delete all users/keys associated only with this tenant
561574
descope_client.mgmt.tenant.delete(id="my-custom-id", cascade=False)

descope/management/common.py

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -302,44 +302,6 @@ def associated_tenants_to_dict(associated_tenants: List[AssociatedTenant]) -> li
302302
}
303303
)
304304
return associated_tenant_list
305-
306-
class tenantSettings:
307-
"""
308-
Represents tenant settings object.
309-
"""
310-
311-
def __init__(
312-
self,
313-
self_provisioning_domains: List[str],
314-
domains: Optional[List[str]] = None,
315-
auth_type: Optional[TenantAuthType] = None,
316-
session_settings_enabled: Optional[bool] = False,
317-
refresh_token_expiration: Optional[int] = None,
318-
refresh_token_expiration_unit: Optional[SessionExiprationUnit] = None,
319-
session_token_expiration: Optional[int] = None,
320-
session_token_expiration_unit: Optional[SessionExiprationUnit] = None,
321-
stepup_token_expiration: Optional[int] = None,
322-
stepup_token_expiration_unit: Optional[SessionExiprationUnit] = None,
323-
enable_inactivity: Optional[bool] = False,
324-
inactivity_time: Optional[int] = None,
325-
inactivity_time_unit: Optional[SessionExiprationUnit] = None,
326-
JITDisabled: Optional[bool] = False,
327-
):
328-
self.domains = domains
329-
self.self_provisioning_domains = self_provisioning_domains
330-
self.auth_type = auth_type
331-
self.session_settings_enabled = session_settings_enabled
332-
self.refresh_token_expiration = refresh_token_expiration
333-
self.refresh_token_expiration_unit = refresh_token_expiration_unit
334-
self.session_token_expiration = session_token_expiration
335-
self.session_token_expiration_unit = session_token_expiration_unit
336-
self.stepup_token_expiration = stepup_token_expiration
337-
self.stepup_token_expiration_unit = stepup_token_expiration_unit
338-
self.enable_inactivity = enable_inactivity
339-
self.inactivity_time = inactivity_time
340-
self.inactivity_time_unit = inactivity_time_unit
341-
self.JITDisabled = JITDisabled
342-
343305
class SAMLIDPAttributeMappingInfo:
344306
"""
345307
Represents a SAML IDP attribute mapping object. use this class for mapping Descope attribute

descope/management/tenant.py

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Any, List, Optional
22

33
from descope._http_base import HTTPBase
4-
from descope.management.common import MgmtV1, tenantSettings
4+
from descope.management.common import MgmtV1, TenantAuthType, SessionExiprationUnit
55

66

77
class Tenant(HTTPBase):
@@ -95,7 +95,20 @@ def update(
9595
def update_settings(
9696
self,
9797
id: str,
98-
tenant_settings: tenantSettings
98+
self_provisioning_domains: List[str],
99+
domains: Optional[List[str]] = None,
100+
auth_type: Optional[TenantAuthType] = None,
101+
session_settings_enabled: Optional[bool] = False,
102+
refresh_token_expiration: Optional[int] = None,
103+
refresh_token_expiration_unit: Optional[SessionExiprationUnit] = None,
104+
session_token_expiration: Optional[int] = None,
105+
session_token_expiration_unit: Optional[SessionExiprationUnit] = None,
106+
stepup_token_expiration: Optional[int] = None,
107+
stepup_token_expiration_unit: Optional[SessionExiprationUnit] = None,
108+
enable_inactivity: Optional[bool] = None,
109+
inactivity_time: Optional[int] = None,
110+
inactivity_time_unit: Optional[SessionExiprationUnit] = None,
111+
JITDisabled: Optional[bool] = None
99112
):
100113
"""
101114
Update an existing tenant's session settings.
@@ -107,10 +120,42 @@ def update_settings(
107120
Raise:
108121
AuthException: raised if creation operation fails
109122
"""
123+
body: dict[str, Any] = {
124+
"tenantId": id,
125+
"selfProvisioningDomains": self_provisioning_domains,
126+
}
127+
128+
if domains is not None:
129+
body["domains"] = domains
130+
if auth_type is not None:
131+
body["authType"] = auth_type
132+
if session_settings_enabled is not None:
133+
body["sessionSettingsEnabled"] = session_settings_enabled
134+
if refresh_token_expiration is not None:
135+
body["refreshTokenExpiration"] = refresh_token_expiration
136+
if refresh_token_expiration_unit is not None:
137+
body["refreshTokenExpirationUnit"] = refresh_token_expiration_unit
138+
if session_token_expiration is not None:
139+
body["sessionTokenExpiration"] = session_token_expiration
140+
if session_token_expiration_unit is not None:
141+
body["sessionTokenExpirationUnit"] = session_token_expiration_unit
142+
if stepup_token_expiration is not None:
143+
body["stepupTokenExpiration"] = stepup_token_expiration
144+
if stepup_token_expiration_unit is not None:
145+
body["stepupTokenExpirationUnit"] = stepup_token_expiration_unit
146+
if enable_inactivity is not None:
147+
body["enableInactivity"] = enable_inactivity
148+
if inactivity_time is not None:
149+
body["inactivityTime"] = inactivity_time
150+
if inactivity_time_unit is not None:
151+
body["inactivityTimeUnit"] = inactivity_time_unit
152+
if JITDisabled is not None:
153+
body["JITDisabled"] = JITDisabled
154+
110155
self._http.post(
111156
MgmtV1.tenant_settings_path,
112-
params={"id": id},
113-
body= tenant_settings,
157+
body=body,
158+
params=None
114159
)
115160

116161
def delete(

tests/management/test_tenant.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -388,13 +388,8 @@ def test_update_settings(self):
388388
# Test success flow
389389
with patch("requests.post") as mock_post:
390390
mock_post.return_value.ok = True
391-
tenant_settings = {
392-
"domains": ["domain1.com", "domain2.com"],
393-
"authType": "oidc",
394-
"sessionSettingsEnabled": True,
395-
}
396391
self.assertIsNone(
397-
client.mgmt.tenant.update_settings("t1", tenant_settings)
392+
client.mgmt.tenant.update_settings("t1", self_provisioning_domains=["domain1.com"], domains=["domain1.com", "domain2.com"], auth_type="oidc", session_settings_enabled=True)
398393
)
399394
mock_post.assert_called_with(
400395
f"{common.DEFAULT_BASE_URL}{MgmtV1.tenant_settings_path}",
@@ -403,10 +398,16 @@ def test_update_settings(self):
403398
"Authorization": f"Bearer {self.dummy_project_id}:{self.dummy_management_key}",
404399
"x-descope-project-id": self.dummy_project_id,
405400
},
406-
json=tenant_settings,
401+
json={
402+
"tenantId": "t1",
403+
"selfProvisioningDomains": ["domain1.com"],
404+
"domains": ["domain1.com", "domain2.com"],
405+
"authType": "oidc",
406+
"sessionSettingsEnabled": True
407+
},
407408
allow_redirects=False,
409+
params=None,
408410
verify=True,
409-
params={"id": "t1"},
410411
timeout=DEFAULT_TIMEOUT_SECONDS,
411412
)
412413

0 commit comments

Comments
 (0)