Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions auth0/v3/authentication/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ class AuthenticationBase(object):
(defaults to True)
"""

def __init__(self, domain, telemetry=True):
def __init__(self, domain, telemetry=True, timeout=5.0):
self.domain = domain

self.timeout = timeout
self.base_headers = {'Content-Type': 'application/json'}

if telemetry:
Expand All @@ -43,13 +43,13 @@ def __init__(self, domain, telemetry=True):
def post(self, url, data=None, headers=None):
request_headers = self.base_headers.copy()
request_headers.update(headers or {})
response = requests.post(url=url, json=data, headers=request_headers)
response = requests.post(url=url, json=data, headers=request_headers, timeout=self.timeout)
return self._process_response(response)

def get(self, url, params=None, headers=None):
request_headers = self.base_headers.copy()
request_headers.update(headers or {})
response = requests.get(url=url, params=params, headers=request_headers)
response = requests.get(url=url, params=params, headers=request_headers, timeout=self.timeout)
return self._process_response(response)

def _process_response(self, response):
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/blacklists.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ class Blacklists(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.url = 'https://{}/api/v2/blacklists/tokens'.format(domain)
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def get(self, aud=None):
"""Retrieves the jti and aud of all tokens in the blacklist.
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/client_grants.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class ClientGrants(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/client-grants'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Clients(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/clients'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/connections.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ class Connections(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/connections'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/custom_domains.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class CustomDomains(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://%s/api/v2/custom-domains' % self.domain
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/device_credentials.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class DeviceCredentials(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/device-credentials'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/email_templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class EmailTemplates(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/email-templates'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/emails.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Emails(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/emails/provider'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/grants.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Grants(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://%s/api/v2/grants' % self.domain
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/guardian.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Guardian(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/guardian'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Jobs(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, path=None):
url = 'https://{}/api/v2/jobs'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/logs.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Logs(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/logs'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/resource_servers.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class ResourceServers(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/resource-servers'.format(self.domain)
Expand Down
15 changes: 8 additions & 7 deletions auth0/v3/management/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ class RestClient(object):

"""Provides simple methods for handling all RESTful api endpoints. """

def __init__(self, jwt, telemetry=True):
def __init__(self, jwt, telemetry=True, timeout=5.0):
self.jwt = jwt
self.timeout = timeout

self.base_headers = {
'Authorization': 'Bearer {}'.format(self.jwt),
Expand All @@ -40,38 +41,38 @@ def __init__(self, jwt, telemetry=True):
def get(self, url, params=None):
headers = self.base_headers.copy()

response = requests.get(url, params=params, headers=headers)
response = requests.get(url, params=params, headers=headers, timeout=self.timeout)
return self._process_response(response)

def post(self, url, data=None):
headers = self.base_headers.copy()

response = requests.post(url, json=data, headers=headers)
response = requests.post(url, json=data, headers=headers, timeout=self.timeout)
return self._process_response(response)

def file_post(self, url, data=None, files=None):
headers = self.base_headers.copy()
headers.pop('Content-Type', None)

response = requests.post(url, data=data, files=files, headers=headers)
response = requests.post(url, data=data, files=files, headers=headers, timeout=self.timeout)
return self._process_response(response)

def patch(self, url, data=None):
headers = self.base_headers.copy()

response = requests.patch(url, json=data, headers=headers)
response = requests.patch(url, json=data, headers=headers, timeout=self.timeout)
return self._process_response(response)

def put(self, url, data=None):
headers = self.base_headers.copy()

response = requests.put(url, json=data, headers=headers)
response = requests.put(url, json=data, headers=headers, timeout=self.timeout)
return self._process_response(response)

def delete(self, url, params=None, data=None):
headers = self.base_headers.copy()

response = requests.delete(url, headers=headers, params=params or {}, json=data)
response = requests.delete(url, headers=headers, params=params or {}, json=data, timeout=self.timeout)
return self._process_response(response)

def _process_response(self, response):
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/roles.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Roles(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/roles'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Rules(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/rules'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/rules_configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class RulesConfigs(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://%s/api/v2/rules-configs' % self.domain
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ class Stats(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, action):
return 'https://{}/api/v2/stats/{}'.format(self.domain, action)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/tenants.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Tenants(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self):
return 'https://{}/api/v2/tenants/settings'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/tickets.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Tickets(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, action):
return 'https://{}/api/v2/tickets/{}'.format(self.domain, action)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/user_blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class UserBlocks(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/user-blocks'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class Users(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self, id=None):
url = 'https://{}/api/v2/users'.format(self.domain)
Expand Down
4 changes: 2 additions & 2 deletions auth0/v3/management/users_by_email.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class UsersByEmail(object):
(defaults to True)
"""

def __init__(self, domain, token, telemetry=True):
def __init__(self, domain, token, telemetry=True, timeout=5.0):
self.domain = domain
self.client = RestClient(jwt=token, telemetry=telemetry)
self.client = RestClient(jwt=token, telemetry=telemetry, timeout=timeout)

def _url(self):
url = 'https://{}/api/v2/users-by-email'.format(self.domain)
Expand Down
20 changes: 16 additions & 4 deletions auth0/v3/test/authentication/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def test_post(self, mock_post):
data = ab.post('the-url', data={'a': 'b'}, headers={'c': 'd'})

mock_post.assert_called_with(url='the-url', json={'a': 'b'},
headers={'c': 'd', 'Content-Type': 'application/json'})
headers={'c': 'd', 'Content-Type': 'application/json'}, timeout=5.0)

self.assertEqual(data, {'x': 'y'})

Expand All @@ -66,7 +66,7 @@ def test_post_with_defaults(self, mock_post):
data = ab.post('the-url')

mock_post.assert_called_with(url='the-url', json=None,
headers={'Content-Type': 'application/json'})
headers={'Content-Type': 'application/json'}, timeout=5.0)

self.assertEqual(data, {'x': 'y'})

Expand Down Expand Up @@ -182,7 +182,7 @@ def test_get(self, mock_get):
data = ab.get('the-url', params={'a': 'b'}, headers={'c': 'd'})

mock_get.assert_called_with(url='the-url', params={'a': 'b'},
headers={'c': 'd', 'Content-Type': 'application/json'})
headers={'c': 'd', 'Content-Type': 'application/json'}, timeout=5.0)

self.assertEqual(data, {'x': 'y'})

Expand All @@ -197,7 +197,7 @@ def test_get_with_defaults(self, mock_get):
data = ab.get('the-url')

mock_get.assert_called_with(url='the-url', params=None,
headers={'Content-Type': 'application/json'})
headers={'Content-Type': 'application/json'}, timeout=5.0)

self.assertEqual(data, {'x': 'y'})

Expand All @@ -221,3 +221,15 @@ def test_get_includes_telemetry(self, mock_get):
self.assertIn('Auth0-Client', headers)

self.assertEqual(data, {"x": "y"})

def test_get_can_timeout(self):
ab = AuthenticationBase('auth0.com', timeout=0.00001)

with self.assertRaises(requests.exceptions.Timeout):
ab.get('https://auth0.com', params={'a': 'b'}, headers={'c': 'd'})

def test_post_can_timeout(self):
ab = AuthenticationBase('auth0.com', timeout=0.00001)

with self.assertRaises(requests.exceptions.Timeout):
ab.post('https://auth0.com', data={'a': 'b'}, headers={'c': 'd'})
Loading