mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
d48d376e9c
* take the liberty of correcting Aws naming
107 lines
3.6 KiB
Ruby
107 lines
3.6 KiB
Ruby
Shindo.tests('Fog::Schema::DataValidator', 'meta') do
|
|
|
|
validator = Fog::Schema::DataValidator.new
|
|
|
|
tests('#validate') do
|
|
|
|
tests('returns true') do
|
|
|
|
returns(true, 'when value matches schema expectation') do
|
|
validator.validate({"key" => "Value"}, {"key" => String})
|
|
end
|
|
|
|
returns(true, 'when values within an array all match schema expectation') do
|
|
validator.validate({"key" => [1, 2]}, {"key" => [Integer]})
|
|
end
|
|
|
|
returns(true, 'when nested values match schema expectation') do
|
|
validator.validate({"key" => {:nested_key => "Value"}}, {"key" => {:nested_key => String}})
|
|
end
|
|
|
|
returns(true, 'when collection of values all match schema expectation') do
|
|
validator.validate([{"key" => "Value"}, {"key" => "Value"}], [{"key" => String}])
|
|
end
|
|
|
|
returns(true, 'when collection is empty although schema covers optional members') do
|
|
validator.validate([], [{"key" => String}])
|
|
end
|
|
|
|
returns(true, 'when additional keys are passed and not strict') do
|
|
validator.validate({"key" => "Value", :extra => "Bonus"}, {"key" => String}, {:allow_extra_keys => true})
|
|
end
|
|
|
|
returns(true, 'when value is nil and schema expects NilClass') do
|
|
validator.validate({"key" => nil}, {"key" => NilClass})
|
|
end
|
|
|
|
returns(true, 'when value and schema match as hashes') do
|
|
validator.validate({}, {})
|
|
end
|
|
|
|
returns(true, 'when value and schema match as arrays') do
|
|
validator.validate([], [])
|
|
end
|
|
|
|
returns(true, 'when value is a Time') do
|
|
validator.validate({"time" => Time.now}, {"time" => Time})
|
|
end
|
|
|
|
returns(true, 'when key is missing but value should be NilClass (#1477)') do
|
|
validator.validate({}, {"key" => NilClass}, {:allow_optional_rules => true})
|
|
end
|
|
|
|
returns(true, 'when key is missing but value is nullable (#1477)') do
|
|
validator.validate({}, {"key" => Fog::Nullable::String}, {:allow_optional_rules => true})
|
|
end
|
|
|
|
end
|
|
|
|
tests('returns false') do
|
|
|
|
returns(false, 'when value does not match schema expectation') do
|
|
validator.validate({"key" => nil}, {"key" => String})
|
|
end
|
|
|
|
returns(false, 'when key formats do not match') do
|
|
validator.validate({"key" => "Value"}, {:key => String})
|
|
end
|
|
|
|
returns(false, 'when additional keys are passed and strict') do
|
|
validator.validate({"key" => "Missing"}, {})
|
|
end
|
|
|
|
returns(false, 'when some keys do not appear') do
|
|
validator.validate({}, {"key" => String})
|
|
end
|
|
|
|
returns(false, 'when collection contains a member that does not match schema') do
|
|
validator.validate([{"key" => "Value"}, {"key" => 5}], [{"key" => String}])
|
|
end
|
|
|
|
returns(false, 'when collection has multiple schema patterns') do
|
|
validator.validate([{"key" => "Value"}], [{"key" => Integer}, {"key" => String}])
|
|
end
|
|
|
|
returns(false, 'when hash and array are compared') do
|
|
validator.validate({}, [])
|
|
end
|
|
|
|
returns(false, 'when array and hash are compared') do
|
|
validator.validate([], {})
|
|
end
|
|
|
|
returns(false, 'when a hash is expected but another data type is found') do
|
|
validator.validate({"key" => {:nested_key => []}}, {"key" => {:nested_key => {}}})
|
|
end
|
|
|
|
returns(false, 'when key is missing but value should be NilClass (#1477)') do
|
|
validator.validate({}, {"key" => NilClass}, {:allow_optional_rules => false})
|
|
end
|
|
|
|
returns(false, 'when key is missing but value is nullable (#1477)') do
|
|
validator.validate({}, {"key" => Fog::Nullable::String}, {:allow_optional_rules => false})
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|