o
    óT·j;  ã                   @   s|   d dl Z d dlmZmZ d dlmZ d dlmZmZ d dl	Z	d dl
Z
d dlmZmZmZmZ d dlmZ G dd„ deƒZdS )	é    N)ÚPackageNotFoundErrorÚversion)ÚTestCase)Ú	MagicMockÚpatch)ÚYouTubeTranscriptApiÚVideoUnavailableÚFetchedTranscriptÚFetchedTranscriptSnippet)ÚYouTubeTranscriptClic                   @   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ejjd+d,�d-d.„ ƒZd/d0„ Zd1d2„ Zd3S )4ÚTestYouTubeTranscriptClic              	   C   s®   t ƒ | _t ttdddd�tdddd�tddd	d�gd
dddd�d�| j_t | jd�| j_t ƒ | _t | jd�| j_t | jd�| j_t | jd�| j_	t d d�t
_t | jd�t
_d S )NzHey, this is just a testg        g¤p=
×£ø?)ÚtextÚstartÚdurationz*this is <i>not</i> the original transcriptg¤p=
×£@z-just something shorter, I made up for testinggÍÌÌÌÌÌ@g¶óýÔxé	@ÚEnglishÚenTÚGJLlxj_dtq8)ÚsnippetsÚlanguageÚlanguage_codeÚis_generatedÚvideo_id)Úreturn_value)r   Útranscript_mockr	   r
   ÚfetchÚ	translateÚtranscript_list_mockÚfind_generated_transcriptÚ find_manually_created_transcriptÚfind_transcriptr   Ú__init__Úlist©Úself© r$   úg/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/youtube_transcript_api/test/test_cli.pyÚsetUp   sL   ýýýõë
ÿ
ÿ
ÿ
ÿzTestYouTubeTranscriptCli.setUpc                 C   s–  t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ |  |jd¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ |  |jd¡ t d	 ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ |  |jd¡ t d
 ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ |  |jd¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |j	d¡ |  |j
d¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ |  |jd¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ |  |jd¡ d S )Nz%v1 v2 --format json --languages de enÚv1Úv2ÚjsonÚder   Ú ú%v1 v2 --languages de en --format jsonz& --format json v1 v2 --languages de enz{v1 v2 --languages de en --format json --http-proxy http://user:pass@domain:port --https-proxy https://user:pass@domain:portúhttp://user:pass@domain:portúhttps://user:pass@domain:portzkv1 v2 --languages de en --format json --webshare-proxy-username username --webshare-proxy-password passwordÚusernameÚpasswordzOv1 v2 --languages de en --format json --http-proxy http://user:pass@domain:portzQv1 v2 --languages de en --format json --https-proxy https://user:pass@domain:port)r   ÚsplitÚ_parse_argsÚassertEqualÚ	video_idsÚformatÚ	languagesÚ
http_proxyÚhttps_proxyÚwebshare_proxy_usernameÚwebshare_proxy_password©r#   Úparsed_argsr$   r$   r%   Útest_argument_parsing>   s�   ÿþÿþÿþýüýüÿþÿþz.TestYouTubeTranscriptCli.test_argument_parsingc                 C   sD   t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jdg¡ d S )Núv1 v2r'   r(   Úprettyr   ©r   r1   r2   r3   r4   r5   r6   r;   r$   r$   r%   Ú%test_argument_parsing__only_video_ids‚   ó   z>TestYouTubeTranscriptCli.test_argument_parsing__only_video_idsc                 C   sD   t d ¡ ƒ ¡ }|  |jg d¢¡ |  |jd¡ |  |jdg¡ d S )Nz\-v1 \-\-v2 \--v3)z-v1z--v2z--v3r?   r   r@   r;   r$   r$   r%   Ú3test_argument_parsing__video_ids_starting_with_dashˆ   rB   zLTestYouTubeTranscriptCli.test_argument_parsing__video_ids_starting_with_dashc                 C   s@   |   t¡� td ¡ ƒ ¡  W d   ƒ d S 1 sw   Y  d S )Nz--format json)ÚassertRaisesÚ
SystemExitr   r1   r2   r"   r$   r$   r%   Ú-test_argument_parsing__fail_without_video_idsŽ   s   "ÿzFTestYouTubeTranscriptCli.test_argument_parsing__fail_without_video_idsc                 C   s„   t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jdg¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jdg¡ d S )Nzv1 v2 --format jsonr'   r(   r)   r   z--format json v1 v2r@   r;   r$   r$   r%   Útest_argument_parsing__json’   s   z4TestYouTubeTranscriptCli.test_argument_parsing__jsonc                 C   sF   t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ d S )Núv1 v2 --languages de enr'   r(   r?   r*   r   r@   r;   r$   r$   r%   Ú test_argument_parsing__languages�   s   ÿþz9TestYouTubeTranscriptCli.test_argument_parsing__languagesc                 C   s˜   t d ¡ ƒ ¡ }|  |jd¡ t d ¡ ƒ ¡ }|  |jd¡ t d ¡ ƒ ¡ }|  |jd¡ |  |jd¡ t d ¡ ƒ ¡ }|  |jd¡ |  |jd¡ d S )Nz/v1 v2 --http-proxy http://user:pass@domain:portr-   z1v1 v2 --https-proxy https://user:pass@domain:portr.   z[v1 v2 --http-proxy http://user:pass@domain:port --https-proxy https://user:pass@domain:portr>   r+   )r   r1   r2   r3   r7   r8   r;   r$   r$   r%   Útest_argument_parsing__proxies¥   s,   ÿþÿþÿþz7TestYouTubeTranscriptCli.test_argument_parsing__proxiesc                 C   s`   t d ¡ ƒ ¡ }|  |jddg¡ |  |j¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |j¡ d S )Nú--list-transcripts v1 v2r'   r(   zv1 v2 --list-transcripts)r   r1   r2   r3   r4   Ú
assertTrueÚlist_transcriptsr;   r$   r$   r%   Ú'test_argument_parsing__list_transcriptsº   s   ÿþÿþz@TestYouTubeTranscriptCli.test_argument_parsing__list_transcriptsc                 C   s¤   t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |jd¡ |  |jddg¡ |  |jd¡ d S )	Nú&v1 v2 --languages de en --translate czr'   r(   r?   r*   r   Úczz&v1 v2 --translate cz --languages de en)r   r1   r2   r3   r4   r5   r6   r   r;   r$   r$   r%   Ú test_argument_parsing__translateÇ   s$   ÿþÿþz9TestYouTubeTranscriptCli.test_argument_parsing__translatec                 C   s²   t d ¡ ƒ ¡ }|  |jddg¡ |  |j¡ |  |j¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |j¡ |  |j¡ t d ¡ ƒ ¡ }|  |jddg¡ |  |j¡ |  |j¡ d S )Nz v1 v2 --exclude-manually-createdr'   r(   zv1 v2 --exclude-generatedz4v1 v2 --exclude-manually-created --exclude-generated)	r   r1   r2   r3   r4   rL   Úexclude_manually_createdÚassertFalseÚexclude_generatedr;   r$   r$   r%   Ú,test_argument_parsing__manually_or_generatedØ   s0   ÿþÿþÿþzETestYouTubeTranscriptCli.test_argument_parsing__manually_or_generatedc                 C   s>   t d ¡ ƒ ¡  tj d¡ tj d¡ | jj ddg¡ d S )NrH   r'   r(   r*   r   )r   r1   Úrunr   r!   Úassert_any_callr   r   r"   r$   r$   r%   Útest_runî   s   z!TestYouTubeTranscriptCli.test_runc                 C   s8   t tdƒd�t_td ¡ ƒ ¡ }|  |ttdƒƒ¡ d S )Nr   ©Úside_effectzv1 --languages de en)	r   r   r   r!   r   r1   rV   r3   Ústr©r#   Úoutputr$   r$   r%   Útest_run__failing_transcriptsö   s   z6TestYouTubeTranscriptCli.test_run__failing_transcriptsc                 C   ó&   t d ¡ ƒ ¡  | jj ddg¡ d S )Nz+v1 v2 --languages de en --exclude-generatedr*   r   )r   r1   rV   r   r   rW   r"   r$   r$   r%   Útest_run__exclude_generatedý   ó   ÿÿz4TestYouTubeTranscriptCli.test_run__exclude_generatedc                 C   r_   )Nz2v1 v2 --languages de en --exclude-manually-createdr*   r   )r   r1   rV   r   r   rW   r"   r$   r$   r%   Ú"test_run__exclude_manually_created  ra   z;TestYouTubeTranscriptCli.test_run__exclude_manually_createdc                 C   s   |   td ¡ ƒ ¡ d¡ d S )NzFv1 v2 --languages de en --exclude-manually-created --exclude-generatedr+   )r3   r   r1   rV   r"   r$   r$   r%   Ú0test_run__exclude_manually_created_and_generated  s   ÿüzITestYouTubeTranscriptCli.test_run__exclude_manually_created_and_generatedc                 C   s$   t d ¡ ƒ ¡ f | jj d¡ d S )NrO   rP   )r   r1   rV   r   r   rW   r"   r$   r$   r%   Útest_run__translate  s   z,TestYouTubeTranscriptCli.test_run__translatec                 C   s,   t d ¡ ƒ ¡  tj d¡ tj d¡ d S )NrK   r'   r(   )r   r1   rV   r   r!   rW   r"   r$   r$   r%   Útest_run__list_transcripts  s   z3TestYouTubeTranscriptCli.test_run__list_transcriptsc                 C   s   t d ¡ ƒ ¡ }t |¡ d S )Nr,   )r   r1   rV   r)   Úloadsr\   r$   r$   r%   Útest_run__json_output"  s   ÿþz.TestYouTubeTranscriptCli.test_run__json_outputc                 C   óJ   t d ¡ ƒ ¡  tjjj d¡}|  |¡ |  	|j
d¡ |  	|jd¡ d S )Nz]v1 v2 --languages de en --webshare-proxy-username username --webshare-proxy-password passwordÚproxy_configr/   r0   )r   r1   rV   r   r    Ú	call_argsÚkwargsÚgetÚassertIsNotNoner3   Úproxy_usernameÚproxy_password©r#   ri   r$   r$   r%   Útest_run__webshare_proxy_config*  ó   û
ÿ
z8TestYouTubeTranscriptCli.test_run__webshare_proxy_configc                 C   rh   )Nzmv1 v2 --languages de en --http-proxy http://user:pass@domain:port --https-proxy https://user:pass@domain:portri   r-   r.   )r   r1   rV   r   r    rj   rk   rl   rm   r3   Úhttp_urlÚ	https_urlrp   r$   r$   r%   Útest_run__generic_proxy_config;  rr   z7TestYouTubeTranscriptCli.test_run__generic_proxy_configzfThis test is temporarily disabled because cookie auth is currently not working due to YouTube changes.)Úreasonc                 C   s$   t d ¡ ƒ ¡  tjjd dd� d S )Nz.v1 v2 --languages de en --cookies blahblah.txtzblahblah.txt)ri   Úcookie_path)r   r1   rV   r   r    rW   r"   r$   r$   r%   Útest_run__cookiesL  s   ÿ
þz*TestYouTubeTranscriptCli.test_run__cookiesc                 C   sL   dt dƒ› �}tjddgdddd�j ¡ }||ks$J d|› d|› d	�ƒ‚d
S )zo
        `youtube_transcript_api --version` should return the same version as in the package metadata.
        z youtube_transcript_api, version zyoutube-transcript-apiÚyoutube_transcript_apiz	--versionT)Úcapture_outputr   ÚcheckzExpected version 'z', but got 'ú'N)r   Ú
subprocessrV   ÚstdoutÚstrip)r#   Úexpected_version_msgÚcli_version_msgr$   r$   r%   Útest_version_matches_metadataZ  s   ÿüû
ÿz6TestYouTubeTranscriptCli.test_version_matches_metadatac                 C   sJ   t dtd�� tg ƒ}| ¡ dksJ ‚W d   ƒ d S 1 sw   Y  d S )Nz#youtube_transcript_api._cli.versionrY   Úunknown)r   r   r   Ú_get_version)r#   Úclir$   r$   r%   Ú"test_get_version_package_not_foundm  s   ÿ"üz;TestYouTubeTranscriptCli.test_get_version_package_not_foundN)Ú__name__Ú
__module__Ú__qualname__r&   r=   rA   rC   rF   rG   rI   rJ   rN   rQ   rU   rX   r^   r`   rb   rc   rd   re   rg   rq   ru   ÚpytestÚmarkÚskiprx   r‚   r†   r$   r$   r$   r%   r      s8    +D		ÿ

r   )rŠ   Úimportlib.metadatar   r   Úunittestr   Úunittest.mockr   r   r)   r}   ry   r   r   r	   r
   Úyoutube_transcript_api._clir   r   r$   r$   r$   r%   Ú<module>   s    