@@ -37,33 +37,60 @@ func (t *diffTransformer) mostCommonMismatchType(mismatches []jsondiff.JSONMisma
3737
3838func (t * diffTransformer ) process (in EnrichedResults ) (out EnrichedResults , drop bool , err error ) {
3939
40+ mismatches := jsondiff.Mismatches {}
41+
4042 d , err := jsondiff .NewElasticResponseJSONDiff ()
4143 if err != nil {
4244 return in , false , err
4345 }
4446
45- jsonA , err := types .ParseJSON (in .A .Body )
46- if err != nil {
47- in .Mismatch .IsOK = false
48- in .Mismatch .Message = fmt .Sprintf ("failed to parse A response: %v" , err )
49- err = fmt .Errorf ("failed to parse A response: %w" , err )
50- in .Errors = append (in .Errors , err .Error ())
51- return in , false , nil
52- }
47+ if in .A .Error != "" || in .B .Error != "" {
5348
54- jsonB , err := types .ParseJSON (in .B .Body )
55- if err != nil {
56- in .Mismatch .IsOK = false
57- in .Mismatch .Message = fmt .Sprintf ("failed to parse B response: %v" , err )
58- err = fmt .Errorf ("failed to parse B response: %w" , err )
59- in .Errors = append (in .Errors , err .Error ())
60- return in , false , nil
61- }
49+ if in .A .Error != "" {
50+ mismatches = append (mismatches , jsondiff.JSONMismatch {
51+ Type : "error" ,
52+ Message : fmt .Sprintf ("\n A response has an error: %s" , in .A .Error ),
53+ Path : "n/a" ,
54+ Expected : "n/a" ,
55+ Actual : "n/a" ,
56+ })
57+ }
58+
59+ if in .B .Error != "" {
60+ mismatches = append (mismatches , jsondiff.JSONMismatch {
61+ Type : "error" ,
62+ Message : fmt .Sprintf ("\n B response has an error: %s" , in .B .Error ),
63+ Path : "n/a" ,
64+ Expected : "n/a" ,
65+ Actual : "n/a" ,
66+ })
67+ }
6268
63- mismatches , err := d .Diff (jsonA , jsonB )
69+ } else {
70+
71+ jsonA , err := types .ParseJSON (in .A .Body )
72+ if err != nil {
73+ in .Mismatch .IsOK = false
74+ in .Mismatch .Message = fmt .Sprintf ("failed to parse A response: %v" , err )
75+ err = fmt .Errorf ("failed to parse A response: %w" , err )
76+ in .Errors = append (in .Errors , err .Error ())
77+ return in , false , nil
78+ }
79+
80+ jsonB , err := types .ParseJSON (in .B .Body )
81+ if err != nil {
82+ in .Mismatch .IsOK = false
83+ in .Mismatch .Message = fmt .Sprintf ("failed to parse B response: %v" , err )
84+ err = fmt .Errorf ("failed to parse B response: %w" , err )
85+ in .Errors = append (in .Errors , err .Error ())
86+ return in , false , nil
87+ }
88+
89+ mismatches , err = d .Diff (jsonA , jsonB )
90+ if err != nil {
91+ return in , false , err
92+ }
6493
65- if err != nil {
66- return in , false , err
6794 }
6895
6996 if len (mismatches ) > 0 {
0 commit comments