diff --git a/bigchaindb/web/views/base.py b/bigchaindb/web/views/base.py index 52cbc0ef..107b025c 100644 --- a/bigchaindb/web/views/base.py +++ b/bigchaindb/web/views/base.py @@ -3,7 +3,7 @@ Common classes and methods for API handlers """ import logging -from flask import jsonify +from flask import jsonify, request from bigchaindb import config @@ -14,8 +14,13 @@ logger = logging.getLogger(__name__) def make_error(status_code, message=None): if status_code == 404 and message is None: message = 'Not found' + response_content = {'status': status_code, 'message': message} - logger.error('HTTP API error: %(status)s - %(message)s', response_content) + request_info = {'method': request.method, 'path': request.path} + request_info.update(response_content) + + logger.error('HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s', request_info) + response = jsonify(response_content) response.status_code = status_code return response diff --git a/tests/web/test_transactions.py b/tests/web/test_transactions.py index 03eaaa3e..acea8c2c 100644 --- a/tests/web/test_transactions.py +++ b/tests/web/test_transactions.py @@ -67,12 +67,14 @@ def test_post_create_transaction_with_invalid_id(mock_logger, b, client): assert res.json['message'] == expected_error_message assert mock_logger.error.called assert ( - 'HTTP API error: %(status)s - %(message)s' in + 'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in mock_logger.error.call_args[0] ) assert ( - {'message': expected_error_message, 'status': expected_status_code} in - mock_logger.error.call_args[0] + { + 'message': expected_error_message, 'status': expected_status_code, + 'method': 'POST', 'path': TX_ENDPOINT + } in mock_logger.error.call_args[0] ) # TODO put back caplog based asserts once possible # assert caplog.records[0].args['status'] == expected_status_code @@ -101,12 +103,14 @@ def test_post_create_transaction_with_invalid_signature(mock_logger, assert res.json['message'] == expected_error_message assert mock_logger.error.called assert ( - 'HTTP API error: %(status)s - %(message)s' in + 'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in mock_logger.error.call_args[0] ) assert ( - {'message': expected_error_message, 'status': expected_status_code} in - mock_logger.error.call_args[0] + { + 'message': expected_error_message, 'status': expected_status_code, + 'method': 'POST', 'path': TX_ENDPOINT + } in mock_logger.error.call_args[0] ) # TODO put back caplog based asserts once possible # assert caplog.records[0].args['status'] == expected_status_code @@ -133,12 +137,14 @@ def test_post_create_transaction_with_invalid_schema(mock_logger, client): assert res.json['message'] == expected_error_message assert mock_logger.error.called assert ( - 'HTTP API error: %(status)s - %(message)s' in + 'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in mock_logger.error.call_args[0] ) assert ( - {'message': expected_error_message, 'status': expected_status_code} in - mock_logger.error.call_args[0] + { + 'message': expected_error_message, 'status': expected_status_code, + 'method': 'POST', 'path': TX_ENDPOINT + } in mock_logger.error.call_args[0] ) # TODO put back caplog based asserts once possible # assert caplog.records[0].args['status'] == expected_status_code @@ -176,12 +182,14 @@ def test_post_invalid_transaction(mock_logger, client, exc, msg, monkeypatch,): 'Invalid transaction ({}): {}'.format(exc, msg)) assert mock_logger.error.called assert ( - 'HTTP API error: %(status)s - %(message)s' in + 'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in mock_logger.error.call_args[0] ) assert ( - {'message': expected_error_message, 'status': expected_status_code} in - mock_logger.error.call_args[0] + { + 'message': expected_error_message, 'status': expected_status_code, + 'method': 'POST', 'path': TX_ENDPOINT + } in mock_logger.error.call_args[0] ) # TODO put back caplog based asserts once possible # assert caplog.records[2].args['status'] == expected_status_code