Skip to content

Commit 46fd1be

Browse files
committed
update tests
1 parent 47f0753 commit 46fd1be

File tree

4 files changed

+90
-79
lines changed

4 files changed

+90
-79
lines changed

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
# aiohttp < 3.10.0 which is a bug. Investigate and remove the pinned aiohttp version.
7878
"aiohttp < 3.10.0",
7979
"mock; python_version < '3.8'",
80+
"freezegun",
8081
]
8182

8283
extras = {

tests/test__exponential_backoff.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313
# limitations under the License.
1414

1515
from unittest import mock
16+
try:
17+
from unittest.mock import AsyncMock
18+
except ImportError:
19+
# Fallback for Python < 3.8
20+
from mock import AsyncMock
1621

1722
import pytest # type: ignore
1823

@@ -57,12 +62,8 @@ def test_minimum_total_attempts():
5762
_exponential_backoff.ExponentialBackoff(total_attempts=1)
5863

5964

60-
async def async_sleep(delay):
61-
pass
62-
63-
6465
@pytest.mark.asyncio
65-
@mock.patch("asyncio.sleep", side_effect=async_sleep)
66+
@mock.patch("asyncio.sleep", new_callable=AsyncMock)
6667
async def test_exponential_backoff_async(mock_time_async):
6768
eb = _exponential_backoff.AsyncExponentialBackoff()
6869
curr_wait = eb._current_wait_in_seconds

tests_async/oauth2/test__client_async.py

Lines changed: 79 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from mock import AsyncMock
2424
import urllib
2525

26+
import freezegun
2627
import pytest # type: ignore
2728

2829
from google.auth import _helpers
@@ -212,26 +213,26 @@ def verify_request_params(request, params):
212213

213214

214215
@pytest.mark.asyncio
215-
@mock.patch("google.auth._helpers.utcnow", return_value=datetime.datetime.min)
216-
async def test_jwt_grant(utcnow):
216+
async def test_jwt_grant():
217217
request = make_request(
218218
{"access_token": "token", "expires_in": 500, "extra": "data"}
219219
)
220220

221-
token, expiry, extra_data = await _client.jwt_grant(
222-
request, "http://example.com", "assertion_value"
223-
)
221+
with freezegun.freeze_time("2020-01-01 00:00:00"):
222+
token, expiry, extra_data = await _client.jwt_grant(
223+
request, "http://example.com", "assertion_value"
224+
)
224225

225-
# Check request call
226-
verify_request_params(
227-
request,
228-
{"grant_type": sync_client._JWT_GRANT_TYPE, "assertion": "assertion_value"},
229-
)
226+
# Check request call
227+
verify_request_params(
228+
request,
229+
{"grant_type": sync_client._JWT_GRANT_TYPE, "assertion": "assertion_value"},
230+
)
230231

231-
# Check result
232-
assert token == "token"
233-
assert expiry == utcnow() + datetime.timedelta(seconds=500)
234-
assert extra_data["extra"] == "data"
232+
# Check result
233+
assert token == "token"
234+
assert expiry == datetime.datetime(2020, 1, 1) + datetime.timedelta(seconds=500)
235+
assert extra_data["extra"] == "data"
235236

236237

237238
@pytest.mark.asyncio
@@ -292,8 +293,7 @@ async def test_id_token_jwt_grant_no_access_token():
292293

293294

294295
@pytest.mark.asyncio
295-
@mock.patch("google.auth._helpers.utcnow", return_value=datetime.datetime.min)
296-
async def test_refresh_grant(unused_utcnow):
296+
async def test_refresh_grant():
297297
request = make_request(
298298
{
299299
"access_token": "token",
@@ -303,37 +303,37 @@ async def test_refresh_grant(unused_utcnow):
303303
}
304304
)
305305

306-
token, refresh_token, expiry, extra_data = await _client.refresh_grant(
307-
request,
308-
"http://example.com",
309-
"refresh_token",
310-
"client_id",
311-
"client_secret",
312-
rapt_token="rapt_token",
313-
)
306+
with freezegun.freeze_time("2020-01-01 00:00:00"):
307+
token, refresh_token, expiry, extra_data = await _client.refresh_grant(
308+
request,
309+
"http://example.com",
310+
"refresh_token",
311+
"client_id",
312+
"client_secret",
313+
rapt_token="rapt_token",
314+
)
314315

315-
# Check request call
316-
verify_request_params(
317-
request,
318-
{
319-
"grant_type": sync_client._REFRESH_GRANT_TYPE,
320-
"refresh_token": "refresh_token",
321-
"client_id": "client_id",
322-
"client_secret": "client_secret",
323-
"rapt": "rapt_token",
324-
},
325-
)
316+
# Check request call
317+
verify_request_params(
318+
request,
319+
{
320+
"grant_type": sync_client._REFRESH_GRANT_TYPE,
321+
"refresh_token": "refresh_token",
322+
"client_id": "client_id",
323+
"client_secret": "client_secret",
324+
"rapt": "rapt_token",
325+
},
326+
)
326327

327-
# Check result
328-
assert token == "token"
329-
assert refresh_token == "new_refresh_token"
330-
assert expiry == datetime.datetime.min + datetime.timedelta(seconds=500)
331-
assert extra_data["extra"] == "data"
328+
# Check result
329+
assert token == "token"
330+
assert refresh_token == "new_refresh_token"
331+
assert expiry == datetime.datetime(2020, 1, 1) + datetime.timedelta(seconds=500)
332+
assert extra_data["extra"] == "data"
332333

333334

334335
@pytest.mark.asyncio
335-
@mock.patch("google.auth._helpers.utcnow", return_value=datetime.datetime.min)
336-
async def test_refresh_grant_with_scopes(unused_utcnow):
336+
async def test_refresh_grant_with_scopes():
337337
request = make_request(
338338
{
339339
"access_token": "token",
@@ -344,32 +344,33 @@ async def test_refresh_grant_with_scopes(unused_utcnow):
344344
}
345345
)
346346

347-
token, refresh_token, expiry, extra_data = await _client.refresh_grant(
348-
request,
349-
"http://example.com",
350-
"refresh_token",
351-
"client_id",
352-
"client_secret",
353-
test_client.SCOPES_AS_LIST,
354-
)
347+
with freezegun.freeze_time("2020-01-01 00:00:00"):
348+
token, refresh_token, expiry, extra_data = await _client.refresh_grant(
349+
request,
350+
"http://example.com",
351+
"refresh_token",
352+
"client_id",
353+
"client_secret",
354+
test_client.SCOPES_AS_LIST,
355+
)
355356

356-
# Check request call.
357-
verify_request_params(
358-
request,
359-
{
360-
"grant_type": sync_client._REFRESH_GRANT_TYPE,
361-
"refresh_token": "refresh_token",
362-
"client_id": "client_id",
363-
"client_secret": "client_secret",
364-
"scope": test_client.SCOPES_AS_STRING,
365-
},
366-
)
357+
# Check request call.
358+
verify_request_params(
359+
request,
360+
{
361+
"grant_type": sync_client._REFRESH_GRANT_TYPE,
362+
"refresh_token": "refresh_token",
363+
"client_id": "client_id",
364+
"client_secret": "client_secret",
365+
"scope": test_client.SCOPES_AS_STRING,
366+
},
367+
)
367368

368-
# Check result.
369-
assert token == "token"
370-
assert refresh_token == "new_refresh_token"
371-
assert expiry == datetime.datetime.min + datetime.timedelta(seconds=500)
372-
assert extra_data["extra"] == "data"
369+
# Check result.
370+
assert token == "token"
371+
assert refresh_token == "new_refresh_token"
372+
assert expiry == datetime.datetime(2020, 1, 1) + datetime.timedelta(seconds=500)
373+
assert extra_data["extra"] == "data"
373374

374375

375376
@pytest.mark.asyncio
@@ -390,11 +391,19 @@ async def test_refresh_grant_no_access_token():
390391
assert not excinfo.value.retryable
391392

392393

394+
def create_async_mock():
395+
m = mock.Mock()
396+
async def async_response(*args, **kwargs):
397+
return mock.Mock()
398+
m.side_effect = async_response
399+
return m
400+
401+
393402
@pytest.mark.asyncio
394403
@mock.patch("google.oauth2._client._parse_expiry", return_value=None)
395404
@mock.patch.object(_client, "_token_endpoint_request", autospec=True)
396405
async def test_jwt_grant_retry_default(mock_token_endpoint_request, mock_expiry):
397-
_ = await _client.jwt_grant(mock.Mock(), mock.Mock(), mock.Mock())
406+
_ = await _client.jwt_grant(create_async_mock(), mock.Mock(), mock.Mock())
398407
mock_token_endpoint_request.assert_called_with(
399408
mock.ANY, mock.ANY, mock.ANY, can_retry=True
400409
)
@@ -408,7 +417,7 @@ async def test_jwt_grant_retry_with_retry(
408417
mock_token_endpoint_request, mock_expiry, can_retry
409418
):
410419
_ = await _client.jwt_grant(
411-
AsyncMock(), mock.Mock(), mock.Mock(), can_retry=can_retry
420+
create_async_mock(), mock.Mock(), mock.Mock(), can_retry=can_retry
412421
)
413422
mock_token_endpoint_request.assert_called_with(
414423
mock.ANY, mock.ANY, mock.ANY, can_retry=can_retry
@@ -421,7 +430,7 @@ async def test_jwt_grant_retry_with_retry(
421430
async def test_id_token_jwt_grant_retry_default(
422431
mock_token_endpoint_request, mock_jwt_decode
423432
):
424-
_ = await _client.id_token_jwt_grant(mock.Mock(), mock.Mock(), mock.Mock())
433+
_ = await _client.id_token_jwt_grant(create_async_mock(), mock.Mock(), mock.Mock())
425434
mock_token_endpoint_request.assert_called_with(
426435
mock.ANY, mock.ANY, mock.ANY, can_retry=True
427436
)
@@ -435,7 +444,7 @@ async def test_id_token_jwt_grant_retry_with_retry(
435444
mock_token_endpoint_request, mock_jwt_decode, can_retry
436445
):
437446
_ = await _client.id_token_jwt_grant(
438-
AsyncMock(), AsyncMock(), AsyncMock(), can_retry=can_retry
447+
create_async_mock(), AsyncMock(), AsyncMock(), can_retry=can_retry
439448
)
440449
mock_token_endpoint_request.assert_called_with(
441450
mock.ANY, mock.ANY, mock.ANY, can_retry=can_retry

tests_async/oauth2/test_credentials_async.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def test_default_state(self):
6363
assert credentials.client_id == self.CLIENT_ID
6464
assert credentials.client_secret == self.CLIENT_SECRET
6565

66-
@mock.patch("google.oauth2._reauth_async.refresh_grant", autospec=True)
66+
@mock.patch("google.oauth2._credentials_async.reauth.refresh_grant")
6767
@mock.patch(
6868
"google.auth._helpers.utcnow",
6969
return_value=datetime.datetime.min + _helpers.REFRESH_THRESHOLD,
@@ -125,7 +125,7 @@ async def test_refresh_no_refresh_token(self):
125125

126126
request.assert_not_called()
127127

128-
@mock.patch("google.oauth2._reauth_async.refresh_grant", autospec=True)
128+
@mock.patch("google.oauth2._credentials_async.reauth.refresh_grant")
129129
@mock.patch(
130130
"google.auth._helpers.utcnow",
131131
return_value=datetime.datetime.min + _helpers.REFRESH_THRESHOLD,
@@ -189,7 +189,7 @@ async def test_credentials_with_scopes_requested_refresh_success(
189189
# expired.)
190190
assert creds.valid
191191

192-
@mock.patch("google.oauth2._reauth_async.refresh_grant", autospec=True)
192+
@mock.patch("google.oauth2._credentials_async.reauth.refresh_grant")
193193
@mock.patch(
194194
"google.auth._helpers.utcnow",
195195
return_value=datetime.datetime.min + _helpers.REFRESH_THRESHOLD,
@@ -252,7 +252,7 @@ async def test_credentials_with_scopes_returned_refresh_success(
252252
# expired.)
253253
assert creds.valid
254254

255-
@mock.patch("google.oauth2._reauth_async.refresh_grant", autospec=True)
255+
@mock.patch("google.oauth2._credentials_async.reauth.refresh_grant")
256256
@mock.patch(
257257
"google.auth._helpers.utcnow",
258258
return_value=datetime.datetime.min + _helpers.REFRESH_THRESHOLD,

0 commit comments

Comments
 (0)