예제 #1
0
    def setUp(self):
        self.end_point = 'http://endpoint/token'
        self.client_id = 'client_id'
        self.client_secret = 'client_secret'

        self.manager = TokenManager(self.end_point,
                                    self.client_id,
                                    self.client_secret)
예제 #2
0
    def test_should_have_token_request_timeout(self, post):
        post.return_value.json.return_value = {}
        manager = TokenManager(self.END_POINT,
                               self.CLIENT_ID,
                               self.CLIENT_SECRET,
                               token_request_params={'timeout': 5})

        manager._request_token()

        post.assert_called_with(self.END_POINT,
                                timeout=5,
                                data={'grant_type': 'client_credentials'},
                                auth=(self.CLIENT_ID, self.CLIENT_SECRET))
예제 #3
0
    def test_should_have_token_request_timeout(self, post):
        post.return_value.json.return_value = {}
        manager = TokenManager(
            self.END_POINT, self.CLIENT_ID, self.CLIENT_SECRET,
            token_request_params={
                'timeout': 5
            }
        )

        manager._request_token()

        post.assert_called_with(self.END_POINT,
                                timeout=5,
                                data={'grant_type': 'client_credentials'},
                                auth=(self.CLIENT_ID, self.CLIENT_SECRET))
예제 #4
0
    def test_should_start_with_no_token(self):
        with patch('alf.managers.mount_retry_adapter') as self.mount_adapter:
            self.manager = TokenManager(self.END_POINT,
                                        self.CLIENT_ID,
                                        self.CLIENT_SECRET,
                                        token_retries=44)

        self.mount_adapter.assert_called_once_with(self.manager._session, 44)
예제 #5
0
 def setUp(self):
     with patch('alf.managers.mount_retry_adapter') as self.mount_adapter:
         self.manager = TokenManager(
             self.END_POINT, self.CLIENT_ID, self.CLIENT_SECRET)
예제 #6
0
class TokenManagerTestCase(BaseTokenManagerTestCase):

    def setUp(self):
        with patch('alf.managers.mount_retry_adapter') as self.mount_adapter:
            self.manager = TokenManager(
                self.END_POINT, self.CLIENT_ID, self.CLIENT_SECRET)

    def test_should_start_with_no_token(self):
        self.assertFalse(self.manager._has_token())

    def test_should_NOT_setup_token_retries_by_default(self):
        self.assertEqual(self.mount_adapter.call_count, 0)

    def test_should_detect_expired_token(self):
        self.manager._token = Token('', expires_on=Token.calc_expires_on(0))
        self.assertFalse(self.manager._has_token())

    def test_should_respect_valid_token(self):
        self.manager._token = Token('', expires_on=Token.calc_expires_on(10))
        self.assertTrue(self.manager._has_token())

    @freeze_time("2015-01-01 10:00:00.117153")
    def test_should_reset_token(self):
        self.manager.reset_token()

        self.assertEqual(self.manager._token.access_token, '')
        self.assertEqual(self.manager._token.expires_on,
                         Token.calc_expires_on(0))

    @patch('requests.Session.post')
    def test_should_be_able_to_request_a_new_token(self, post):
        post.return_value.json.return_value = {
            'access_token': 'accesstoken',
            'expires_on': Token.calc_expires_on(10),
        }

        self.manager._request_token()

        post.assert_called_with(self.END_POINT,
                                timeout=None,
                                data={'grant_type': 'client_credentials'},
                                auth=(self.CLIENT_ID, self.CLIENT_SECRET))

    @patch('requests.Session.post')
    def test_should_have_token_request_timeout(self, post):
        post.return_value.json.return_value = {}
        manager = TokenManager(
            self.END_POINT, self.CLIENT_ID, self.CLIENT_SECRET,
            token_request_params={
                'timeout': 5
            }
        )

        manager._request_token()

        post.assert_called_with(self.END_POINT,
                                timeout=5,
                                data={'grant_type': 'client_credentials'},
                                auth=(self.CLIENT_ID, self.CLIENT_SECRET))

    @patch('requests.Session.post')
    def test_should_raise_token_error_for_bad_token(self, post):
        post.return_value = Mock()
        post.return_value.ok = False
        post.return_value.status_code = 500

        with self.assertRaises(TokenError) as context:
            self.manager._request_token()

        self.assertEqual(context.exception.response.status_code, 500)

    @patch('alf.managers.TokenManager._request_token')
    def test_get_token_data_should_obtain_new_token(self, _request_token):
        self.manager.reset_token()

        self.manager._get_token_data()

        self.assertTrue(_request_token.called)

    @patch('alf.managers.TokenManager._request_token')
    @freeze_time("2015-01-01 10:00:00.117153")
    def test_update_token_should_set_a_token_with_data_retrieved(self, _request_token):
        self.manager.reset_token()
        expires = 100
        _request_token.return_value = {'access_token': 'new_access_token',
                                       'expires_in': expires}

        self.manager._token = Token('access_token',
                                    expires_on=0)

        self.manager._update_token()

        self.assertTrue(_request_token.called)

        self.assertEqual(self.manager._token.access_token, 'new_access_token')
        self.assertEqual(self.manager._token.expires_on, Token.calc_expires_on(expires))

    @patch('alf.managers.TokenManager._request_token')
    def test_update_token_should_set_a_token_with_data_retrieved_from_storage(self, _request_token):
        expires = Token.calc_expires_on(100)
        _request_token.return_value = dict()

        self.manager._token = Token('new_access_token',
                                    expires_on=expires)

        self.manager._token_storage(self.manager._token)

        self.manager._update_token()

        self.assertFalse(_request_token.called)

        self.assertEqual(self.manager._token.access_token, 'new_access_token')
        self.assertEqual(self.manager._token.expires_on, expires)

    def test_should_return_token_value(self):
        self.manager._token = Token('access_token', expires_on=Token.calc_expires_on(10))
        self.assertEqual(self.manager.get_token(), 'access_token')

    @patch('alf.managers.TokenManager._update_token')
    @patch('alf.managers.TokenManager._has_token')
    def test_get_token_should_request_a_new_token_if_do_not_have_a_token(self, _has_token, _update_token):
        _has_token.return_value = False

        self.manager.get_token()

        self.assertTrue(_update_token.called)
예제 #7
0
 def setUp(self):
     with patch('alf.managers.mount_retry_adapter') as self.mount_adapter:
         self.manager = TokenManager(self.END_POINT, self.CLIENT_ID,
                                     self.CLIENT_SECRET)
예제 #8
0
class TokenManagerTestCase(BaseTokenManagerTestCase):
    def setUp(self):
        with patch('alf.managers.mount_retry_adapter') as self.mount_adapter:
            self.manager = TokenManager(self.END_POINT, self.CLIENT_ID,
                                        self.CLIENT_SECRET)

    def test_should_start_with_no_token(self):
        self.assertFalse(self.manager._has_token())

    def test_should_define_right_base_key_to_token_storage(self):
        self.assertEqual('{}_{}'.format(self.END_POINT, self.CLIENT_ID),
                         self.manager._token_storage._base_key)

    def test_should_NOT_setup_token_retries_by_default(self):
        self.assertEqual(self.mount_adapter.call_count, 0)

    def test_should_detect_expired_token(self):
        self.manager._token = Token('', expires_on=Token.calc_expires_on(0))
        self.assertFalse(self.manager._has_token())

    def test_should_respect_valid_token(self):
        self.manager._token = Token('', expires_on=Token.calc_expires_on(10))
        self.assertTrue(self.manager._has_token())

    @freeze_time("2015-01-01 10:00:00.117153")
    def test_should_reset_token(self):
        self.manager.reset_token()

        self.assertEqual(self.manager._token.access_token, '')
        self.assertEqual(self.manager._token.expires_on,
                         Token.calc_expires_on(0))

    @patch('requests.Session.post')
    def test_should_be_able_to_request_a_new_token(self, post):
        post.return_value.json.return_value = {
            'access_token': 'accesstoken',
            'expires_on': Token.calc_expires_on(10),
        }

        self.manager._request_token()

        post.assert_called_with(self.END_POINT,
                                timeout=None,
                                data={'grant_type': 'client_credentials'},
                                auth=(self.CLIENT_ID, self.CLIENT_SECRET))

    @patch('requests.Session.post')
    def test_should_have_token_request_timeout(self, post):
        post.return_value.json.return_value = {}
        manager = TokenManager(self.END_POINT,
                               self.CLIENT_ID,
                               self.CLIENT_SECRET,
                               token_request_params={'timeout': 5})

        manager._request_token()

        post.assert_called_with(self.END_POINT,
                                timeout=5,
                                data={'grant_type': 'client_credentials'},
                                auth=(self.CLIENT_ID, self.CLIENT_SECRET))

    @patch('requests.Session.post')
    def test_should_raise_token_error_for_bad_token(self, post):
        post.return_value = Mock()
        post.return_value.ok = False
        post.return_value.status_code = 500

        with self.assertRaises(TokenError) as context:
            self.manager._request_token()

        self.assertEqual(context.exception.response.status_code, 500)

    @patch('alf.managers.TokenManager._request_token')
    def test_get_token_data_should_obtain_new_token(self, _request_token):
        self.manager.reset_token()

        self.manager._get_token_data()

        self.assertTrue(_request_token.called)

    @patch('alf.managers.TokenManager._request_token')
    @freeze_time("2015-01-01 10:00:00.117153")
    def test_update_token_should_set_a_token_with_data_retrieved(
            self, _request_token):
        self.manager.reset_token()
        expires = 100
        _request_token.return_value = {
            'access_token': 'new_access_token',
            'expires_in': expires
        }

        self.manager._token = Token('access_token', expires_on=0)

        self.manager._update_token()

        self.assertTrue(_request_token.called)

        self.assertEqual(self.manager._token.access_token, 'new_access_token')
        self.assertEqual(self.manager._token.expires_on,
                         Token.calc_expires_on(expires))

    @patch('alf.managers.TokenManager._request_token')
    def test_update_token_should_set_a_token_with_data_retrieved_from_storage(
            self, _request_token):
        expires = Token.calc_expires_on(100)
        _request_token.return_value = dict()

        self.manager._token = Token('new_access_token', expires_on=expires)

        self.manager._token_storage(self.manager._token)

        self.manager._update_token()

        self.assertFalse(_request_token.called)

        self.assertEqual(self.manager._token.access_token, 'new_access_token')
        self.assertEqual(self.manager._token.expires_on, expires)

    def test_should_return_token_value(self):
        self.manager._token = Token('access_token',
                                    expires_on=Token.calc_expires_on(10))
        self.assertEqual(self.manager.get_token(), 'access_token')

    @patch('alf.managers.TokenManager._update_token')
    @patch('alf.managers.TokenManager._has_token')
    def test_get_token_should_request_a_new_token_if_do_not_have_a_token(
            self, _has_token, _update_token):
        _has_token.return_value = False

        self.manager.get_token()

        self.assertTrue(_update_token.called)
예제 #9
0
class TestTokenManager(TestCase):

    def setUp(self):
        self.end_point = 'http://endpoint/token'
        self.client_id = 'client_id'
        self.client_secret = 'client_secret'

        self.manager = TokenManager(self.end_point,
                                    self.client_id,
                                    self.client_secret)

    def test_should_start_with_no_token(self):
        self.assertFalse(self.manager._has_token())

    def test_should_detect_expired_token(self):
        self.manager._token = Token('', expires_in=0)
        self.assertFalse(self.manager._has_token())

    def test_should_respect_valid_token(self):
        self.manager._token = Token('', expires_in=10)
        self.assertTrue(self.manager._has_token())

    def test_should_reset_token(self):
        self.manager.reset_token()

        self.assertEqual(self.manager._token.access_token, '')
        self.assertEqual(self.manager._token._expires_in, 0)

    @patch('requests.post')
    def test_should_be_able_to_request_a_new_token(self, post):
        post.return_value.json.return_value = {
            'access_token': 'accesstoken',
            'expires_in': 10,
        }

        self.manager._request_token()

        post.assert_called_with(self.end_point,
                                data={'grant_type': 'client_credentials'},
                                auth=(self.client_id, self.client_secret))

    @patch('requests.post')
    def test_should_raise_token_error_for_bad_token(self, post):
        post.return_value = Mock()
        post.return_value.ok = False
        post.return_value.status_code = 500

        with self.assertRaises(TokenError) as context:
            self.manager._request_token()

        self.assertEqual(context.exception.response.status_code, 500)

    @patch('alf.managers.TokenManager._request_token')
    def test_get_token_data_should_obtain_new_token(self, _request_token):
        self.manager._get_token_data()

        self.assertTrue(_request_token.called)

    @patch('alf.managers.TokenManager._request_token')
    def test_update_token_should_set_a_token_with_data_retrieved(self, _request_token):
        _request_token.return_value = {'access_token': 'new_access_token', 'expires_in': 10}
        self.manager._token = Token('access_token', expires_in=100)

        self.manager._update_token()

        self.assertTrue(_request_token.called)

        self.assertEqual(self.manager._token.access_token, 'new_access_token')
        self.assertEqual(self.manager._token._expires_in, 10)

    def test_should_return_token_value(self):
        self.manager._token = Token('access_token', expires_in=10)
        self.assertEqual(self.manager.get_token(), 'access_token')

    @patch('alf.managers.TokenManager._update_token')
    @patch('alf.managers.TokenManager._has_token')
    def test_get_token_should_request_a_new_token_if_do_not_have_a_token(self, _has_token, _update_token):
        _has_token.return_value = False

        self.manager.get_token()

        self.assertTrue(_update_token.called)