|
| 1 | +import base64 |
| 2 | +import json |
| 3 | +import platform |
| 4 | +import re |
| 5 | +import sys |
| 6 | +from tempfile import TemporaryFile |
| 7 | +from unittest import IsolatedAsyncioTestCase |
| 8 | + |
| 9 | +import aiohttp |
| 10 | +from aioresponses import CallbackResult, aioresponses |
| 11 | +from callee import Attrs |
| 12 | +from mock import ANY, MagicMock |
| 13 | + |
| 14 | +from auth0.v3.management.async_auth0 import AsyncAuth0 as Auth0 |
| 15 | + |
| 16 | +clients = re.compile(r"^https://example\.com/api/v2/clients.*") |
| 17 | +factors = re.compile(r"^https://example\.com/api/v2/guardian/factors.*") |
| 18 | +payload = {"foo": "bar"} |
| 19 | + |
| 20 | + |
| 21 | +def get_callback(status=200): |
| 22 | + mock = MagicMock(return_value=CallbackResult(status=status, payload=payload)) |
| 23 | + |
| 24 | + def callback(url, **kwargs): |
| 25 | + return mock(url, **kwargs) |
| 26 | + |
| 27 | + return callback, mock |
| 28 | + |
| 29 | + |
| 30 | +class TestAsyncify(IsolatedAsyncioTestCase): |
| 31 | + @aioresponses() |
| 32 | + async def test_get(self, mocked): |
| 33 | + callback, mock = get_callback() |
| 34 | + mocked.get(clients, callback=callback) |
| 35 | + auth0 = Auth0(domain="example.com", token="jwt") |
| 36 | + self.assertEqual(await auth0.clients.all_async(), payload) |
| 37 | + mock.assert_called_with( |
| 38 | + Attrs(path="/api/v2/clients"), |
| 39 | + allow_redirects=True, |
| 40 | + params={"include_fields": "true"}, |
| 41 | + headers=ANY, |
| 42 | + timeout=ANY, |
| 43 | + ) |
| 44 | + |
| 45 | + @aioresponses() |
| 46 | + async def test_shared_session(self, mocked): |
| 47 | + callback, mock = get_callback() |
| 48 | + callback2, mock2 = get_callback() |
| 49 | + mocked.get(clients, callback=callback) |
| 50 | + mocked.put(factors, callback=callback2) |
| 51 | + async with Auth0(domain="example.com", token="jwt") as auth0: |
| 52 | + self.assertEqual(await auth0.clients.all_async(), payload) |
| 53 | + self.assertEqual( |
| 54 | + await auth0.guardian.update_factor_async("factor-1", {"factor": 1}), |
| 55 | + payload, |
| 56 | + ) |
| 57 | + mock.assert_called_with( |
| 58 | + Attrs(path="/api/v2/clients"), |
| 59 | + allow_redirects=True, |
| 60 | + params={"include_fields": "true"}, |
| 61 | + headers=ANY, |
| 62 | + timeout=ANY, |
| 63 | + ) |
| 64 | + mock2.assert_called_with( |
| 65 | + Attrs(path="/api/v2/guardian/factors/factor-1"), |
| 66 | + allow_redirects=True, |
| 67 | + json={"factor": 1}, |
| 68 | + headers=ANY, |
| 69 | + timeout=ANY, |
| 70 | + ) |
0 commit comments