class Webspicy::Specification::Pre::RobustToInvalidInput
Public Class Methods
match(service, pre)
click to toggle source
# File lib/webspicy/specification/pre/robust_to_invalid_input.rb, line 7 def self.match(service, pre) self.new end
Public Instance Methods
counterexamples(service)
click to toggle source
# File lib/webspicy/specification/pre/robust_to_invalid_input.rb, line 15 def counterexamples(service) spec = service.specification first = service.examples.first cexamples = [] cexamples += url_randomness_counterexamples(service, first) if first cexamples += empty_input_counterexamples(service, first) if first cexamples end
match(service, pre)
click to toggle source
# File lib/webspicy/specification/pre/robust_to_invalid_input.rb, line 11 def match(service, pre) self end
Protected Instance Methods
empty_input_counterexamples(service, first)
click to toggle source
# File lib/webspicy/specification/pre/robust_to_invalid_input.rb, line 40 def empty_input_counterexamples(service, first) placeholders = service.specification.url_placeholders empty_input = first.params.reject{|k| !placeholders.include?(k) } if invalid_input?(service, empty_input) [first.mutate({ :description => "it is robust to an invalid empty input (RobustToInvalidInput)", :dress_params => false, :params => empty_input, :expected => { status: Support::StatusRange.str("4xx") }, :assert => [] })] else [] end end
invalid_input?(service, empty_input)
click to toggle source
# File lib/webspicy/specification/pre/robust_to_invalid_input.rb, line 58 def invalid_input?(service, empty_input) service.input_schema.dress(empty_input) false rescue Finitio::Error true end
url_randomness_counterexamples(service, first)
click to toggle source
# File lib/webspicy/specification/pre/robust_to_invalid_input.rb, line 26 def url_randomness_counterexamples(service, first) service.specification.url_placeholders.map{|p| first.mutate({ :description => "it is robust to URL randomness on param `#{p}` (RobustToInvalidInput)", :dress_params => false, :params => first.params.merge(p => (SecureRandom.random_number * 100000000).to_i), :expected => { status: Support::StatusRange.str("4xx") }, :assert => [] }) } end