def validate_schema_object(swagger_spec, schema_object_spec, value): """ :raises ValidationError: when jsonschema validation fails. :raises SwaggerMappingError: on invalid Swagger `type`. :raises SwaggerValidationError: when user-defined format validation fails. """ deref = swagger_spec.deref schema_object_spec = deref(schema_object_spec) default_type = 'object' if swagger_spec.config['default_type_to_object'] else None obj_type = deref(schema_object_spec.get('type', default_type)) if not obj_type: return if obj_type in SWAGGER_PRIMITIVES: validate_primitive(swagger_spec, schema_object_spec, value) elif obj_type == 'array': validate_array(swagger_spec, schema_object_spec, value) elif is_object(swagger_spec, schema_object_spec): validate_object(swagger_spec, schema_object_spec, value) elif obj_type == 'file': pass else: raise SwaggerMappingError('Unknown type {0} for value {1}'.format( obj_type, value))
def marshal_schema_object(swagger_spec, schema_object_spec, value): """Marshal the value using the given schema object specification. Marshaling includes: - transform the value according to 'format' if available - return the value in a form suitable for 'on-the-wire' transmission :type swagger_spec: :class:`bravado_core.spec.Spec` :type schema_object_spec: dict :type value: int, long, string, unicode, boolean, list, dict, Model type :return: marshaled value :rtype: int, long, string, unicode, boolean, list, dict :raises: SwaggerMappingError """ deref = swagger_spec.deref schema_object_spec = deref(schema_object_spec) obj_type = schema_object_spec.get('type') if obj_type in SWAGGER_PRIMITIVES: return marshal_primitive(swagger_spec, schema_object_spec, value) if obj_type == 'array': return marshal_array(swagger_spec, schema_object_spec, value) if is_model(swagger_spec, schema_object_spec): # Allow models to be passed in as dicts for flexibility. if is_dict_like(value): return marshal_object(swagger_spec, schema_object_spec, value) # It is important that the 'model' check comes before 'object' check # below. Model specs are of type 'object' but also have a MODEL_MARKER # key for identification. return marshal_model(swagger_spec, schema_object_spec, value) if is_object(swagger_spec, schema_object_spec): return marshal_object(swagger_spec, schema_object_spec, value) if obj_type == 'file': return value raise SwaggerMappingError('Unknown type {0} for value {1}'.format( obj_type, value))
def test_ref(minimal_swagger_dict): minimal_swagger_dict['definitions']['Foo'] = {'type': 'object'} minimal_swagger_spec = Spec.from_dict(minimal_swagger_dict) assert is_object(minimal_swagger_spec, {'$ref': '#/definitions/Foo'})
def test_false(minimal_swagger_spec, object_spec, config_override): minimal_swagger_spec.config.update(config_override) assert not is_object( minimal_swagger_spec, object_spec, )