示例#1
0
 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])
示例#2
0
    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)
示例#3
0
class TimeoutTest(TestCase):
    def setUp(self):
        self.fb = FitBark('x', 'y')
        self.fb_timeout = FitBark('x', 'y', timeout=10)

        self.test_url = 'invalid://do.not.connect'

    def test_fb_without_timeout(self):
        with mock.patch.object(self.fb.client.session, 'request') as request:
            mock_response = mock.Mock()
            mock_response.status_code = 200
            mock_response.content = b'{}'
            request.return_value = mock_response
            result = self.fb.make_request(self.test_url)

        request.assert_called_once()
        self.assertNotIn('timeout', request.call_args[1])
        self.assertEqual({}, result)

    def test_fb_with_timeout__timing_out(self):
        with mock.patch.object(self.fb_timeout.client.session,
                               'request') as request:
            request.side_effect = requests.Timeout('Timed out')
            with self.assertRaisesRegex(Timeout, 'Timed out'):
                self.fb_timeout.make_request(self.test_url)

        request.assert_called_once()
        self.assertEqual(10, request.call_args[1]['timeout'])

    def test_fb_with_timeout__not_timing_out(self):
        with mock.patch.object(self.fb_timeout.client.session,
                               'request') as request:
            mock_response = mock.Mock()
            mock_response.status_code = 200
            mock_response.content = b'{}'
            request.return_value = mock_response

            result = self.fb_timeout.make_request(self.test_url)

        request.assert_called_once()
        self.assertEqual(10, request.call_args[1]['timeout'])
        self.assertEqual({}, result)
示例#4
0
 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'])
示例#5
0
 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'])
示例#6
0
    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)
示例#7
0
    def setUp(self):
        self.fb = FitBark('x', 'y')
        self.fb_timeout = FitBark('x', 'y', timeout=10)

        self.test_url = 'invalid://do.not.connect'
示例#8
0
 def setUp(self):
     self.fb = FitBark('x', 'y')