Sha256: 89b808d1182dab40677ab5314805bd6f35fda5429f734f4f257e8e8355ec923e
Contents?: true
Size: 1.37 KB
Versions: 4
Compression:
Stored size: 1.37 KB
Contents
module RestAssured class Response def self.perform(app) request = app.request if d = find_matching_double(request.request_method, request.fullpath) return_double app, d elsif redirect_url = Models::Redirect.find_redirect_url_for(request.fullpath) if d = find_matching_double(request.request_method, redirect_url) return_double app, d else app.redirect redirect_url end else app.status 404 end end def self.find_matching_double(method, fullpath) active_doubles_for_verb = Models::Double.where(:active => true, :verb => method) active_doubles_for_verb.select {|d| !d.fullpath.blank? && d.fullpath == fullpath}.sort_by { |d| d[:id] }.last || active_doubles_for_verb.select {|d| !d.pathpattern.blank? && Regexp.new(d.pathpattern).match(fullpath)}.sort_by { |d| d[:id] }.last end def self.return_double(app, d) request = app.request request.body.rewind body = request.body.read #without temp variable ':body = > body' is always nil. mistery env = request.env.except('rack.input', 'rack.errors', 'rack.logger') d.requests.create!(:rack_env => env.to_json, :body => body, :params => request.params.to_json) sleep d.delay app.headers d.response_headers app.body d.content app.status d.status end end end
Version data entries
4 entries across 4 versions & 1 rubygems