o
    h1                     @   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   Z/var/www/html/ndineBlogger/venv/lib/python3.10/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portroot_page_idis_default_siter   )r   r   get_or_creater   r   r   r   prepare_site   s   zTestGetBaseUrl.prepare_sitec                 C   s   |` d S r   )_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WAGTAILAPI_BASE_URLc                 C   sv   t  d}|  }| |t| | t|d td d | t|d W d    d S 1 s4w   Y  d S )Nr,   r6   r7   r-   )r   r/   r&   r1   r   r0   r	   r   r3   r   r   r   !test_get_base_url_prefers_settingC   s   "z0TestGetBaseUrl.test_get_base_url_prefers_settingc                 C      |  t d d S )Nr6   r1   r	   r   r   r   r   %test_get_base_url_from_setting_stringL      z4TestGetBaseUrl.test_get_base_url_from_setting_strings   https://baz.example.comc                 C   r:   )Nzhttps://baz.example.comr;   r   r   r   r   $test_get_base_url_from_setting_bytesP   r=   z3TestGetBaseUrl.test_get_base_url_from_setting_bytesc                 C   r:   r   r;   r   r   r   r   %test_get_base_url_from_setting_objectT   r=   z4TestGetBaseUrl.test_get_base_url_from_setting_objectN)r   r   r   r   r&   r)   r+   r5   r   r9   r<   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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      t d}| |dg d S )NtestrB   FNr   r1   r   parsedr   r   r   test_valid_single_field\      z0TestParseFieldsParameter.test_valid_single_fieldc                 C      t d}| |ddg d S )Nztest,another_testrC   )another_testFNrD   rE   r   r   r   test_valid_multiple_fieldsf      z3TestParseFieldsParameter.test_valid_multiple_fieldsc                 C   rA   )Nz-testrB   TNrD   rE   r   r   r   test_valid_negated_fieldq   rH   z1TestParseFieldsParameter.test_valid_negated_fieldc                 C   s$   t d}| |ddddgfg d S )Nztest(foo,bar)rB   FfooFN)barFNrD   rE   r   r   r   test_valid_nested_fields{   s   z1TestParseFieldsParameter.test_valid_nested_fieldsc                 C   rI   )Nz*,-test*FNrM   rD   rE   r   r   r   test_valid_star_field   rL   z.TestParseFieldsParameter.test_valid_star_fieldc                 C   s$   t d}| |ddddgfg d S )Nz*,test(foo)rS   rB   FrO   rD   rE   r   r   r   %test_valid_star_with_additional_field   s   z>TestParseFieldsParameter.test_valid_star_with_additional_fieldc                 C   rI   )Nz_,test)_FNrC   rD   rE   r   r   r   test_valid_underscore_field   rL   z4TestParseFieldsParameter.test_valid_underscore_fieldc                 C   rA   )Na_test)rY   FNrD   rE   r   r   r   *test_valid_field_with_underscore_in_middle   rH   zCTestParseFieldsParameter.test_valid_field_with_underscore_in_middlec                 C   rA   )Nz-a_test)rY   TNrD   rE   r   r   r   2test_valid_negated_field_with_underscore_in_middle   rH   zKTestParseFieldsParameter.test_valid_negated_field_with_underscore_in_middlec                 C   rA   )N_test)r\   FNrD   rE   r   r   r   -test_valid_field_with_underscore_at_beginning   rH   zFTestParseFieldsParameter.test_valid_field_with_underscore_at_beginningc                 C   rA   )Ntest_)r^   FNrD   rE   r   r   r   'test_valid_field_with_underscore_at_end   rH   z@TestParseFieldsParameter.test_valid_field_with_underscore_at_endc                 C   H   |  t}td W d    n1 sw   Y  | t|jd d S )Nztest#z!unexpected char '#' at position 4assertRaisesr   r   r1   str	exceptionr   er   r   r   test_invalid_char      
z*TestParseFieldsParameter.test_invalid_charc                 C   r`   )Nz testz#unexpected whitespace at position 0ra   re   r   r   r   )test_invalid_whitespace_before_identifier   rh   zBTestParseFieldsParameter.test_invalid_whitespace_before_identifierc                 C   r`   )Nztest #unexpected whitespace at position 4ra   re   r   r   r   (test_invalid_whitespace_after_identifier   rh   zATestParseFieldsParameter.test_invalid_whitespace_after_identifierc                 C   r`   )Nz
test, testz#unexpected whitespace at position 5ra   re   r   r   r   #test_invalid_whitespace_after_comma   rh   z<TestParseFieldsParameter.test_invalid_whitespace_after_commac                 C   r`   )Nz
test ,testrj   ra   re   r   r   r   $test_invalid_whitespace_before_comma   rh   z=TestParseFieldsParameter.test_invalid_whitespace_before_commac                 C   r`   )Nztest-z!unexpected char '-' at position 4ra   re   r   r   r   )test_invalid_unexpected_negation_operator   rh   zBTestParseFieldsParameter.test_invalid_unexpected_negation_operatorc                 C   r`   )Nz
test,(foo)!unexpected char '(' at position 5ra   re   r   r   r   $test_invalid_unexpected_open_bracket  rh   z=TestParseFieldsParameter.test_invalid_unexpected_open_bracketc                 C   r`   )Nztest)z!unexpected char ')' at position 4ra   re   r   r   r   %test_invalid_unexpected_close_bracket  rh   z>TestParseFieldsParameter.test_invalid_unexpected_close_bracketc                 C   r`   )Nz	test,,fooz!unexpected char ',' at position 5ra   re   r   r   r   'test_invalid_unexpected_comma_in_middle  rh   z@TestParseFieldsParameter.test_invalid_unexpected_comma_in_middlec                 C   r`   )Nz	test,foo,z!unexpected char ',' at position 9ra   re   r   r   r   $test_invalid_unexpected_comma_at_end  rh   z=TestParseFieldsParameter.test_invalid_unexpected_comma_at_endc                 C   r`   )Nztest(fooz;unexpected end of input (did you miss out a close bracket?)ra   re   r   r   r   test_invalid_unclosed_bracket  s   
z6TestParseFieldsParameter.test_invalid_unclosed_bracketc                 C   r`   )Nz
-test(foo)ro   ra   re   r   r   r   'test_invalid_subfields_on_negated_field#  rh   z@TestParseFieldsParameter.test_invalid_subfields_on_negated_fieldc                 C   r`   )Nztest,*z!'*' must be in the first positionra   re   r   r   r   )test_invalid_star_field_in_wrong_position)  rh   zBTestParseFieldsParameter.test_invalid_star_field_in_wrong_positionc                 C   r`   )Nz-*z'*' cannot be negatedra   re   r   r   r   test_invalid_negated_star/  rh   z2TestParseFieldsParameter.test_invalid_negated_starc                 C   r`   )Nz
*(foo,bar)!unexpected char '(' at position 1ra   re   r   r   r   test_invalid_star_with_nesting5  rh   z7TestParseFieldsParameter.test_invalid_star_with_nestingc                 C   r`   )Nz*fooz!unexpected char 'f' at position 1ra   re   r   r   r   "test_invalid_star_with_chars_after;  rh   z;TestParseFieldsParameter.test_invalid_star_with_chars_afterc                 C   r`   )Nzfoo*z!unexpected char '*' at position 3ra   re   r   r   r   #test_invalid_star_with_chars_beforeA  rh   z<TestParseFieldsParameter.test_invalid_star_with_chars_beforec                 C   r`   )Nz*,fooz-additional fields with '*' doesn't make sensera   re   r   r   r   'test_invalid_star_with_additional_fieldG  s   

z@TestParseFieldsParameter.test_invalid_star_with_additional_fieldc                 C   r`   )Nztest,_!'_' must be in the first positionra   re   r   r   r   )test_invalid_underscore_in_wrong_positionO  rh   zBTestParseFieldsParameter.test_invalid_underscore_in_wrong_positionc                 C   r`   )Nz-_z'_' cannot be negatedra   re   r   r   r   test_invalid_negated_underscoreU  rh   z8TestParseFieldsParameter.test_invalid_negated_underscorec                 C   r`   )Nz
_(foo,bar)rx   ra   re   r   r   r   $test_invalid_underscore_with_nesting[  rh   z=TestParseFieldsParameter.test_invalid_underscore_with_nestingc                 C   r`   )Nz_,-fooz*negated fields with '_' doesn't make sensera   re   r   r   r   *test_invalid_underscore_with_negated_fielda  rh   zCTestParseFieldsParameter.test_invalid_underscore_with_negated_fieldc                 C   r`   )Nz*,_r}   ra   re   r   r   r    test_invalid_star_and_underscoreg  rh   z9TestParseFieldsParameter.test_invalid_star_and_underscoreN)%r   r   r   rG   rK   rN   rR   rU   rV   rX   rZ   r[   r]   r_   rg   ri   rk   rl   rm   rn   rp   rq   rr   rs   rt   ru   rv   rw   ry   rz   r{   r|   r~   r   r   r   r   r   r   r   r   r@   Y   sF    




	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S )TestParseBooleanc                 C      t d}| |d d S )NtrueTr
   assertIsrE   r   r   r   test_valid_trueq     z TestParseBoolean.test_valid_truec                 C   r   )NfalseFr   rE   r   r   r   test_valid_falsev  r   z!TestParseBoolean.test_valid_falsec                 C   r   )N1Tr   rE   r   r   r   test_valid_1{  r   zTestParseBoolean.test_valid_1c                 C   r   )N0Fr   rE   r   r   r   test_valid_0  r   zTestParseBoolean.test_valid_0c                 C   r`   )NrP   z%expected 'true' or 'false', got 'foo'rb   
ValueErrorr
   r1   rc   rd   re   r   r   r   test_invalid  rh   zTestParseBoolean.test_invalidc                 C   r`   )N2z#expected 'true' or 'false', got '2'r   re   r   r   r   test_invalid_integer  rh   z%TestParseBoolean.test_invalid_integerN)	r   r   r   r   r   r   r   r   r   r   r   r   r   r   n  s    r   N)django.testr   r   r   django.utils.encodingr   wagtail.modelsr   utilsr   r	   r
   r   r   r   r@   r   r   r   r   r   <module>   s    @  