def test_authorize_token_url_with_scope(self): # authorize_token_url calls oauth and returns a URL fb = FitBark(**self.client_kwargs) retval = fb.client.authorize_token_url(scope=self.client_kwargs['scope']) self.assertEqual(retval[0], 'https://app.fitbark.com/oauth/authorize?response_type=code&client_id=fake_id&redirect_uri=http%3A%2F%2F127.0.0.1%3A8080&state=' + retval[1])
def test_fetch_access_token(self): # tests the fetching of access token using code and redirect_URL fb = FitBark(**self.client_kwargs) fake_code = "fake_code" with requests_mock.mock() as m: m.post(fb.client.access_token_url, text=json.dumps({ 'access_token': 'fake_return_access_token', 'refresh_token': 'fake_return_refresh_token' })) retval = fb.client.fetch_access_token(fake_code) self.assertEqual("fake_return_access_token", retval['access_token']) self.assertEqual("fake_return_refresh_token", retval['refresh_token'])
def test_refresh_token(self): # test of refresh function kwargs = copy.copy(self.client_kwargs) kwargs['access_token'] = 'fake_access_token' kwargs['refresh_token'] = 'fake_refresh_token' kwargs['refresh_cb'] = lambda x: None fb = FitBark(**kwargs) with requests_mock.mock() as m: m.post(fb.client.refresh_token_url, text=json.dumps({ 'access_token': 'fake_return_access_token', 'refresh_token': 'fake_return_refresh_token' })) retval = fb.client.refresh_token() self.assertEqual("fake_return_access_token", retval['access_token']) self.assertEqual("fake_return_refresh_token", retval['refresh_token'])
def test_auto_refresh_token_exception(self): """Test of auto_refresh with Unauthorized exception""" # 1. first call to _request causes a HTTPUnauthorized # 2. the token_refresh call is faked # 3. the second call to _request returns a valid value refresh_cb = mock.MagicMock() kwargs = copy.copy(self.client_kwargs) kwargs.update({ 'access_token': 'fake_access_token', 'refresh_token': 'fake_refresh_token', 'refresh_cb': refresh_cb, }) fb = FitBark(**kwargs) profile_url = FitBark.API_ENDPOINT + '/v2/user' with requests_mock.mock() as m: m.get(profile_url, [{ 'text': json.dumps({ "errors": [{ "errorType": "expired_token", "message": "Access token expired:" }] }), 'status_code': 401 }, { 'text': '{"user":{"name": "python-fitbark developer"}}', 'status_code': 200 }]) token = { 'access_token': 'fake_return_access_token', 'refresh_token': 'fake_return_refresh_token' } m.post(fb.client.refresh_token_url, text=json.dumps(token)) retval = fb.make_request(profile_url) self.assertEqual(m.request_history[1].path, '/oauth/token') self.assertEqual( m.request_history[1].headers['Authorization'], _basic_auth_str( self.client_kwargs['client_id'], self.client_kwargs['client_secret'] ) ) self.assertEqual(retval['user']['name'], "python-fitbark developer") self.assertEqual("fake_return_access_token", token['access_token']) self.assertEqual("fake_return_refresh_token", token['refresh_token']) refresh_cb.assert_called_once_with(token)
def test_auto_refresh_error(self): """Test of auto_refresh with expired refresh token""" refresh_cb = mock.MagicMock() kwargs = copy.copy(self.client_kwargs) kwargs.update({ 'access_token': 'fake_access_token', 'refresh_token': 'fake_refresh_token', 'refresh_cb': refresh_cb, }) fb = FitBark(**kwargs) with requests_mock.mock() as m: response = { "error": "invalid_grant", "success": False } m.post(fb.client.refresh_token_url, json=response, status_code=400) self.assertRaises(InvalidGrantError, fb.client.refresh_token)
def setUp(self): self.fb = FitBark('x', 'y') self.fb_timeout = FitBark('x', 'y', timeout=10) self.test_url = 'invalid://do.not.connect'
def setUp(self): self.fb = FitBark('x', 'y')