o
    mi-                  
   @   st  d dl Z d dlmZmZmZ d dlZe jddejj	fdejj
fdejjfdejjfdejjfd	ejjfgd
d Zdd Ze jddejj	fdejj
fdejjfdejjfdejjfdejjfgdd Ze jdejj	ejj
ejjejjge jdddgdd Ze jdejj	ejj
ejjejjge jdddgdd Ze jdejj	ejj
ejjejjge jdddgdd Ze jddejj	fdejj
fdejjfdejjfdejjfd	ejjfgdd Ze jddejjfd ejjfd!ejjfd"ejjfgd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z dS )9    N)RegistryResourceSpecificationzuri, expectedz,https://json-schema.org/draft/2020-12/schemaz,https://json-schema.org/draft/2019-09/schemaz'http://json-schema.org/draft-07/schema#z'http://json-schema.org/draft-06/schema#z'http://json-schema.org/draft-04/schema#z'http://json-schema.org/draft-03/schema#c                 C   s*   d| i}t |}|t ||dksJ dS )zE
    The $schema keyword in JSON Schema is a dialect identifier.
    $schema)contentsspecificationN)r   from_contents)uriexpectedr   resource r   [/home/kim/smarthome/.venv/lib/python3.10/site-packages/referencing/tests/test_jsonschema.py7test_schemas_with_explicit_schema_keywords_are_detected   s   !
r   c                  C   sT   d} t tjj}td| i W d    n1 sw   Y  |jj| ks(J d S )N1http://example.com/unknown-json-schema-dialect-idr   )	pytestraisesreferencing
jsonschemaUnknownDialectr   r   valuer	   
dialect_idexcinfor   r   r   test_unknown_dialect-   s
   r   zid, specification$ididc                 C   s   d}| | |i|ksJ d S )Nzhttp://example.com/some-schemaZid_of)r   r   r	   r   r   r   test_id_of_mapping4   s   r   r   r   TFc                 C   s   |  |d u s	J d S Nr   r   r   r   r   r   test_id_of_boolD   s   r    c                 C      t | |g ksJ d S r   )listZ
anchors_inr   r   r   r   test_anchors_in_boolR      r#   c                 C   r!   r   )r"   Zsubresources_ofr   r   r   r   test_subresources_of_bool`   r$   r%   c                 C      t j| |ks
J d S r   r   r   specification_withr	   r
   r   r   r   test_specification_withn   s   r*   z&http://json-schema.org/draft-07/schemaz&http://json-schema.org/draft-06/schemaz&http://json-schema.org/draft-04/schemaz&http://json-schema.org/draft-03/schemac                 C   r&   r   r'   r)   r   r   r   )test_specification_with_no_empty_fragment   s   r+   c                  C   sR   d} t tjj}tj|  W d    n1 sw   Y  |jj| ks'J d S )Nr   )r   r   r   r   r   r(   r   r	   r   r   r   r   'test_specification_with_unknown_dialect   s
   r,   c                  C   s(   d} t jj| tjd}|tju sJ d S )Nr   )default)r   r   r(   r   ZOPAQUE)r   r   r   r   r   test_specification_with_default   s   r.   c                  C   sB   t jjddi} t d|  }|d}|j| jksJ d S )N$dynamicAnchorfoohttp://example.comzhttp://example.com#foo)	r   r   DRAFT202012create_resourcer   with_resourceresolverlookupr   )oner5   resolvedr   r   r   test_lookup_trivial_dynamic_ref   s   
r9   c               
   C   s   t jjd} t jjddddddddiddid}t d|fd| fd	|fg }|d}|jd
}|jdj}|d}|j|jksMJ d S )NTr1   	fooAnchorr0   r/   barZbazr   r/   $defshttp://example.com/foo/http://example.com/foo/barfoo/r<   
#fooAnchor	r   r   r2   r3   r   with_resourcesr5   r6   r   TRUErootr5   firstsecondfourthr   r   r   (test_multiple_lookup_trivial_dynamic_ref   s:   

rK   c               
   C   s   t jjddi} t jjddddddddiddid}t d|fd	| fd
|fg }|d}|jd}|jdj}|d}|j|jksOJ d S )N$anchorr:   r1   r0   Tr/   r;   r=   r?   r@   rA   r<   rB   rC   )r7   twor5   rH   rI   rJ   r   r   r   2test_multiple_lookup_dynamic_ref_to_nondynamic_ref   s>   

rN   c                  C   sR   t jjddi} t d|  }|d}t jj|jd}|j	| j	ks'J d S )N$recursiveAnchorTr1   r5   )
r   r   DRAFT201909r3   r   r4   r5   r6   lookup_recursive_refr   )r7   r5   rH   r8   r   r   r   !test_lookup_trivial_recursive_ref  s   
rS   c                  C   sD   t jjd} td| i}t jj|jddd}|j| jks J d S )NTr1   )Zbase_urirP   )r   r   rQ   r3   r   rR   r5   r   )rF   registryr8   r   r   r   !test_lookup_recursive_ref_to_bool  s   
rU   c                  C   s   t jjd} t jjdddddddddddid}t d|fd| fd	|fg }|d}|jd
}|jdj}t jj|d}|j	|j	ksPJ d S )NTr1   r0   r:   rO   rL   r;   r   rO   r>   r?   r@   rA   r<   rP   
r   r   rQ   r3   r   rD   r5   r6   rR   r   rE   r   r   r   *test_multiple_lookup_recursive_ref_to_bool(  s<   
rY   c                  C   s   t jjddi} t jjdddddddddddid}t jjdd	i}t d|fd
|fd| fg }|d}|jd}|jdj}t jj|d}|j	|j	ks[J d S )NrO   Tr1   r0   r:   rV   r;   rW   Fr?   r@   rA   r<   rP   rX   )r7   rM   threer5   rH   rI   rJ   r   r   r   8test_multiple_lookup_recursive_ref_with_nonrecursive_refP  sF   
r[   c                   C   s   t jjt ks	J d S r   )r   r   ZEMPTY_REGISTRYr   r   r   r   r   test_empty_registry}  s   r\   )!r   r   r   r   r   Zreferencing.jsonschemamarkZparametrizer   r2   rQ   ZDRAFT7ZDRAFT6ZDRAFT4ZDRAFT3r   r   r   r    r#   r%   r*   r+   r,   r.   r9   rK   rN   rS   rU   rY   r[   r\   r   r   r   r   <module>   s    
	






			

	')	(-