File tree 3 files changed +17
-7
lines changed
spec/lib/pact_broker/api/resources
3 files changed +17
-7
lines changed Original file line number Diff line number Diff line change @@ -9,15 +9,22 @@ class ErrorHandler
9
9
include PactBroker ::Logging
10
10
11
11
def self . call e , request , response
12
- error_reference = SecureRandom . urlsafe_base64 . gsub ( /[^a-z]/i , '' ) [ 0 , 10 ]
13
- logger . error "#{ e . message } - error reference #{ error_reference } "
14
- logger . error e . backtrace
12
+ error_reference = generate_error_reference
13
+ if reportable? ( e )
14
+ log_error ( e , "Error reference #{ error_reference } " )
15
+ report ( e , error_reference , request )
16
+ else
17
+ logger . info "Error reference #{ error_reference } - #{ e . class } #{ e . message } \n #{ e . backtrace . join ( "\n " ) } "
18
+ end
15
19
response . body = response_body_hash ( e , error_reference ) . to_json
16
- report ( e , error_reference , request ) if reportable? ( e )
17
20
end
18
21
19
- def self . reportable? e
20
- !e . is_a? ( PactBroker ::Error )
22
+ def self . generate_error_reference
23
+ SecureRandom . urlsafe_base64 . gsub ( /[^a-z]/i , '' ) [ 0 , 10 ]
24
+ end
25
+
26
+ def self . reportable? ( e )
27
+ !e . is_a? ( PactBroker ::Error ) && !e . is_a? ( JSON ::GeneratorError )
21
28
end
22
29
23
30
def self . display_message ( e , error_reference )
Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ def logger=(logger)
32
32
end
33
33
34
34
def log_error e , description = nil
35
- message = "#{ e . class } #{ e . message } #{ e . backtrace . join ( "\n " ) } "
35
+ message = "#{ e . class } #{ e . message } \n #{ e . backtrace . join ( "\n " ) } "
36
36
message = "#{ description } - #{ message } " if description
37
37
logger . error message
38
38
end
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ module Resources
9
9
before do
10
10
allow ( ErrorHandler ) . to receive ( :logger ) . and_return ( logger )
11
11
allow ( SecureRandom ) . to receive ( :urlsafe_base64 ) . and_return ( "bYWfn-+yWPlf" )
12
+ allow ( error ) . to receive ( :backtrace ) . and_return ( [ "backtrace" ] )
12
13
end
13
14
14
15
let ( :logger ) { double ( 'logger' ) . as_null_object }
@@ -71,6 +72,7 @@ module Resources
71
72
subject
72
73
end
73
74
end
75
+
74
76
context "when the error is not a PactBroker::Error or subclass" do
75
77
it "invokes the api error reporters" do
76
78
expect ( thing ) . to receive ( :call ) . with ( error , options )
@@ -120,6 +122,7 @@ module Resources
120
122
subject
121
123
end
122
124
end
125
+
123
126
context "when the error is not a PactBroker::Error or subclass" do
124
127
it "invokes the api error reporters" do
125
128
expect ( thing ) . to receive ( :call ) . with ( error , options )
You can’t perform that action at this time.
0 commit comments