18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/rspec/request_describer.rb', line 18
def self.included(base)
base.instance_eval do
subject do
send method, path, request_body, env
end
let(:request_body) do
if ["Content-Type"] == "application/json"
params.to_json
else
params
end
end
let(:headers) do
{}
end
let(:params) do
{}
end
let(:env) do
.inject({}) do |result, (key, value)|
key = "HTTP_" + key unless key.in?(RESERVED_HEADER_NAMES)
key = key.gsub("-", "_").upcase
result.merge(key => value)
end
end
let(:endpoint_segments) do
current_example = RSpec.respond_to?(:current_example) ? RSpec.current_example : example
current_example.full_description.match(/(#{SUPPORTED_METHODS.join("|")}) ([\/a-z0-9_:]+)/).to_a
end
let(:method) do
endpoint_segments[1].downcase
end
let(:path) do
endpoint_segments[2].gsub(/:([^\s\/]+)/) { send($1) }
end
end
end
|