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_in_secondary_sessions(stubs, sessions) ⇒ Object
- #find_stub(stubs) ⇒ Object
Class Method Details
.build_query_hash(raw_query) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/tshield/matching/filters.rb', line 59 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
45 46 47 48 49 50 |
# File 'lib/tshield/matching/filters.rb', line 45 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
52 53 54 55 56 57 |
# File 'lib/tshield/matching/filters.rb', line 52 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
26 27 28 |
# File 'lib/tshield/matching/filters.rb', line 26 def filter_by_headers(stubs) stubs.select { |stub| Filters.include_headers(stub['headers'], @options[:headers]) } end |
#filter_by_method(stubs) ⇒ Object
22 23 24 |
# File 'lib/tshield/matching/filters.rb', line 22 def filter_by_method(stubs) stubs.select { |stub| stub['method'] == @options[:method] } end |
#filter_by_path(stubs) ⇒ Object
34 35 36 37 38 |
# File 'lib/tshield/matching/filters.rb', line 34 def filter_by_path(stubs) stubs.each do |key, value| return value if @path =~ /^#{key}$/ end end |
#filter_by_query(stubs) ⇒ Object
30 31 32 |
# File 'lib/tshield/matching/filters.rb', line 30 def filter_by_query(stubs) stubs.select { |stub| Filters.include_query(stub['query'], @options[:raw_query] || '') } end |
#filter_stubs(stubs) ⇒ Object
40 41 42 43 |
# File 'lib/tshield/matching/filters.rb', line 40 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_in_secondary_sessions(stubs, sessions) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/tshield/matching/filters.rb', line 14 def find_in_secondary_sessions(stubs, sessions) sessions.each do |session| result = filter_stubs(stubs[session] || {}) return result if result end filter_stubs(stubs[DEFAULT_SESSION] || {}) unless @options[:session] == DEFAULT_SESSION 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 find_in_secondary_sessions(stubs, @options[:secondary_sessions] || []) end |