class MockDnsServer::PredicateFactory
Each method returns a predicate in the form of a lambda or proc that takes an incoming object (usually a Dnsruby::Message
) object as a parameter and returns (as predicates do) true or false.
Public Instance Methods
a_request(qname)
click to toggle source
Convenience method for testing a request of qtype 'A' with the given qname.
# File lib/mock_dns_server/predicate_factory.rb, line 67 def a_request(qname) qtype_and_qname('A', qname) end
all(*predicates)
click to toggle source
TODO: Case insensitive? TODO: Add sender to signature for tcp/udp, etc.?
# File lib/mock_dns_server/predicate_factory.rb, line 18 def all(*predicates) ->(message, protocol = nil) do predicates.all? { |p| p.call(message, protocol) } end end
always_false()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 97 def always_false ->(_, _) { false } end
always_true()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 93 def always_true ->(_, _) { true } end
any(*predicates)
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 24 def any(*predicates) ->(message, protocol = nil) do predicates.any? { |p| p.call(message, protocol) } end end
axfr()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 48 def axfr qtype('AXFR') end
dns()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 36 def dns ->(message, _ = nil) { message.is_a?(Dnsruby::Message) } end
from_tcp()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 85 def from_tcp ->(_, protocol) { protocol == :tcp } end
from_udp()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 89 def from_udp ->(_, protocol) { protocol == :udp } end
ixfr()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 44 def ixfr qtype('IXFR') end
mt(message)
click to toggle source
shorthand for the MessageTransformers instance
# File lib/mock_dns_server/predicate_factory.rb, line 11 def mt(message) MessageTransformer.new(message) end
none(*predicates)
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 30 def none(*predicates) ->(message, protocol = nil) do predicates.none? { |p| p.call(message, protocol) } end end
qclass(qclass)
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 77 def qclass(qclass) ->(message, _ = nil) { dns.(message) && eq_case_insensitive(mt(message).qclass, qclass) } end
qname(qname)
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 81 def qname(qname) ->(message, _ = nil) { dns.(message) && eq_case_insensitive(mt(message).qname, qname) } end
qtype(qtype)
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 71 def qtype(qtype) ->(message, _ = nil) do dns.(message) && eq_case_insensitive(mt(message).qtype, qtype) end end
qtype_and_qname(qtype, qname)
click to toggle source
Convenience method for testing for a specific qtype and qname.
# File lib/mock_dns_server/predicate_factory.rb, line 62 def qtype_and_qname(qtype, qname) all(qtype(qtype), qname(qname)) end
soa()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 40 def soa qtype('SOA') end
xfr()
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 52 def xfr any(axfr, ixfr) end
zone_load()
click to toggle source
Returns true for messages relating to data from the zone load.
# File lib/mock_dns_server/predicate_factory.rb, line 57 def zone_load any(xfr, soa) end
Private Instance Methods
eq_case_insensitive(s1, s2)
click to toggle source
# File lib/mock_dns_server/predicate_factory.rb, line 103 def eq_case_insensitive(s1, s2) s1.downcase == s2.downcase end