File tree Expand file tree Collapse file tree 4 files changed +35
-0
lines changed
spec/core/middleware/response Expand file tree Collapse file tree 4 files changed +35
-0
lines changed Original file line number Diff line number Diff line change 1313require 'zendesk_api/middleware/response/callback'
1414require 'zendesk_api/middleware/response/deflate'
1515require 'zendesk_api/middleware/response/gzip'
16+ require 'zendesk_api/middleware/response/sanitize_response'
1617require 'zendesk_api/middleware/response/parse_iso_dates'
1718require 'zendesk_api/middleware/response/parse_json'
1819require 'zendesk_api/middleware/response/raise_error'
@@ -142,6 +143,7 @@ def build_connection
142143 builder . use ZendeskAPI ::Middleware ::Response ::Logger , config . logger if config . logger
143144 builder . use ZendeskAPI ::Middleware ::Response ::ParseIsoDates
144145 builder . use ZendeskAPI ::Middleware ::Response ::ParseJson
146+ builder . use ZendeskAPI ::Middleware ::Response ::SanitizeResponse
145147
146148 adapter = config . adapter || Faraday . default_adapter
147149
Original file line number Diff line number Diff line change 1+ require 'scrub_rb'
2+
3+ module ZendeskAPI
4+ module Middleware
5+ module Response
6+ class SanitizeResponse < Faraday ::Response ::Middleware
7+ def on_complete ( env )
8+ env [ :body ] . scrub! ( '' )
9+ end
10+ end
11+ end
12+ end
13+ end
Original file line number Diff line number Diff line change 1+ require 'core/spec_helper'
2+
3+ describe ZendeskAPI ::Middleware ::Response ::SanitizeResponse do
4+ def fake_response ( data )
5+ stub_json_request ( :get , %r{blergh} , data )
6+ response = client . connection . get ( 'blergh' )
7+ expect ( response . status ) . to eq ( 200 )
8+ response
9+ end
10+
11+ describe 'with bad characters' do
12+ let ( :response ) { fake_response ( "{\" x\" :\" 2012-02-01T13:14:15Z\" , \" y\" :\" \u0315 \u0316 \u0133 3\u0270 \u0227 12awesome!\ud83d \udc4d \" }" ) }
13+
14+ it 'removes bad characters' do
15+ expect ( response . body . to_s . valid_encoding? ) . to be ( true )
16+ expect ( response . body [ 'y' ] . to_s ) . to eq ( "\u0315 \u0316 \u0133 3\u0270 \u0227 12awesome!" )
17+ end
18+ end
19+ end
Original file line number Diff line number Diff line change @@ -30,6 +30,7 @@ Gem::Specification.new do |s|
3030 s . add_runtime_dependency "inflection"
3131 s . add_runtime_dependency "multipart-post" , "~> 2.0"
3232 s . add_runtime_dependency "mime-types"
33+ s . add_runtime_dependency "scrub_rb" , "~> 1.0.1"
3334
3435 s . files = `git ls-files -x Gemfile.lock` . split ( "\n " ) rescue ''
3536 s . test_files = `git ls-files -- {test,spec,features}/*` . split ( "\n " )
You can’t perform that action at this time.
0 commit comments