def test_get_refresh_token_failure(session: Session): session.access_token_expiration = datetime.utcnow() - timedelta(minutes=1) with requests_mock.Mocker() as m: m.post('http://citrine-testing.fake/api/v1/tokens/refresh', status_code=401) with pytest.raises(UnauthorizedRefreshToken): session.get_resource('/foo')
def session(): session = Session(refresh_token='12345', scheme='http', host='citrine-testing.fake') # Default behavior is to *not* require a refresh - those tests can clear this out # As rule of thumb, we should be using freezegun or similar to never rely on the system clock # for these scenarios, but I thought this is light enough to postpone that for the time being session.access_token_expiration = datetime.utcnow() + timedelta(minutes=3) return session
def test_get_refreshes_token(session: Session): session.access_token_expiration = datetime.utcnow() - timedelta(minutes=1) token_refresh_response = refresh_token(datetime(2019, 3, 14, tzinfo=pytz.utc)) with requests_mock.Mocker() as m: m.post('http://citrine-testing.fake/api/v1/tokens/refresh', json=token_refresh_response) m.get('http://citrine-testing.fake/api/v1/foo', json={'foo': 'bar'}) resp = session.get_resource('/foo') assert {'foo': 'bar'} == resp assert datetime(2019, 3, 14) == session.access_token_expiration