Class: JSON::Fuzz::Generator::Keyword::OneOf

Inherits:
Object
  • Object
show all
Defined in:
lib/json/fuzz/generator/keyword/one_of.rb

Class Method Summary collapse

Class Method Details

.invalid_params(attributes) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/json/fuzz/generator/keyword/one_of.rb', line 7

def invalid_params(attributes)
  one_of = attributes["oneOf"]
  raise "No oneOf keyword given: #{attributes}" unless one_of

  generated_params = []

  one_of.each do |schema|
    temp_params = JSON::Fuzz::Generator.generate(schema).reject do |param|
      ::JSON::Validator.validate(attributes, param)
    end
    temp_params.each {|e| generated_params << e}
  end

  raise "failed to generate invalid_params for schema: #{attributes}" if generated_params.empty?
  generated_params.uniq
end

.valid_param(attributes) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/json/fuzz/generator/keyword/one_of.rb', line 24

def valid_param(attributes)
  one_of = attributes["oneOf"]
  raise "No oneOf keyword given: #{attributes}" unless one_of

  generated_params = []

  one_of.each do |schema|
    temp_params = JSON::Fuzz::Generator.generate(schema).select do |param|
      ::JSON::Validator.validate(attributes, param)
    end
    temp_params.each {|e| generated_params << e}
  end

  raise "failed to generate invalid_params for schema: #{attributes}" if generated_params.empty?
  generated_params.uniq.sample
end