From 037cc88061791a638b41398dc35b1dd5b2a18521 Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Tue, 26 Mar 2019 13:48:20 +0100 Subject: [PATCH 01/11] Improve logging robustness Do not pretty print a JSON object when serialization or serialization fail, for details see #103. --- .../mock_service/request_handlers/interaction_replay.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pact/mock_service/request_handlers/interaction_replay.rb b/lib/pact/mock_service/request_handlers/interaction_replay.rb index 09986ab..073dc5c 100644 --- a/lib/pact/mock_service/request_handlers/interaction_replay.rb +++ b/lib/pact/mock_service/request_handlers/interaction_replay.rb @@ -13,7 +13,11 @@ module RequestHandlers module PrettyGenerate #Doesn't seem to reliably pretty generate unless we go to JSON and back again :( def pretty_generate object - JSON.pretty_generate(JSON.parse(object.to_json)) + begin + JSON.pretty_generate(JSON.parse(object.to_json)) + rescue JSON::ParserError + object + end end end From aab8a5d634b026112f6c4bd7e30bdfa60a0f9e1a Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Fri, 29 Mar 2019 09:47:31 +0100 Subject: [PATCH 02/11] Update interaction_replay.rb --- lib/pact/mock_service/request_handlers/interaction_replay.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pact/mock_service/request_handlers/interaction_replay.rb b/lib/pact/mock_service/request_handlers/interaction_replay.rb index 073dc5c..e0c1461 100644 --- a/lib/pact/mock_service/request_handlers/interaction_replay.rb +++ b/lib/pact/mock_service/request_handlers/interaction_replay.rb @@ -15,7 +15,7 @@ module PrettyGenerate def pretty_generate object begin JSON.pretty_generate(JSON.parse(object.to_json)) - rescue JSON::ParserError + rescue object end end From 996a9ccc8b9145a68d681b11039576448d6c1d4b Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Thu, 4 Apr 2019 14:23:47 +0200 Subject: [PATCH 03/11] Initial version of the unit test --- .../request_handlers/interaction_replay_spec.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index 3bb5677..422727b 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -175,6 +175,14 @@ module RequestHandlers expect(verified_interactions.size).to eq 0 end end + + context "when the body contains special charachters" do + let(:actual_body) { '\xEB' } + + it "returns the specified response status" do + expect(response_status).to eq 200 + end + end end end end From 4c5792ac13824ab86c628e50b6253ce029161eaa Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Thu, 4 Apr 2019 14:28:44 +0200 Subject: [PATCH 04/11] Move the test to appropriate context --- .../request_handlers/interaction_replay_spec.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index 422727b..f042962 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -143,6 +143,14 @@ module RequestHandlers end end end + + context "when the body contains special charachters" do + let(:actual_body) { '\xEB' } + + it "returns the specified response status" do + expect(response_status).to eq 200 + end + end end context "when no request is found with a matching method and path" do @@ -175,14 +183,6 @@ module RequestHandlers expect(verified_interactions.size).to eq 0 end end - - context "when the body contains special charachters" do - let(:actual_body) { '\xEB' } - - it "returns the specified response status" do - expect(response_status).to eq 200 - end - end end end end From a30ebe430dec03359091122c8557e7fb11ef265a Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Thu, 4 Apr 2019 14:54:41 +0200 Subject: [PATCH 05/11] Update interaction_replay_spec.rb --- .../mock_service/request_handlers/interaction_replay_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index f042962..1281152 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -146,6 +146,7 @@ module RequestHandlers context "when the body contains special charachters" do let(:actual_body) { '\xEB' } + let(:expected_response_body) { '\xEB' } it "returns the specified response status" do expect(response_status).to eq 200 From 2695cd8f807d00df927addd5f099deb3f079ecf4 Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Thu, 4 Apr 2019 15:12:43 +0200 Subject: [PATCH 06/11] Update interaction_replay_spec.rb --- .../mock_service/request_handlers/interaction_replay_spec.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index 1281152..e3a47ad 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -145,9 +145,6 @@ module RequestHandlers end context "when the body contains special charachters" do - let(:actual_body) { '\xEB' } - let(:expected_response_body) { '\xEB' } - it "returns the specified response status" do expect(response_status).to eq 200 end From f607a4371e612563c0c908fd25d881d63dcb9c62 Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Thu, 4 Apr 2019 15:48:43 +0200 Subject: [PATCH 07/11] Update interaction_replay_spec.rb --- .../mock_service/request_handlers/interaction_replay_spec.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index e3a47ad..6c0f6d7 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -145,6 +145,9 @@ module RequestHandlers end context "when the body contains special charachters" do + let(:actual_body) { '\xEB' } + let(:expected_request_body) { '\xEB' } + it "returns the specified response status" do expect(response_status).to eq 200 end From b86d6dfaba7c2ef66b91b294b9cbd4f16f6a4f1b Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Thu, 4 Apr 2019 16:33:33 +0200 Subject: [PATCH 08/11] Update interaction_replay_spec.rb --- .../request_handlers/interaction_replay_spec.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index 6c0f6d7..92ae780 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -146,7 +146,14 @@ module RequestHandlers context "when the body contains special charachters" do let(:actual_body) { '\xEB' } - let(:expected_request_body) { '\xEB' } + let(:env) do + { + 'REQUEST_METHOD' => 'GET', + 'PATH_INFO' => '/path', + 'QUERY_STRING' => '', + 'rack.input' => double(read: actual_body) + } + end it "returns the specified response status" do expect(response_status).to eq 200 From 2524cdb6955827449d33fbb96e14d86a4399eef7 Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Tue, 9 Apr 2019 10:50:45 +0200 Subject: [PATCH 09/11] Update interaction_replay.rb --- lib/pact/mock_service/request_handlers/interaction_replay.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pact/mock_service/request_handlers/interaction_replay.rb b/lib/pact/mock_service/request_handlers/interaction_replay.rb index e0c1461..0e201d3 100644 --- a/lib/pact/mock_service/request_handlers/interaction_replay.rb +++ b/lib/pact/mock_service/request_handlers/interaction_replay.rb @@ -16,7 +16,7 @@ def pretty_generate object begin JSON.pretty_generate(JSON.parse(object.to_json)) rescue - object + object.to_s end end end From b9916a690a44dc0550f194288d72ee4d66822a5f Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Tue, 9 Apr 2019 10:57:16 +0200 Subject: [PATCH 10/11] Update interaction_replay_spec.rb --- .../request_handlers/interaction_replay_spec.rb | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index 92ae780..52f0123 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -146,17 +146,9 @@ module RequestHandlers context "when the body contains special charachters" do let(:actual_body) { '\xEB' } - let(:env) do - { - 'REQUEST_METHOD' => 'GET', - 'PATH_INFO' => '/path', - 'QUERY_STRING' => '', - 'rack.input' => double(read: actual_body) - } - end - it "returns the specified response status" do - expect(response_status).to eq 200 + expect(response_status).to eq 500 + expect(response_body).to include "No interaction found for " end end end From e3cd33f2c3d900384f2af866b31194862fef406d Mon Sep 17 00:00:00 2001 From: Alexander Bolshakov Date: Tue, 9 Apr 2019 12:18:38 +0200 Subject: [PATCH 11/11] Update interaction_replay_spec.rb --- .../request_handlers/interaction_replay_spec.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb index 52f0123..dbd116e 100644 --- a/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb +++ b/spec/lib/pact/mock_service/request_handlers/interaction_replay_spec.rb @@ -146,9 +146,13 @@ module RequestHandlers context "when the body contains special charachters" do let(:actual_body) { '\xEB' } + + let(:expected_response_body) do + {"message"=>"No interaction found for GET /path", "interaction_diffs"=>[{"body"=>{"ACTUAL"=>"\\xEB", "EXPECTED"=>{"a"=>"body"}}, "description"=>"a request"}]} + end + it "returns the specified response status" do expect(response_status).to eq 500 - expect(response_body).to include "No interaction found for " end end end