Class: JSON::Fuzz::Generator::Keyword::Items

Inherits:
Object
  • Object
show all
Defined in:
lib/json/fuzz/generator/keyword/items.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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/json/fuzz/generator/keyword/items.rb', line 7

def invalid_params(attributes)
  attributes = Marshal.load(Marshal.dump(attributes))
  items  = attributes.delete("items")
  raise "No items keyword given: #{attributes}" unless items

  generated_params = []

  if items.instance_of?(Hash)
    invalid_param = []
    JSON::Fuzz::Generator.generate(items).each do |invalid_item|
      invalid_param << invalid_item
    end
    generated_params << invalid_param
  else
    invalid_param = []
    items.each do |item|
      JSON::Fuzz::Generator.generate(item).each do |invalid_item|
        invalid_param << invalid_item
      end
    end
    generated_params << invalid_param
  end

  if attributes.key?("additionalItems")
    additional_items = attributes.delete("additionalItems")
    template = valid_param(attributes.merge("items" => items))

    if additional_items
      template << JSON::Fuzz::Generator.generate(additional_items).sample
      generated_params << template
    else
      template << template.sample
      generated_params << template
    end
  end

  generated_params
end

.valid_param(attributes) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/json/fuzz/generator/keyword/items.rb', line 46

def valid_param(attributes)
  attributes = Marshal.load(Marshal.dump(attributes))
  items  = attributes.delete("items")
  raise "No items keyword given: #{attributes}" unless items

  generated_param = []

  if items.instance_of?(Hash)
    generated_param << JSON::Fuzz::Generator.default_param(items)
  else
    items.each do |item|
      generated_param << JSON::Fuzz::Generator.default_param(item)
    end
  end

  generated_param
end