
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    !`                     @   s   d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	 dd Z
dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ ZdS )%    N)	ValidatorerrorsSchemaError)UnvalidatedSchemaassert_schema_errorc               	   C   s2   t  } tjttjd | i d d W 5 Q R X d S )Nmatchschema)r   pytestraisesr   r   ZSCHEMA_ERROR_MISSING)	validator r   K/opt/alt/python38/lib/python3.8/site-packages/cerberus/tests/test_schema.pytest_empty_schema   s    r   c              	   C   s4   d}t j|}tjt|d || _W 5 Q R X d S )Nz!this string should really be dictr   )r   ZSCHEMA_ERROR_DEFINITION_TYPEformatr   r   r   r   )r   r   msgr   r   r   test_bad_schema_type   s    r   c              	   C   s8   d}|ddddiiii}t t || _W 5 Q R X d S )Nfoor   bartypeZstrong)r   r   r   r   )r   fieldr   r   r   r   test_bad_schema_type_field   s    r   c              	   C   s6   d}t jtt|d dddii| _W 5 Q R X d S )Nz({'foo': [{'unknown': ['unknown rule']}]}r   r   unknownZrule)r   r   r   reescaper   r   r   r   r   r   test_unknown_rule    s    r   c              	   C   sF   t dddgigi}tjtt|d dddii| _W 5 Q R X d S )Nr   r   zUnsupported types: unknownr   r   strr   r   r   r   r   r   r   r   r   r   test_unknown_type&   s    r!   c              	   C   s@   d}t |dgi}tjtt|d |di| _W 5 Q R X d S )Nnamezmust be of dict typer   zthis should really be a dictr   )r   r   r   r   r   r   test_bad_schema_definition,   s    r#   c                  C   s   ddddiii} t i |  d S )Nr   anyofr   stringr   r
   r   r   r   test_bad_of_rules3   s    r&   c                  C   s$   ddddd igii} t i |  d S )Nr   r$   coercec                 S   s   | S Nr   xr   r   r   <lambda>9       zBtest_normalization_rules_are_invalid_in_of_rules.<locals>.<lambda>r   r
   r   r   r   0test_normalization_rules_are_invalid_in_of_rules8   s    r-   c                  C   s\   ddddddiigigdi} t ddi|  ddddddiigigd	i} t ddi|  d S )
Ndocdictr   Zparamr   Znumber)r   r$   zthis is my document)r   Zallofr   r
   r   r   r    test_anyof_allof_schema_validate=   s      r0   c                  C   s&   t dddii} t| jdks"td S )Nr   r   r%   z{'foo': {'type': 'string'}})r   reprr   AssertionError)vr   r   r   	test_reprK   s    r4   c                  C   s   t ddtii} t| j}t dddii} |d7 }t| j|ksDtt ddtii} t| j|ksftd}||ks~td| d S )NZfoozifixr'   r   Zinteger      a  There's an unexpected high amount (%s) of cached valid definition schemas. Unless you added further tests, there are good chances that something is wrong. If you added tests with new schemas, you can try to adjust the variable `max_cache_size` according to the added schemas.)r   intlenZ_valid_schemasr2   )r3   Z
cache_sizeZmax_cache_sizer   r   r   test_validated_schema_cacheP   s    

r9   c                  C   sF   dddddgiii} t | }|jd d dddiddigiksBtd S )NZdetroitr   Zanyof_regexz^AladdinzSane$r$   Zregexr   r   r2   )r   r3   r   r   r   test_expansion_in_nested_schemaf   s     r;   c                  C   s   t  } |  }|| kstd S r(   )r   copyr2   )r   Zschema_copyr   r   r   %test_unvalidated_schema_can_be_copiedn   s    r=   c                  C   s   dd } ddddiddidddd	i id
| idi igdd}t |}|jddddiddiddddi id| idi igddkstd S )Nc                 S   s   d S r(   r   r   valueerrorr   r   r   
check_withv   s    z=test_deprecated_rule_names_in_valueschema.<locals>.check_withr/   r   r%   )r   	keyschemavalueschema)r   rC   listrB   r   rC   )r   items)Zfield_1Zfield_2)r   	keysrulesvaluesrules)r   rG   rF   rA   rG   r:   )rA   r   r   r   r   r   )test_deprecated_rule_names_in_valueschemau   s:    		rH   c                  C   sN   dd } dd }dd| |gii}t |}|jddd| id|igiiksJtd S )	Nc                 S   s   d S r(   r   r>   r   r   r   r      s    z"test_anyof_check_with.<locals>.fooc                 S   s   d S r(   r   r>   r   r   r   r      s    z"test_anyof_check_with.<locals>.barr   Zanyof_check_withr$   rA   r:   )r   r   r   r   r   r   r   test_anyof_check_with   s     rI   c                   C   s   t ddd ddid d S )Nr   c                 S   s   | S r(   r   r)   r   r   r   r+      r,   z3test_rulename_space_is_normalized.<locals>.<lambda>r%   )zdefault setterr   r
   )r   r   r   r   r   !test_rulename_space_is_normalized   s    rJ   )r   r   Zcerberusr   r   r   Zcerberus.schemar   Zcerberus.testsr   r   r   r   r   r!   r#   r&   r-   r0   r4   r9   r;   r=   rH   rI   rJ   r   r   r   r   <module>   s(   -