Skip to content

Commit 9744953

Browse files
lorinkozlbalmaceda
authored andcommitted
Added support for prompts API
1 parent d4edbd7 commit 9744953

6 files changed

Lines changed: 148 additions & 8 deletions

File tree

README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,7 @@ Management Endpoints
356356
- LogStreams() ( ``Auth0().log_streams`` )
357357
- Logs() ( ``Auth0().logs`` )
358358
- Organizations() ( ``Auth0().organizations`` )
359+
- Prompts() ( ``Auth0().prompts`` )
359360
- ResourceServers() (``Auth0().resource_servers`` )
360361
- Roles() ( ``Auth0().roles`` )
361362
- RulesConfigs() ( ``Auth0().rules_configs`` )

auth0/v3/management/auth0.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@
1313
from .log_streams import LogStreams
1414
from .logs import Logs
1515
from .organizations import Organizations
16+
from .prompts import Prompts
1617
from .resource_servers import ResourceServers
1718
from .roles import Roles
18-
from .rules_configs import RulesConfigs
1919
from .rules import Rules
20+
from .rules_configs import RulesConfigs
2021
from .stats import Stats
2122
from .tenants import Tenants
2223
from .tickets import Tickets
2324
from .user_blocks import UserBlocks
24-
from .users_by_email import UsersByEmail
2525
from .users import Users
26+
from .users_by_email import UsersByEmail
2627

2728

2829
class Auth0(object):
@@ -55,6 +56,7 @@ def __init__(self, domain, token, rest_options=None):
5556
self.log_streams = LogStreams(domain=domain, token=token, rest_options=rest_options)
5657
self.logs = Logs(domain=domain, token=token, rest_options=rest_options)
5758
self.organizations = Organizations(domain=domain, token=token, rest_options=rest_options)
59+
self.prompts = Prompts(domain=domain, token=token, rest_options=rest_options)
5860
self.resource_servers = ResourceServers(domain=domain, token=token, rest_options=rest_options)
5961
self.roles = Roles(domain=domain, token=token, rest_options=rest_options)
6062
self.rules_configs = RulesConfigs(domain=domain, token=token, rest_options=rest_options)

auth0/v3/management/prompts.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from .rest import RestClient
2+
3+
4+
class Prompts(object):
5+
"""Auth0 prompts endpoints
6+
7+
Args:
8+
domain (str): Your Auth0 domain, e.g: 'username.auth0.com'
9+
10+
token (str): Management API v2 Token
11+
12+
telemetry (bool, optional): Enable or disable Telemetry
13+
(defaults to True)
14+
15+
timeout (float or tuple, optional): Change the requests
16+
connect and read timeout. Pass a tuple to specify
17+
both values separately or a float to set both to it.
18+
(defaults to 5.0 for both)
19+
20+
rest_options (RestClientOptions): Pass an instance of
21+
RestClientOptions to configure additional RestClient
22+
options, such as rate-limit retries.
23+
(defaults to None)
24+
"""
25+
26+
def __init__(self, domain, token, telemetry=True, timeout=5.0, protocol="https", rest_options=None):
27+
self.domain = domain
28+
self.protocol = protocol
29+
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout, options=rest_options)
30+
31+
def _url(self, prompt=None, language=None):
32+
url = "{}://{}/api/v2/prompts".format(self.protocol, self.domain)
33+
if prompt is not None and language is not None:
34+
return "{}/{}/custom-text/{}".format(url, prompt, language)
35+
return url
36+
37+
def get(self):
38+
"""Retrieves prompts settings.
39+
40+
See: https://auth0.com/docs/api/management/v2#!/Prompts/get_prompts
41+
"""
42+
43+
return self.client.get(self._url())
44+
45+
def update(self, body):
46+
"""Updates prompts settings.
47+
48+
See: https://auth0.com/docs/api/management/v2#!/Prompts/patch_prompts
49+
"""
50+
51+
return self.client.patch(self._url(), data=body)
52+
53+
def get_custom_text(self, prompt, language):
54+
"""Retrieves custom text for a prompt in a specific language.
55+
56+
See: https://auth0.com/docs/api/management/v2#!/Prompts/get_custom_text_by_language
57+
"""
58+
59+
return self.client.get(self._url(prompt, language))
60+
61+
def update_custom_text(self, prompt, language, body):
62+
"""Updates custom text for a prompt in a specific language.
63+
64+
See: https://auth0.com/docs/api/management/v2#!/Prompts/put_custom_text_by_language
65+
"""
66+
67+
return self.client.put(self._url(prompt, language), data=body)

auth0/v3/test/management/test_auth0.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@
1616
from ...management.log_streams import LogStreams
1717
from ...management.logs import Logs
1818
from ...management.organizations import Organizations
19+
from ...management.prompts import Prompts
1920
from ...management.resource_servers import ResourceServers
2021
from ...management.roles import Roles
21-
from ...management.rules_configs import RulesConfigs
2222
from ...management.rules import Rules
23+
from ...management.rules_configs import RulesConfigs
2324
from ...management.stats import Stats
2425
from ...management.tenants import Tenants
2526
from ...management.tickets import Tickets
2627
from ...management.user_blocks import UserBlocks
27-
from ...management.users_by_email import UsersByEmail
2828
from ...management.users import Users
29+
from ...management.users_by_email import UsersByEmail
2930

3031

3132
class TestAuth0(unittest.TestCase):
32-
3333
def setUp(self):
34-
self.domain = 'user.some.domain'
35-
self.token = 'a-token'
34+
self.domain = "user.some.domain"
35+
self.token = "a-token"
3636
self.a0 = Auth0(self.domain, self.token)
3737

3838
def test_blacklists(self):
@@ -73,13 +73,16 @@ def test_jobs(self):
7373

7474
def test_log_streams(self):
7575
self.assertIsInstance(self.a0.log_streams, LogStreams)
76-
76+
7777
def test_logs(self):
7878
self.assertIsInstance(self.a0.logs, Logs)
7979

8080
def test_organizations(self):
8181
self.assertIsInstance(self.a0.organizations, Organizations)
8282

83+
def test_prompts(self):
84+
self.assertIsInstance(self.a0.prompts, Prompts)
85+
8386
def test_resource_servers(self):
8487
self.assertIsInstance(self.a0.resource_servers, ResourceServers)
8588

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import unittest
2+
3+
import mock
4+
5+
from ...management.prompts import Prompts
6+
7+
8+
class TestPrompts(unittest.TestCase):
9+
def test_init_with_optionals(self):
10+
t = Prompts(domain="domain", token="jwttoken", telemetry=False, timeout=(10, 2))
11+
self.assertEqual(t.client.options.timeout, (10, 2))
12+
telemetry_header = t.client.base_headers.get("Auth0-Client", None)
13+
self.assertEqual(telemetry_header, None)
14+
15+
@mock.patch("auth0.v3.management.prompts.RestClient")
16+
def test_get(self, mock_rc):
17+
mock_instance = mock_rc.return_value
18+
19+
p = Prompts(domain="domain", token="jwttoken")
20+
p.get()
21+
22+
args, _ = mock_instance.get.call_args
23+
24+
self.assertEqual("https://domain/api/v2/prompts", args[0])
25+
26+
@mock.patch("auth0.v3.management.prompts.RestClient")
27+
def test_update(self, mock_rc):
28+
mock_instance = mock_rc.return_value
29+
30+
p = Prompts(domain="domain", token="jwttoken")
31+
p.update({"a": "b", "c": "d"})
32+
33+
args, kwargs = mock_instance.patch.call_args
34+
35+
self.assertEqual("https://domain/api/v2/prompts", args[0])
36+
self.assertEqual(kwargs["data"], {"a": "b", "c": "d"})
37+
38+
@mock.patch("auth0.v3.management.prompts.RestClient")
39+
def test_get_custom_text(self, mock_rc):
40+
mock_instance = mock_rc.return_value
41+
42+
p = Prompts(domain="domain", token="jwttoken")
43+
p.get_custom_text("some-prompt", "some-language")
44+
45+
args, _ = mock_instance.get.call_args
46+
47+
self.assertEqual("https://domain/api/v2/prompts/some-prompt/custom-text/some-language", args[0])
48+
49+
@mock.patch("auth0.v3.management.prompts.RestClient")
50+
def test_update_custom_text(self, mock_rc):
51+
mock_instance = mock_rc.return_value
52+
53+
p = Prompts(domain="domain", token="jwttoken")
54+
p.update_custom_text("some-prompt", "some-language", {"a": "b", "c": "d"})
55+
56+
args, kwargs = mock_instance.put.call_args
57+
58+
self.assertEqual("https://domain/api/v2/prompts/some-prompt/custom-text/some-language", args[0])
59+
self.assertEqual(kwargs["data"], {"a": "b", "c": "d"})

docs/source/v3.management.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,14 @@ management.organizations module
129129
:undoc-members:
130130
:show-inheritance:
131131

132+
management.prompts module
133+
----------------------------------
134+
135+
.. automodule:: auth0.v3.management.prompts
136+
:members:
137+
:undoc-members:
138+
:show-inheritance:
139+
132140
management.resource\_servers module
133141
--------------------------------------
134142

0 commit comments

Comments
 (0)