Sha256: ab7d7c9829e341660d0f905dec2937adff6e376ee23152e900e03b4452be0893
Contents?: true
Size: 1.6 KB
Versions: 1
Compression:
Stored size: 1.6 KB
Contents
# validate AllOf schema class OpenAPIParser::SchemaValidator class AllOfValidator < Base # coerce and validate value # @param [Object] value # @param [OpenAPIParser::Schemas::Schema] schema def coerce_and_validate(value, schema, **keyword_args) if value.nil? && schema.nullable return [value, nil] end # if any schema return error, it's not valida all of value remaining_keys = value.kind_of?(Hash) ? value.keys : [] nested_additional_properties = false schema.all_of.each do |s| # We need to store the reference to all of, so we can perform strict check on allowed properties _coerced, err = validatable.validate_schema( value, s, :parent_all_of => true, parent_discriminator_schemas: keyword_args[:parent_discriminator_schemas] || [] ) if s.type == "object" remaining_keys -= (s.properties || {}).keys nested_additional_properties = true if s.additional_properties else # If this is not allOf having array of objects inside, but e.g. having another anyOf/oneOf nested remaining_keys.clear end return [nil, err] if err end # If there are nested additionalProperites, we allow not defined extra properties and lean on the specific # additionalProperties validation if !nested_additional_properties && !remaining_keys.empty? return [nil, OpenAPIParser::NotExistPropertyDefinition.new(remaining_keys, schema.object_reference)] end [value, nil] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
openapi_parser-2.2.3 | lib/openapi_parser/schema_validator/all_of_validator.rb |