Ë
     ,jã'  ã                  óè  — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlmZ ddlZddlZddlmZ ddlmZmZ ddlmZmZmZmZ  ej2                  d¬	«      dd
„«       Zej2                  dd„«       Zej2                  d„ «       Zd d„Zej2                  d„ «       Zej2                  d„ «       Z G d„ d«      Z  G d„ d«      Z! G d„ d«      Z" G d„ d«      Z# G d„ d«      Z$ G d„ d«      Z% G d„ d«      Z&y)!zRTests for eBay OAuth2 flow: code exchange, token refresh, routes, and token store.é    )ÚannotationsN)Úpatch)Ú
TestClient)ÚappÚsettings)ÚEbayTokenStoreÚexchange_code_for_tokensÚget_valid_access_tokenÚrefresh_access_tokenT)Úautousec                óê   — | j                  t        dd«       | j                  t        dd«       | j                  t        dd«       | j                  t        dd«       | j                  t        d	d
«       y)z$Inject test settings for every test.Úebay_client_idztest-client-idÚebay_client_secretztest-client-secretÚebay_redirect_uriÚTest_RuNameÚebay_verification_tokenÚtokenabc123Úebay_deletion_endpoint_urlz(https://api.agent.dgx.dev/ebay/deletionsN)Úsetattrr   )Úmonkeypatchs    ú8/var/www/html/agent.samochodowy/tests/test_ebay_oauth.pyÚ_override_settingsr      si   € ð ×ÑœÐ"2Ð4DÔEØ×ÑœÐ"6Ð8LÔMØ×ÑœÐ"5°}ÔEØ×ÑœÐ";¸]ÔKØ×ÑÜØ$Ø2õó    c                 ó    — t        t        «      S )N)r   r   © r   r   Úclientr   (   s   € ä”c‹?Ðr   c                ó   — t        | dz  «      S )z+Provide a temp file path for token storage.zebay_tokens.json)Ústr)Útmp_paths    r   Ú
token_filer    -   s   € ô ˆxÐ,Ñ,Ó-Ð-r   c                ó^   — t        j                  dd«      }t        j                  | ||¬«      S )zLCreate an httpx.Response with a dummy request (needed for raise_for_status).ÚPOSTz-https://api.ebay.com/identity/v1/oauth2/token)ÚjsonÚrequest)ÚhttpxÚRequestÚResponse)Ústatus_codeÚ	json_datar$   s      r   Ú_mock_responser*   3   s&   € ä�m‰m˜FÐ$SÓT€GÜ�>‰>˜+¨I¸wÔGÐGr   c               #  ó„   K  — ddddddœ} t        d| «      }t        d|¬	«      5 }|| f–— d
d
d
«       y
# 1 sw Y   y
xY w­w)u-   Mock the HTTP call for codeâ†’token exchange.úv^1.1#new-access-tokenúUser Access Tokené   úv^1.1#new-refresh-tokeni@ÍÑ)Úaccess_tokenÚ
token_typeÚ
expires_inÚrefresh_tokenÚrefresh_token_expires_inéÈ   ú2agent_samochodowy.compliance.ebay_oauth.httpx.post©Úreturn_valueN©r*   r   ©Útoken_responseÚ	mock_respÚms      r   Úmock_exchanger>   9   sZ   è ø€ ð 1Ø)ØØ2Ø$,ñ€Nô ˜s NÓ3€IÜ	ÐCÐR[Ô	\ð  Ð`aØ�ÐÒ÷ ÷  ñ  üs   ‚"A ¤4«	A ´=¹A c               #  ó€   K  — ddddœ} t        d| «      }t        d|¬«      5 }|| f–— ddd«       y# 1 sw Y   yxY w­w)	u'   Mock the HTTP call for refreshâ†’token.zv^1.1#refreshed-access-tokenr-   r.   )r0   r1   r2   r5   r6   r7   Nr9   r:   s      r   Úmock_refreshr@   H   sT   è ø€ ð 7Ø)Øñ€Nô
 ˜s NÓ3€IÜ	ÐCÐR[Ô	\ð  Ð`aØ�ÐÒ÷ ÷  ñ  üs   ‚ >¢2©	>²;·>c                  ó   — e Zd Zd„ Zd„ Zy)ÚTestExchangeCodec                óœ  — |\  }}t        dddd¬«      }|d   }|d   }||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}|d   }|d   }||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}|j                  }
|
j                  d   d   }d}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}|
j                  d   d   }d}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}d}|
j                  d   d   }||v }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}y )Nzauth-code-123útest-idútest-secretr   )ÚcodeÚ	client_idÚclient_secretÚredirect_urir0   ©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6r3   ÚdataÚ
grant_typeÚauthorization_coderF   zBasic ÚheadersÚAuthorization©Úin)z%(py1)s in %(py4)s)r	   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationÚ	call_argsÚkwargs)Úselfr>   Ú	mock_postÚexpectedÚresultÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7Úcall_kwargss              r   Útest_exchange_returns_tokensz-TestExchangeCode.test_exchange_returns_tokensZ   s   € Ø+Ñˆ	�8Ü)Ø ØØ'Ø&ô	
ˆð �nÑ%ÐA¨°.Ñ)AÐAÐ%Ð)AÑA×A×AÕAÐ%Ð)A×A×AÓAÐ%×A×AÒAÐ)A×A×A×A×A×A×AÓAØ�oÑ&ÐC¨(°?Ñ*CÐCÐ&Ð*CÑC×C×CÕCÐ&Ð*C×C×CÓCÐ&×C×CÒCÐ*C×C×C×C×C×C×CÓCð  ×)Ñ)ˆØ×!Ñ! &Ñ)¨,Ñ7ÐOÐ;OÐOÐ7Ð;OÑO×O×OÕOÐ7Ð;O×O×OÓOÐ7×O×OÒOÐ;O×O×O×O×O×O×OÓOØ×!Ñ! &Ñ)¨&Ñ1ÐD°_ÐDÐ1°_ÑD×D×DÕDÐ1°_×D×DÓDÐ1×D×DÒD°_×D×D×D×D×D×DÓDØÐI˜;×-Ñ-¨iÑ8¸ÑIÐIˆxÐIÐI×I×IÕIˆxÐI×I×IÓIˆx×I×IÒIÐI×I×I×I×I×I×IÔIr   c                óð   — t        dddi«      }t        d|¬«      5  t        j                  t        j
                  «      5  t        dddd	«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)
Né‘  ÚerrorÚinvalid_grantr6   r7   úbad-codeÚidÚsecretÚuri)r*   r   ÚpytestÚraisesr%   ÚHTTPStatusErrorr	   )r`   Ú
error_resps     r   Útest_exchange_raises_on_errorz.TestExchangeCode.test_exchange_raises_on_errork   sw   € Ü# C¨'°?Ð)CÓDˆ
ÜÐGÐV`Ôañ 	LÜ—‘œu×4Ñ4Ó5ñ LÜ(¨°T¸8ÀUÔK÷L÷	Lð 	L÷Lð Lú÷	Lð 	Lús#   œ$A,Á A ÁA,Á A)	Á%A,Á,A5N)Ú__name__Ú
__module__Ú__qualname__rj   rw   r   r   r   rB   rB   Y   s   „ òJó"Lr   rB   c                  ó   — e Zd Zd„ Zy)ÚTestRefreshTokenc                ó|  — |\  }}t        ddd¬«      }|d   }|d   }||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}|j                  }
|
j                  d   d   }d}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}|
j                  d   d   }d}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t	        t        j
                  |	«      «      ‚d x}x}}y )Nzold-refreshrD   rE   )r3   rG   rH   r0   rJ   rL   rM   rP   rQ   rR   rS   r3   )r   rY   rZ   r[   r\   r]   r^   r_   )r`   r@   ra   rb   rc   rd   re   rf   rg   rh   ri   s              r   Ú%test_refresh_returns_new_access_tokenz6TestRefreshToken.test_refresh_returns_new_access_tokenw   s@  € Ø*Ñˆ	�8Ü%Ø'ØØ'ô
ˆð
 �nÑ%ÐA¨°.Ñ)AÐAÐ%Ð)AÑA×A×AÕAÐ%Ð)A×A×AÓAÐ%×A×AÒAÐ)A×A×A×A×A×A×AÓAà×)Ñ)ˆØ×!Ñ! &Ñ)¨,Ñ7ÐJ¸?ÐJÐ7¸?ÑJ×J×JÕJÐ7¸?×J×JÓJÐ7×J×JÒJ¸?×J×J×J×J×J×JÓJØ×!Ñ! &Ñ)¨/Ñ:ÐK¸mÐKÐ:¸mÑK×K×KÕKÐ:¸m×K×KÓKÐ:×K×KÒK¸m×K×K×K×K×K×KÔKr   N)rx   ry   rz   r~   r   r   r   r|   r|   v   s   „ óLr   r|   c                  ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestTokenStorec                ód  — t        |«      }|j                  ddddœ«       |j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nzat-123zrt-456r.   ©r0   r3   r2   rJ   ©z4%(py2)s
{%(py2)s = %(py0)s.access_token
} == %(py5)sÚstore©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7©z5%(py2)s
{%(py2)s = %(py0)s.refresh_token
} == %(py5)s©r   Úsaver0   rY   rZ   Ú@py_builtinsÚlocalsÚ_should_repr_global_namer[   r\   r]   r3   ©r`   r    r„   Ú@py_assert1Ú@py_assert4re   Ú@py_format6Ú@py_format8s           r   Útest_save_and_loadz!TestTokenStore.test_save_and_loadŠ   s  € Ü˜zÓ*ˆØ�
‰
Ø$Ø%Øñ
ô 	ð
 ×!Ñ!Ð- XÐ-Ð! XÑ-×-×-Õ-Ð! X×-×-×-×-×-Ñ-ˆu×-×-Ó-ˆu×-×-Ô-Ð!×-×-Ò- X×-×-×-×-×-×-Ó-Ø×"Ñ"Ð. hÐ.Ð" hÑ.×.×.Õ.Ð" h×.×.×.×.×.Ñ.ˆu×.×.Ó.ˆu×.×.Ô.Ð"×.×.Ò. h×.×.×.×.×.×.Ô.r   c                óŒ  — t        |«      }|j                  ddddœ«       |j                  dddœ«       |j                  }d}||k(  }|s­t        j                  d|fd||f«      d	t        j                  «       v st        j                  |«      rt        j                  |«      nd	t        j                  |«      t        j                  |«      d
œz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      d	t        j                  «       v st        j                  |«      rt        j                  |«      nd	t        j                  |«      t        j                  |«      d
œz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nzat-1zrt-1r.   r‚   zat-2©r0   r2   rJ   rƒ   r„   r…   r‰   rŠ   r‹   rŒ   r‘   s           r   Útest_save_merges_existingz(TestTokenStore.test_save_merges_existing”   s  € Ü˜zÓ*ˆØ�
‰
 F¸VÐSWÑXÔYà�
‰
 F¸$Ñ?Ô@Ø×!Ñ!Ð+ VÐ+Ð! VÑ+×+×+Õ+Ð! V×+×+×+×+×+Ñ+ˆu×+×+Ó+ˆu×+×+Ô+Ð!×+×+Ò+ V×+×+×+×+×+×+Ó+Ø×"Ñ"Ð, fÐ,Ð" fÑ,×,×,Õ,Ð" f×,×,×,×,×,Ñ,ˆu×,×,Ó,ˆu×,×,Ô,Ð"×,×,Ò, f×,×,×,×,×,×,Ô,r   c                óÖ  — dd l }dd l}t        |«      }|j                  ddi«       |j                  |«      j                  }|j
                  } ||«      }d}||k(  }	|	�st        j                  d|	fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      d	œz  }
d
d|
iz  }t        t        j                  |«      «      ‚d x}x}x}	}y )Nr   r0   Úati€  rJ   )zM%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.S_IMODE
}(%(py3)s)
} == %(py8)sÚstatÚmode)r†   r‡   Úpy3rˆ   Úpy8zassert %(py10)sÚpy10)Úosrœ   r   r�   Úst_modeÚS_IMODErY   rZ   rŽ   r�   r�   r[   r\   r]   )r`   r    r¡   rœ   r„   r�   r’   r“   Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11s               r   Útest_file_permissionsz$TestTokenStore.test_file_permissionsœ   sÛ   € ÛÛÜ˜zÓ*ˆØ�
‰
�N DÐ)Ô*Ø�w‰w�zÓ"×*Ñ*ˆØ�|‰|Ð*‰|˜DÓ!Ð* UÐ*Ð! UÑ*×*×*Ö*Ð! U×*×*×*×*×*Ñ*ˆt×*×*Ó*ˆt×*×*Ô*ˆ|×*×*×*×*×*Ð*˜D×*×*Ó*˜D×*×*Ô*Ð!×*×*Ò* U×*×*×*×*×*×*Ö*r   c                ó¨  — t        |«      }|j                  }d}||u }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )NT©Úis©z2%(py2)s
{%(py2)s = %(py0)s.is_expired
} is %(py5)sr„   r…   r‰   rŠ   )
r   Ú
is_expiredrY   rZ   rŽ   r�   r�   r[   r\   r]   r‘   s           r   Útest_is_expired_no_filez&TestTokenStore.test_is_expired_no_file¤   s~   € Ü˜zÓ*ˆØ×ÑÐ' 4Ð'Ð 4Ð'×'×'Õ'Ð 4×'×'×'×'×'Ñ'ˆu×'×'Ó'ˆu×'×'Ô'Ð×'×'Ò' 4×'×'×'×'×'×'Ô'r   c                óÐ  — t        |«      }|j                  dddœ«       |j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nr›   r.   r˜   Frª   r¬   r„   r…   r‰   rŠ   )r   r�   r­   rY   rZ   rŽ   r�   r�   r[   r\   r]   r‘   s           r   Útest_is_expired_fresh_tokenz*TestTokenStore.test_is_expired_fresh_token¨   s�   € Ü˜zÓ*ˆØ�
‰
 D¸Ñ=Ô>Ø×ÑÐ( 5Ð(Ð 5Ð(×(×(Õ(Ð 5×(×(×(×(×(Ñ(ˆu×(×(Ó(ˆu×(×(Ô(Ð×(×(Ò( 5×(×(×(×(×(×(Ô(r   c                ó°  — t        |«      }|j                  dddœ«       dd l}|j                  t	        |«      j                  «       «      }t        j                  «       dz
  |d<   t	        |d«      j                  |j                  |«      «       |j                  }d}||u }|s­t        j                  d	|fd
||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }	t!        t        j"                  |	«      «      ‚d x}x}}y )Nr›   r.   r˜   r   é@  Ú
updated_atÚwTrª   r¬   r„   r…   r‰   rŠ   )r   r�   r#   ÚloadsÚopenÚreadÚtimeÚwriteÚdumpsr­   rY   rZ   rŽ   r�   r�   r[   r\   r]   )
r`   r    r„   ÚjrR   r’   r“   re   r”   r•   s
             r   Útest_is_expired_old_tokenz(TestTokenStore.test_is_expired_old_token­   sà   € Ü˜zÓ*ˆØ�
‰
 D¸Ñ=Ô>ãØ�w‰w”t˜JÓ'×,Ñ,Ó.Ó/ˆÜ!ŸY™Y›[¨4Ñ/ˆˆ\ÑÜˆZ˜Ó×#Ñ# A§G¡G¨D£MÔ2Ø×ÑÐ' 4Ð'Ð 4Ð'×'×'Õ'Ð 4×'×'×'×'×'Ñ'ˆu×'×'Ó'ˆu×'×'Ô'Ð×'×'Ò' 4×'×'×'×'×'×'Ô'r   c                óŠ  — t        t        |dz  «      «      }|j                  } |«       }i }||k(  }|sÁt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}|j                  }d }	||	u }|s­t        j                  d|fd	||	f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      d
œz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}}	y )Nznonexistent.jsonrJ   )zC%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.load
}()
} == %(py7)sr„   )r†   r‡   rO   rŠ   zassert %(py9)sÚpy9rª   )z4%(py2)s
{%(py2)s = %(py0)s.access_token
} is %(py5)sr…   r‰   rŠ   )r   r   ÚloadrY   rZ   rŽ   r�   r�   r[   r\   r]   r0   )r`   r   r„   r’   re   r¥   Ú@py_assert5r•   Ú@py_format10r“   r”   s              r   Útest_load_missing_filez%TestTokenStore.test_load_missing_file·   s  € Üœs 8Ð.@Ñ#@ÓAÓBˆØ�z‰zÐ!‰z‹|Ð!˜rÐ!ˆ|˜rÑ!×!×!Õ!ˆ|˜r×!×!×!×!×!Ñ!ˆu×!×!Ó!ˆu×!×!Ô!ˆz×!×!Ò!ˆ|×!×!Ò!˜r×!×!×!×!×!×!Õ!Ø×!Ñ!Ð) TÐ)Ð! TÐ)×)×)Õ)Ð! T×)×)×)×)×)Ñ)ˆu×)×)Ó)ˆu×)×)Ô)Ð!×)×)Ò) T×)×)×)×)×)×)Ô)r   N)
rx   ry   rz   r–   r™   r¨   r®   r°   r¼   rÂ   r   r   r   r€   r€   ‰   s%   „ ò/ò-ò+ò(ò)ò
(ó*r   r€   c                  ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestGetValidAccessTokenc                óª  — t        |«      }|j                  ddddœ«       t        dd|«      }d}||k(  }|s™t        j                  d|fd||f«      d	t        j                  «       v st        j                  |«      rt        j                  |«      nd	t        j                  |«      d
œz  }dd|iz  }t        t        j                  |«      «      ‚d x}}y )Nz	cached-atÚrtr.   r‚   ÚcidÚcsecretrJ   ©z%(py0)s == %(py3)src   ©r†   rž   úassert %(py5)srˆ   )r   r�   r
   rY   rZ   rŽ   r�   r�   r[   r\   r]   )r`   r    r„   rc   rf   r’   Ú@py_format4r”   s           r   Útest_returns_cached_if_freshz4TestGetValidAccessToken.test_returns_cached_if_freshÂ   s‡   € Ü˜zÓ*ˆØ�
‰
 KÀ$ÐVZÑ[Ô\Ü'¨¨y¸%Ó@ˆØ$Ð$ˆv˜Ñ$×$×$Õ$ˆv˜×$×$×$×$×$Ñ$ˆv×$×$Ó$ˆv×$×$Ô$˜×$×$×$×$×$×$Ò$r   c                ó¢  — |\  }}t        |«      }|j                  ddddœ«       t        j                  t	        |«      j                  «       «      }t        j                  «       dz
  |d<   t	        |d«      j                  t        j                  |«      «       t        dd	|«      }|d
   }||k(  }	|	s™t        j                  d|	fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }
dd|
iz  }t!        t        j"                  |«      «      ‚d x}	}y )NÚoldzrt-goodr.   r‚   r²   r³   r´   rÇ   rÈ   r0   rJ   rÉ   rc   rÊ   rË   rˆ   )r   r�   r#   rµ   r¶   r·   r¸   r¹   rº   r
   rY   rZ   rŽ   r�   r�   r[   r\   r]   )r`   r    r@   Ú_rb   r„   rR   rc   rf   r’   rÌ   r”   s               r   Útest_refreshes_if_expiredz1TestGetValidAccessToken.test_refreshes_if_expiredÈ   sç   € Ø"‰ˆˆ8Ü˜zÓ*ˆØ�
‰
 E¸IÐUYÑZÔ[ä�z‰zœ$˜zÓ*×/Ñ/Ó1Ó2ˆÜ!ŸY™Y›[¨4Ñ/ˆˆ\ÑÜˆZ˜Ó×#Ñ#¤D§J¡J¨tÓ$4Ô5ä'¨¨y¸%Ó@ˆØ! .Ñ1Ð1ˆvÐ1Ñ1×1×1Õ1ˆvÐ1×1×1×1×1×1Ñ1ˆv×1×1Ó1ˆv×1×1Ô1Ð1×1×1×1×1×1×1Ò1r   c                ó”   — t        |«      }t        j                  t        d¬«      5  t	        dd|«       d d d «       y # 1 sw Y   y xY w)NzNo refresh_token)ÚmatchrÇ   rÈ   )r   rs   rt   ÚRuntimeErrorr
   )r`   r    r„   s      r   Ú!test_raises_without_refresh_tokenz9TestGetValidAccessToken.test_raises_without_refresh_tokenÔ   s<   € Ü˜zÓ*ˆä�]‰]œ<Ð/AÔBñ 	<Ü" 5¨)°UÔ;÷	<÷ 	<ñ 	<ús	   §>¾AN)rx   ry   rz   rÍ   rÑ   rÕ   r   r   r   rÄ   rÄ   Á   s   „ ò%ò
2ó<r   rÄ   c                  ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestOAuthCallbackRoutec                óà  — |j                  t        dt        |dz  «      «       |j                  dddi¬«      }|j                  }d}||k(  }|s­t        j                  d|fd	||f«      d
t        j                  «       v st        j                  |«      rt        j                  |«      nd
t        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚d x}x}}d}|j                  }||v }|s­t        j                  d|fd||f«      t        j                  |«      d
t        j                  «       v st        j                  |«      rt        j                  |«      nd
t        j                  |«      dœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚d x}x}}t        t        |dz  «      «      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚d x}x}}|j                   }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚d x}x}}y )NÚebay_token_pathútokens.jsonú/ebay/oauth/callbackrF   zauth-code-xyz©Úparamsr5   rJ   ©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚrespr…   r‰   rŠ   zAutoryzacja eBay OKrW   ©z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.text
}©rN   rž   rˆ   r,   rƒ   r„   r/   r‹   )r   r   r   Úgetr(   rY   rZ   rŽ   r�   r�   r[   r\   r]   Útextr   r0   r3   )r`   r   r>   r   r   rß   r’   r“   re   r”   r•   rd   rf   r„   s                 r   Útest_callback_successz,TestOAuthCallbackRoute.test_callback_successà   s  € Ø×ÑœHÐ&7¼¸XÈÑ=UÓ9VÔWØ�z‰zÐ0¸&À/Ð9RˆzÓSˆØ×ÑÐ& 3Ð&Ð 3Ñ&×&×&Õ&Ð 3×&×&×&×&×&Ñ&ˆt×&×&Ó&ˆt×&×&Ô&Ð×&×&Ò& 3×&×&×&×&×&×&Ó&Ø$Ð1¨¯	©	Ð1Ð$¨	Ð1×1×1Õ1Ð$¨	×1×1Ó1Ð$×1×1×1×1×1Ð1¨×1×1Ó1¨×1×1Ô1¨	×1×1×1×1×1×1Ó1ô œs 8¨mÑ#;Ó<Ó=ˆØ×!Ñ!Ð=Ð%=Ð=Ð!Ð%=Ñ=×=×=Õ=Ð!Ð%=×=×=×=×=×=Ñ=ˆu×=×=Ó=ˆu×=×=Ô=Ð!×=×=Ò=Ð%=×=×=×=×=×=×=Ó=Ø×"Ñ"Ð?Ð&?Ð?Ð"Ð&?Ñ?×?×?Õ?Ð"Ð&?×?×?×?×?×?Ñ?ˆu×?×?Ó?ˆu×?×?Ô?Ð"×?×?Ò?Ð&?×?×?×?×?×?×?Ô?r   c                ó¶  — |j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )	NrÛ   i�  rJ   rÞ   rß   r…   r‰   rŠ   )
râ   r(   rY   rZ   rŽ   r�   r�   r[   r\   r]   )r`   r   rß   r’   r“   re   r”   r•   s           r   Útest_callback_missing_code_400z5TestOAuthCallbackRoute.test_callback_missing_code_400ë   sƒ   € Ø�z‰zÐ0Ó1ˆØ×ÑÐ& 3Ð&Ð 3Ñ&×&×&Õ&Ð 3×&×&×&×&×&Ñ&ˆt×&×&Ó&ˆt×&×&Ô&Ð×&×&Ò& 3×&×&×&×&×&×&Ô&r   c                ó6  — |j                  t        dt        |dz  «      «       t        j                  dddi¬«      }t        dt        j                  dd |¬	«      ¬
«      5  |j                  dddi¬«      }d d d «       j                  }d}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
t        t        j                   |
«      «      ‚d x}x}}d}|j"                  }||v }|s­t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }	dd|	iz  }
t        t        j                   |
«      «      ‚d x}x}}y # 1 sw Y   �ŒšxY w)NrÙ   rÚ   rl   rm   rn   )r#   zCagent_samochodowy.compliance.ebay_deletion.exchange_code_for_tokensÚ401)r$   Úresponse)Úside_effectrÛ   rF   ro   rÜ   iô  rJ   rÞ   rß   r…   r‰   rŠ   u   nie powiodÅ‚a siÄ™rW   rà   rá   )r   r   r   r%   r'   r   ru   râ   r(   rY   rZ   rŽ   r�   r�   r[   r\   r]   rã   )r`   r   r   r   rv   rß   r’   r“   re   r”   r•   rd   rf   s                r   Útest_callback_exchange_failurez5TestOAuthCallbackRoute.test_callback_exchange_failureï   sh  € Ø×ÑœHÐ&7¼¸XÈÑ=UÓ9VÔWÜ—^‘^ C¨w¸Ð.HÔIˆ
ÜÐXÜ %× 5Ñ 5°eÀTÐT^Ô _ôañ 	Sà—:‘:Ð4¸fÀjÐ=Q�:ÓRˆD÷	Sð ×ÑÐ& 3Ð&Ð 3Ñ&×&×&Õ&Ð 3×&×&×&×&×&Ñ&ˆt×&×&Ó&ˆt×&×&Ô&Ð×&×&Ò& 3×&×&×&×&×&×&Ó&Ø#Ð0 t§y¡yÐ0Ð# yÐ0×0×0Õ0Ð# y×0×0Ó0Ð#×0×0×0×0×0Ð0 t×0×0Ó0 t×0×0Ô0 y×0×0×0×0×0×0Ô0÷		Sñ 	Sús   Á HÈHN)rx   ry   rz   rä   ræ   rë   r   r   r   r×   r×   ß   s   „ ò	@ò'ó1r   r×   c                  ó   — e Zd Zd„ Zy)ÚTestOAuthDeclinedRoutec                óD  — |j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}d	}|j                  }||v }	|	s­t        j                  d
|	fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}	}y )Nz/ebay/oauth/declinedr5   rJ   rÞ   rß   r…   r‰   rŠ   Ú	odrzuconarW   rà   rá   ©râ   r(   rY   rZ   rŽ   r�   r�   r[   r\   r]   rã   ©
r`   r   rß   r’   r“   re   r”   r•   rd   rf   s
             r   Útest_declined_200z(TestOAuthDeclinedRoute.test_declined_200þ   sð   € Ø�z‰zÐ0Ó1ˆØ×ÑÐ& 3Ð&Ð 3Ñ&×&×&Õ&Ð 3×&×&×&×&×&Ñ&ˆt×&×&Ó&ˆt×&×&Ô&Ð×&×&Ò& 3×&×&×&×&×&×&Ó&ØÐ'˜dŸi™iÐ'ˆ{˜iÐ'×'×'Õ'ˆ{˜i×'×'Ó'ˆ{×'×'×'×'×'Ð'˜d×'×'Ó'˜d×'×'Ô'˜i×'×'×'×'×'×'Ô'r   N)rx   ry   rz   rò   r   r   r   rí   rí   ý   s   „ ó(r   rí   c                  ó   — e Zd Zd„ Zy)ÚTestPrivacyRoutec                óD  — |j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}d	}|j                  }||v }	|	s­t        j                  d
|	fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}	}y )Nz/privacyr5   rJ   rÞ   rß   r…   r‰   rŠ   u   Polityka PrywatnoÅ›cirW   rà   rá   rð   rñ   s
             r   Útest_privacy_200z!TestPrivacyRoute.test_privacy_200  sò   € Ø�z‰z˜*Ó%ˆØ×ÑÐ& 3Ð&Ð 3Ñ&×&×&Õ&Ð 3×&×&×&×&×&Ñ&ˆt×&×&Ó&ˆt×&×&Ô&Ð×&×&Ò& 3×&×&×&×&×&×&Ó&Ø&Ð3¨$¯)©)Ð3Ð&¨)Ð3×3×3Õ3Ð&¨)×3×3Ó3Ð&×3×3×3×3×3Ð3¨$×3×3Ó3¨$×3×3Ô3¨)×3×3×3×3×3×3Ô3r   N)rx   ry   rz   rö   r   r   r   rô   rô     s   „ ó4r   rô   )r   zpytest.MonkeyPatchÚreturnÚNone)r÷   r   )r(   Úintr)   Údictr÷   zhttpx.Response)'Ú__doc__Ú
__future__r   ÚbuiltinsrŽ   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterY   r#   r¸   Úunittest.mockr   r%   rs   Úfastapi.testclientr   Ú*agent_samochodowy.compliance.ebay_deletionr   r   Ú'agent_samochodowy.compliance.ebay_oauthr   r	   r
   r   Úfixturer   r   r    r*   r>   r@   rB   r|   r€   rÄ   r×   rí   rô   r   r   r   ú<module>r     sþ   ðÙ Xå "ç  „ ƒÛ Ý ã Û Ý )ç D÷ó ð €‡�˜Ôò
ó ð
ð ‡�òó ðð ‡�ñ.ó ð.ó
Hð ‡�ñ ó ð ð ‡�ñ	 ó ð	 ÷ Lñ L÷:Lñ L÷&1*ñ 1*÷p<ñ <÷<1ñ 1÷<(ñ (÷4ò 4r   