def test_auto_refresh_token_exception(self):
# test of auto_refresh with tokenExpired exception
# 1. first call to _request causes a TokenExpired
# 2. the token_refresh call is faked
# 3. the second call to _request returns a valid value
kwargs = self.client_kwargs
kwargs['access_token'] = 'fake_access_token'
kwargs['refresh_token'] = 'fake_refresh_token'
fb = Fitbit(**kwargs)
with mock.patch.object(FitbitOauth2Client, '_request') as r:
r.side_effect = [TokenExpiredError, fake_response(200,'correct_response')]
with mock.patch.object(OAuth2Session, 'refresh_token') as rt:
rt.return_value = {
'access_token': 'fake_return_access_token',
'refresh_token': 'fake_return_refresh_token'
}
retval = fb.client.make_request(Fitbit.API_ENDPOINT + '/1/user/-/profile.json')
self.assertEqual("correct_response", retval.text)
self.assertEqual("fake_return_access_token", fb.client.token['access_token'])
self.assertEqual("fake_return_refresh_token", fb.client.token['refresh_token'])
self.assertEqual(1, rt.call_count)
self.assertEqual(2, r.call_count)
评论列表
文章目录