Пример #1
0
    def __init__(self, builder, consumer=None):
        self._client = builder.client
        self._base_url = str(builder.base_url)
        self._converters = list(builder.converters)
        self._auth = builder.auth
        self._consumer = consumer

        if builder.hooks:
            self._session_chain = hooks_.TransactionHookChain(*builder.hooks)
        else:
            self._session_chain = None
Пример #2
0
    def test_delegate_handle_exception(self, transaction_hook_mock):
        class CustomException(Exception):
            pass

        err = CustomException()
        chain = hooks.TransactionHookChain(transaction_hook_mock)

        with pytest.raises(CustomException):
            chain.handle_exception(None, CustomException, err, None)

        transaction_hook_mock.handle_exception.assert_called_with(
            None, CustomException, err, None)
Пример #3
0
    def prepare_request(self, request_builder, execution_builder):
        self._auth(request_builder)
        request_hooks = self._get_request_hooks(request_builder)
        if request_hooks:
            chain = hooks_.TransactionHookChain(*request_hooks)
            chain.audit_request(self._consumer, request_builder)
            self.apply_hooks(execution_builder, chain)
        if self._session_chain:
            self.apply_hooks(execution_builder, self._session_chain)

        execution_builder.with_client(self._client)
        execution_builder.with_io(self._client.io())
        execution_builder.with_template(request_builder.request_template)
Пример #4
0
    def test_delegate_handle_response_multiple(self, mocker):
        # Include one hook that can't handle responses
        mock_response_handler = mocker.Mock()
        mock_request_auditor = mocker.Mock()

        chain = hooks.TransactionHookChain(
            hooks.RequestAuditor(mock_request_auditor),
            hooks.ResponseHandler(mock_response_handler),
            hooks.ResponseHandler(mock_response_handler),
        )
        chain.handle_response("consumer", {})
        assert mock_response_handler.call_count == 2
        assert mock_request_auditor.call_count == 0
Пример #5
0
 def apply_hooks(self, chain, request_builder, sender):
     hook = hooks_.TransactionHookChain(*chain)
     hook.audit_request(self._consumer, request_builder)
     if hook.handle_response is not None:
         sender.add_callback(self._wrap_hook(hook.handle_response))
     sender.add_exception_handler(self._wrap_hook(hook.handle_exception))
Пример #6
0
 def test_delegate_handle_response(self, transaction_hook_mock):
     chain = hooks.TransactionHookChain(transaction_hook_mock)
     chain.handle_response("consumer", {})
     transaction_hook_mock.handle_response.assert_called_with(
         "consumer", {})
Пример #7
0
 def test_delegate_audit_request(self, transaction_hook_mock):
     chain = hooks.TransactionHookChain(transaction_hook_mock)
     chain.audit_request("consumer", "request")
     transaction_hook_mock.audit_request.assert_called_with(
         "consumer", "request")
Пример #8
0
 def test_delegate_handle_exception(self, transaction_hook_mock):
     chain = hooks.TransactionHookChain(transaction_hook_mock)
     chain.handle_exception(None, None, None)
     transaction_hook_mock.handle_exception.assert_called_with(
         None, None, None)
Пример #9
0
 def test_delegate_handle_response_multiple(self, transaction_hook_mock):
     chain = hooks.TransactionHookChain(transaction_hook_mock,
                                        transaction_hook_mock)
     chain.handle_response({})
     transaction_hook_mock.call_count == 2
Пример #10
0
 def test_delegate_audit_request(self, transaction_hook_mock):
     chain = hooks.TransactionHookChain(transaction_hook_mock)
     chain.audit_request("method", "url", {})
     transaction_hook_mock.audit_request.assert_called_with(
         "method", "url", {})
Пример #11
0
 def apply_hooks(chain, request_builder, sender):
     hook = hooks_.TransactionHookChain(*chain)
     hook.audit_request(request_builder)
     if hook.handle_response is not None:
         sender.add_callback(hook.handle_response)
     sender.add_exception_handler(hook.handle_exception)