Module: TShield::Matching::Filters
- Included in:
- RequestMatching
- Defined in:
- lib/tshield/matching/filters.rb
Overview
Filters used in request matching
Class Method Summary collapse
- .build_query_hash(raw_query) ⇒ Object
- .include_headers(stub_headers, request_headers) ⇒ Object
- .include_query(stub_query, raw_query) ⇒ Object
Instance Method Summary collapse
- #filter_by_headers(stubs) ⇒ Object
- #filter_by_method(stubs) ⇒ Object
- #filter_by_path(stubs) ⇒ Object
- #filter_by_query(stubs) ⇒ Object
- #filter_stubs(stubs) ⇒ Object
- #find_stub(stubs) ⇒ Object
Class Method Details
.build_query_hash(raw_query) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/tshield/matching/filters.rb', line 51 def self.build_query_hash(raw_query) params = {} raw_query.split('&').each do |query| key, value = query.split('=') params[key] = value end params end |
.include_headers(stub_headers, request_headers) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/tshield/matching/filters.rb', line 37 def self.include_headers(stub_headers, request_headers) request_headers ||= {} stub_headers ||= {} result = stub_headers.reject { |key, value| request_headers[key.to_rack_name] == value } result.empty? || stub_headers.empty? end |
.include_query(stub_query, raw_query) ⇒ Object
44 45 46 47 48 49 |
# File 'lib/tshield/matching/filters.rb', line 44 def self.include_query(stub_query, raw_query) request_query = Filters.build_query_hash(raw_query) stub_query ||= {} result = stub_query.reject { |key, value| request_query[key] == value.to_s } result.empty? || stub_query.empty? end |
Instance Method Details
#filter_by_headers(stubs) ⇒ Object
18 19 20 |
# File 'lib/tshield/matching/filters.rb', line 18 def filter_by_headers(stubs) stubs.select { |stub| Filters.include_headers(stub['headers'], @options[:headers]) } end |
#filter_by_method(stubs) ⇒ Object
14 15 16 |
# File 'lib/tshield/matching/filters.rb', line 14 def filter_by_method(stubs) stubs.select { |stub| stub['method'] == @options[:method] } end |
#filter_by_path(stubs) ⇒ Object
26 27 28 29 30 |
# File 'lib/tshield/matching/filters.rb', line 26 def filter_by_path(stubs) stubs.each do |key, value| return value if @path =~ /^#{key}$/ end end |
#filter_by_query(stubs) ⇒ Object
22 23 24 |
# File 'lib/tshield/matching/filters.rb', line 22 def filter_by_query(stubs) stubs.select { |stub| Filters.include_query(stub['query'], @options[:raw_query] || '') } end |
#filter_stubs(stubs) ⇒ Object
32 33 34 35 |
# File 'lib/tshield/matching/filters.rb', line 32 def filter_stubs(stubs) result = filter_by_query(filter_by_headers(filter_by_method(filter_by_path(stubs)))) result[0]['response'] unless result.empty? end |
#find_stub(stubs) ⇒ Object
7 8 9 10 11 12 |
# File 'lib/tshield/matching/filters.rb', line 7 def find_stub(stubs) result = filter_stubs(stubs[@options[:session]] || {}) return result if result filter_stubs(stubs[DEFAULT_SESSION] || {}) unless @options[:session] == DEFAULT_SESSION end |