diff --git a/lib/gds_api/json_client.rb b/lib/gds_api/json_client.rb index 8d70fdae..bb87dffc 100644 --- a/lib/gds_api/json_client.rb +++ b/lib/gds_api/json_client.rb @@ -157,7 +157,7 @@ def with_ssl_options(method_params) end def do_request(method, url, params = nil, additional_headers = {}) - loggable = { request_uri: url, start_time: Time.now.to_f } + loggable = { request_uri: url, start_time: Time.now.to_f, govuk_request_id: GdsApi::GovukHeaders.headers[:govuk_request_id] }.compact start_logging = loggable.merge(action: "start") logger.debug start_logging.to_json diff --git a/test/json_client_test.rb b/test/json_client_test.rb index 0bfeb782..0120a8b1 100644 --- a/test/json_client_test.rb +++ b/test/json_client_test.rb @@ -613,6 +613,22 @@ def test_should_use_custom_logger_specified_in_options assert_same client.logger, custom_logger end + def test_should_log_govuk_request_id_when_available + GdsApi::GovukHeaders.set_header(:govuk_request_id, "some-request-id") + custom_logger = mock + client = GdsApi::JsonClient.new(logger: custom_logger) + url = "http://www.example.com/timeout.json" + stub_request(:get, url).to_timeout + + expected_string = "\"govuk_request_id\":\"some-request-id\"" + custom_logger.expects(:debug).with(includes(expected_string)) + custom_logger.expects(:error).with(includes(expected_string)) + + assert_raises do + client.get_json(url) + end + end + def test_should_avoid_content_type_header_on_get_without_body url = "http://some.endpoint/some.json" stub_request(:any, url)