a
    Dg1                     @   s   d dl mZmZmZ d dlmZ d dlmZ ddlm	Z	m
Z
mZmZ G dd dZG dd	 d	eZG d
d deZG dd deZdS )    )RequestFactoryTestCaseoverride_settings)force_bytes)Site   )FieldsParameterParseErrorget_base_urlparse_booleanparse_fields_parameterc                   @   s$   e Zd Zdd Zdd Zdd ZdS )DynamicBaseUrlc                 C   s   dS Nzhttps://www.example.com selfr   r   Y/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/api/v2/tests/tests.py__str__   s    zDynamicBaseUrl.__str__c                 C   s   t |  S N)r   r   r   r   r   r   	__bytes__   s    zDynamicBaseUrl.__bytes__c                 O   s   |   j|i |S r   )r   decode)r   argskwargsr   r   r   r      s    zDynamicBaseUrl.decodeN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c                   @   s~   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zedddd Z	edddd Z
edddd Zee ddd ZdS )TestGetBaseUrlc                 C   s   t j   d S r   )r   objectsalldeleter   r   r   r   setUp   s    zTestGetBaseUrl.setUpc                 C   s   t jjdddddd S )Nzother.example.comi     T)hostnameportZroot_page_idZis_default_siter   )r   r   Zget_or_creater   r   r   r   prepare_site   s    zTestGetBaseUrl.prepare_sitec                 C   s   |` d S r   )Z_wagtail_site)r   requestr   r   r   clear_cached_site%   s    z TestGetBaseUrl.clear_cached_sitec                 C   s   |  t  d S r   )assertIsNoner	   r   r   r   r   test_get_base_url_unset(   s    z&TestGetBaseUrl.test_get_base_url_unsetc                 C   s   t  d}| t| | t| |  }| | | |t| | t|d d|_	|
  | | | t|d d|_	|
  | | | t|d d S )N/http://other.example.com:8080i  zhttps://other.example.comP   zhttp://other.example.com)r   getr&   r   find_for_requestr	   r#   r%   assertEqualr"   saver   r$   siter   r   r   test_get_base_url_from_request+   s    


z-TestGetBaseUrl.test_get_base_url_from_requesthttps://bar.example.comZWAGTAILAPI_BASE_URLc                 C   st   t  d}|  }| |t| | t|d td d  | t|d W d    n1 sf0    Y  d S )Nr(   r2   r3   r)   )r   r+   r#   r-   r   r,   r	   r   r/   r   r   r   !test_get_base_url_prefers_settingC   s    z0TestGetBaseUrl.test_get_base_url_prefers_settingc                 C   s   |  t d d S )Nr2   r-   r	   r   r   r   r   %test_get_base_url_from_setting_stringL   s    z4TestGetBaseUrl.test_get_base_url_from_setting_strings   https://baz.example.comc                 C   s   |  t d d S )Nzhttps://baz.example.comr5   r   r   r   r   $test_get_base_url_from_setting_bytesP   s    z3TestGetBaseUrl.test_get_base_url_from_setting_bytesc                 C   s   |  t d d S r   r5   r   r   r   r   %test_get_base_url_from_setting_objectT   s    z4TestGetBaseUrl.test_get_base_url_from_setting_objectN)r   r   r   r   r#   r%   r'   r1   r   r4   r6   r7   r   r8   r   r   r   r   r      s   



r   c                   @   s  e Z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d  Zd!d" Z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d9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dES )FTestParseFieldsParameterc                 C   s   t d}| |dg d S )Ntestr:   FNr   r-   r   parsedr   r   r   test_valid_single_field\   s    z0TestParseFieldsParameter.test_valid_single_fieldc                 C   s   t d}| |ddg d S )Nztest,another_testr;   )Zanother_testFNr<   r=   r   r   r   test_valid_multiple_fieldsf   s    z3TestParseFieldsParameter.test_valid_multiple_fieldsc                 C   s   t d}| |dg d S )Nz-testr:   TNr<   r=   r   r   r   test_valid_negated_fieldq   s    z1TestParseFieldsParameter.test_valid_negated_fieldc                 C   s$   t d}| |ddddgfg d S )Nztest(foo,bar)r:   FfooFN)barFNr<   r=   r   r   r   test_valid_nested_fields{   s    z1TestParseFieldsParameter.test_valid_nested_fieldsc                 C   s   t d}| |ddg d S )Nz*,-test*FNrA   r<   r=   r   r   r   test_valid_star_field   s    z.TestParseFieldsParameter.test_valid_star_fieldc                 C   s$   t d}| |ddddgfg d S )Nz*,test(foo)rG   r:   FrC   r<   r=   r   r   r   %test_valid_star_with_additional_field   s    z>TestParseFieldsParameter.test_valid_star_with_additional_fieldc                 C   s   t d}| |ddg d S )Nz_,test)_FNr;   r<   r=   r   r   r   test_valid_underscore_field   s    z4TestParseFieldsParameter.test_valid_underscore_fieldc                 C   s   t d}| |dg d S )Na_test)rM   FNr<   r=   r   r   r   *test_valid_field_with_underscore_in_middle   s    zCTestParseFieldsParameter.test_valid_field_with_underscore_in_middlec                 C   s   t d}| |dg d S )Nz-a_test)rM   TNr<   r=   r   r   r   2test_valid_negated_field_with_underscore_in_middle   s    zKTestParseFieldsParameter.test_valid_negated_field_with_underscore_in_middlec                 C   s   t d}| |dg d S )N_test)rP   FNr<   r=   r   r   r   -test_valid_field_with_underscore_at_beginning   s    zFTestParseFieldsParameter.test_valid_field_with_underscore_at_beginningc                 C   s   t d}| |dg d S )Ntest_)rR   FNr<   r=   r   r   r   'test_valid_field_with_underscore_at_end   s    z@TestParseFieldsParameter.test_valid_field_with_underscore_at_endc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nztest#z!unexpected char '#' at position 4assertRaisesr   r   r-   str	exceptionr   er   r   r   test_invalid_char   s    &z*TestParseFieldsParameter.test_invalid_charc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz testz#unexpected whitespace at position 0rT   rX   r   r   r   )test_invalid_whitespace_before_identifier   s    &zBTestParseFieldsParameter.test_invalid_whitespace_before_identifierc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nztest #unexpected whitespace at position 4rT   rX   r   r   r   (test_invalid_whitespace_after_identifier   s    &zATestParseFieldsParameter.test_invalid_whitespace_after_identifierc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz
test, testz#unexpected whitespace at position 5rT   rX   r   r   r   #test_invalid_whitespace_after_comma   s    &z<TestParseFieldsParameter.test_invalid_whitespace_after_commac                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz
test ,testr\   rT   rX   r   r   r   $test_invalid_whitespace_before_comma   s    &z=TestParseFieldsParameter.test_invalid_whitespace_before_commac                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nztest-z!unexpected char '-' at position 4rT   rX   r   r   r   )test_invalid_unexpected_negation_operator   s    &zBTestParseFieldsParameter.test_invalid_unexpected_negation_operatorc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz
test,(foo)!unexpected char '(' at position 5rT   rX   r   r   r   $test_invalid_unexpected_open_bracket  s    &z=TestParseFieldsParameter.test_invalid_unexpected_open_bracketc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nztest)z!unexpected char ')' at position 4rT   rX   r   r   r   %test_invalid_unexpected_close_bracket  s    &z>TestParseFieldsParameter.test_invalid_unexpected_close_bracketc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz	test,,fooz!unexpected char ',' at position 5rT   rX   r   r   r   'test_invalid_unexpected_comma_in_middle  s    &z@TestParseFieldsParameter.test_invalid_unexpected_comma_in_middlec                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz	test,foo,z!unexpected char ',' at position 9rT   rX   r   r   r   $test_invalid_unexpected_comma_at_end  s    &z=TestParseFieldsParameter.test_invalid_unexpected_comma_at_endc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nztest(fooz;unexpected end of input (did you miss out a close bracket?)rT   rX   r   r   r   test_invalid_unclosed_bracket  s    &z6TestParseFieldsParameter.test_invalid_unclosed_bracketc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz
-test(foo)ra   rT   rX   r   r   r   'test_invalid_subfields_on_negated_field#  s    &z@TestParseFieldsParameter.test_invalid_subfields_on_negated_fieldc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nztest,*z!'*' must be in the first positionrT   rX   r   r   r   )test_invalid_star_field_in_wrong_position)  s    &zBTestParseFieldsParameter.test_invalid_star_field_in_wrong_positionc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz-*z'*' cannot be negatedrT   rX   r   r   r   test_invalid_negated_star/  s    &z2TestParseFieldsParameter.test_invalid_negated_starc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz
*(foo,bar)!unexpected char '(' at position 1rT   rX   r   r   r   test_invalid_star_with_nesting5  s    &z7TestParseFieldsParameter.test_invalid_star_with_nestingc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz*fooz!unexpected char 'f' at position 1rT   rX   r   r   r   "test_invalid_star_with_chars_after;  s    &z;TestParseFieldsParameter.test_invalid_star_with_chars_afterc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nzfoo*z!unexpected char '*' at position 3rT   rX   r   r   r   #test_invalid_star_with_chars_beforeA  s    &z<TestParseFieldsParameter.test_invalid_star_with_chars_beforec                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz*,fooz-additional fields with '*' doesn't make senserT   rX   r   r   r   'test_invalid_star_with_additional_fieldG  s
    &
z@TestParseFieldsParameter.test_invalid_star_with_additional_fieldc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nztest,_!'_' must be in the first positionrT   rX   r   r   r   )test_invalid_underscore_in_wrong_positionO  s    &zBTestParseFieldsParameter.test_invalid_underscore_in_wrong_positionc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz-_z'_' cannot be negatedrT   rX   r   r   r   test_invalid_negated_underscoreU  s    &z8TestParseFieldsParameter.test_invalid_negated_underscorec                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz
_(foo,bar)rj   rT   rX   r   r   r   $test_invalid_underscore_with_nesting[  s    &z=TestParseFieldsParameter.test_invalid_underscore_with_nestingc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz_,-fooz*negated fields with '_' doesn't make senserT   rX   r   r   r   *test_invalid_underscore_with_negated_fielda  s    &zCTestParseFieldsParameter.test_invalid_underscore_with_negated_fieldc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )Nz*,_ro   rT   rX   r   r   r    test_invalid_star_and_underscoreg  s    &z9TestParseFieldsParameter.test_invalid_star_and_underscoreN)%r   r   r   r?   r@   rB   rF   rI   rJ   rL   rN   rO   rQ   rS   rZ   r[   r]   r^   r_   r`   rb   rc   rd   re   rf   rg   rh   ri   rk   rl   rm   rn   rp   rq   rr   rs   rt   r   r   r   r   r9   Y   sD   




	r9   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestParseBooleanc                 C   s   t d}| |d d S )NtrueTr
   ZassertIsr=   r   r   r   test_valid_trueq  s    z TestParseBoolean.test_valid_truec                 C   s   t d}| |d d S )NfalseFrw   r=   r   r   r   test_valid_falsev  s    z!TestParseBoolean.test_valid_falsec                 C   s   t d}| |d d S )N1Trw   r=   r   r   r   test_valid_1{  s    zTestParseBoolean.test_valid_1c                 C   s   t d}| |d d S )N0Frw   r=   r   r   r   test_valid_0  s    zTestParseBoolean.test_valid_0c                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )NrD   z%expected 'true' or 'false', got 'foo'rU   
ValueErrorr
   r-   rV   rW   rX   r   r   r   test_invalid  s    &zTestParseBoolean.test_invalidc                 C   sH   |  t}td W d    n1 s(0    Y  | t|jd d S )N2z#expected 'true' or 'false', got '2'r   rX   r   r   r   test_invalid_integer  s    &z%TestParseBoolean.test_invalid_integerN)	r   r   r   rx   rz   r|   r~   r   r   r   r   r   r   ru   n  s   ru   N)Zdjango.testr   r   r   Zdjango.utils.encodingr   Zwagtail.modelsr   utilsr   r	   r
   r   r   r   r9   ru   r   r   r   r   <module>   s   @  