o
    ˜º¥g_µ  ã                   @   sr   d dl Z d dlZd dlmZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZ G dd„ dejƒZdS )	é    N)Údatetime)Úuuid4©ÚClient)ÚFAKE_TEST_API_KEY)ÚVERSIONc                   @   sZ  e Zd Zedd„ ƒZe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 d!¡d"d#„ ƒZe d!¡d$d%„ ƒZe d!¡d&d'„ ƒZe d!¡d(d)„ ƒZe d!¡d*d+„ ƒZe d!¡d,d-„ ƒZd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Z d8d9„ Z!d:d;„ Z"d<d=„ Z#d>d?„ Z$d@dA„ Z%dBdC„ Z&dDdE„ Z'dFdG„ Z(dHdI„ Z)dJdK„ Z*dLdM„ Z+dNdO„ Z,dPdQ„ Z-dRdS„ Z.dTdU„ Z/dVdW„ Z0dXdY„ Z1dZd[„ Z2d\d]„ Z3d^d_„ Z4d`da„ Z5dbdc„ Z6ddde„ Z7dfdg„ Z8e d!¡dhdi„ ƒZ9djdk„ Z:dldm„ Z;dndo„ Z<dpdq„ Z=e d!¡drds„ ƒZ>e dt¡e du¡dvdw„ ƒƒZ?e d!¡dxdy„ ƒZ@dzS ){Ú
TestClientc                 C   s0   t  d¡| _t  d¡| _| j ¡  | j ¡  d S )Nzposthog.client.batch_postúposthog.consumer.batch_post)ÚmockÚpatchÚclient_post_patcherÚconsumer_post_patcherÚstart©Úcls© r   úO/var/www/visachat/venv/lib/python3.10/site-packages/posthog/test/test_client.pyÚ
setUpClass   s   
zTestClient.setUpClassc                 C   s   | j  ¡  | j ¡  d S ©N)r   Ústopr   r   r   r   r   ÚtearDownClass   s   
zTestClient.tearDownClassc                 C   s   t d||ƒ d| _dS )zMark the failure handlerÚFAILTN)ÚprintÚfailed)ÚselfÚeÚbatchr   r   r   Úset_fail   s   
zTestClient.set_failc                 C   s   d| _ tt| jd| _d S )NF)Úon_error)r   r   r   r   Úclient©r   r   r   r   ÚsetUp!   s   zTestClient.setUpc                 C   s   |   tt¡ d S r   )ÚassertRaisesÚAssertionErrorr   r    r   r   r   Útest_requires_api_key%   ó   z TestClient.test_requires_api_keyc                 C   s   | j  ¡  d S r   )r   Úflushr    r   r   r   Útest_empty_flush(   s   zTestClient.test_empty_flushc                 C   s¤   | j }| dd¡\}}| ¡  |  |¡ |  | j¡ |  |d d¡ |  t|d tƒ¡ |  	| 
d¡¡ |  |d d¡ |  |d d d¡ |  |d d	 t¡ d S )
NÚdistinct_idúpython test eventÚeventÚ	timestampÚuuidÚ
propertiesú$libúposthog-pythonú$lib_version)r   Úcapturer&   Ú
assertTrueÚassertFalser   ÚassertEqualÚ
isinstanceÚstrÚassertIsNoneÚgetr   ©r   r   ÚsuccessÚmsgr   r   r   Útest_basic_capture+   s   
zTestClient.test_basic_capturec                 C   s²   | j }ttƒ ƒ}|jdd|d\}}| ¡  |  |¡ |  | j¡ |  |d d¡ |  t	|d tƒ¡ |  |d |¡ |  |d d¡ |  |d d d	¡ |  |d d
 t
¡ d S )Nr(   r)   )r,   r*   r+   r,   r-   r.   r/   r0   )r   r6   r   r1   r&   r2   r3   r   r4   r5   r   )r   r   r,   r:   r;   r   r   r   Útest_basic_capture_with_uuid9   s   

z'TestClient.test_basic_capture_with_uuidc                 C   s¬   t t| jd}| dd¡\}}| ¡  |  |¡ |  | j¡ |  |d d¡ |  t	|d t
ƒ¡ |  | d¡¡ |  |d d¡ |  |d d d	¡ |  |d d
 t¡ d S )N)Úproject_api_keyr   r(   r)   r*   r+   r,   r-   r.   r/   r0   )r   r   r   r1   r&   r2   r3   r   r4   r5   r6   r7   r8   r   r9   r   r   r   Ú'test_basic_capture_with_project_api_keyH   s   
z2TestClient.test_basic_capture_with_project_api_keyc                 C   s”   t tddid}| dd¡\}}| ¡  |  |d d¡ |  |d d d¡ | ddd	i¡\}}| ¡  |  |d
 d d	¡ |  |d d d¡ d S )NÚsourcez	repo-name)Úsuper_propertiesr(   r)   r*   r-   ÚtraitÚvalueú$set)r   r   r1   r&   r4   Úidentify©r   r   Ú_r;   r   r   r   Útest_basic_super_propertiesW   s   z&TestClient.test_basic_super_propertiesc                 C   s¶   t jjtdd dH}| j}tdƒ}|j|dd |  |j¡ |j	d }|  
|d d¡ |  
|d d¡ |  
|d	 d
ddddœd d
ddœgddœ¡ W d   ƒ d S 1 sTw   Y  d S )Nr1   ©Úreturn_valueútest exceptionr(   ©r(   r   é   ú
$exceptioné   Ú	ExceptionÚgenericT©ÚtypeÚhandled©Ú	mechanismÚmodulerS   rC   ú>https://us.i.posthog.com/project/random_key/person/distinct_id©ú$exception_typeú$exception_messageú$exception_listz$exception_personURL©r
   r   Úobjectr   r   rP   Úcapture_exceptionr2   ÚcalledÚ	call_argsr4   ©r   Úpatch_capturer   Ú	exceptionÚcapture_callr   r   r   Útest_basic_capture_exceptionf   s,   
üÿõþ"÷z'TestClient.test_basic_capture_exceptionc                 C   s´   t jjtdd dG}| j}tdƒ}| |d¡ |  |j¡ |j	d }|  
|d d¡ |  
|d d¡ |  
|d d	dd
ddœd d	ddœgddœ¡ W d   ƒ d S 1 sSw   Y  d S )Nr1   rI   rK   r(   r   rM   rN   rO   rP   rQ   TrR   rU   rX   rY   r]   rb   r   r   r   Ú-test_basic_capture_exception_with_distinct_id‚   s,   
üÿõþ"÷z8TestClient.test_basic_capture_exception_with_distinct_idc                 C   ó¾   t jjtdd dL}tt| jdd}tdƒ}| |d¡ |  |j	¡ |j
d }|  |d d¡ |  |d d	¡ |  |d
 dddddœd dddœgddœ¡ W d   ƒ d S 1 sXw   Y  d S )Nr1   rI   zhttps://aloha.com©r   ÚhostrK   r(   r   rM   rN   rO   rP   rQ   TrR   rU   z7https://aloha.com/project/random_key/person/distinct_idrY   ©r
   r   r^   r   r   r   rP   r_   r2   r`   ra   r4   rb   r   r   r   Ú9test_basic_capture_exception_with_correct_host_generationž   ó,   
üÿõþ"÷zDTestClient.test_basic_capture_exception_with_correct_host_generationc                 C   rh   )Nr1   rI   úhttps://app.posthog.comri   rK   r(   r   rM   rN   rO   rP   rQ   TrR   rU   z=https://app.posthog.com/project/random_key/person/distinct_idrY   rk   rb   r   r   r   ÚJtest_basic_capture_exception_with_correct_host_generation_for_server_hostsº   rm   zUTestClient.test_basic_capture_exception_with_correct_host_generation_for_server_hostsc              	   C   s  t jjtdd dù}| j}ztdƒ‚ ty    |jdd Y nw |  |j¡ |j	d }|  
|d d¡ |  
|d d¡ |  
|d	 d
 d¡ |  
|d	 d d¡ |  
|d	 d d d d d¡ |  
|d	 d d d d d¡ |  
|d	 d d d d ¡ |  
|d	 d d d d¡ |  
|d	 d d d d¡ |  
|d	 d d d d d¡ |  
|d	 d d d d d d d¡ |  
|d	 d d d d d d d¡ |  
|d	 d d d d d d d¡ |  
|d	 d d d d d d d¡ W d   ƒ d S 1 sw   Y  d S )Nr1   rI   rK   r(   rL   r   rM   rN   rO   rZ   rP   r[   r\   rV   rS   rQ   rT   TrW   rC   Ú
stacktraceÚrawÚframesÚfilenamezposthog/test/test_client.pyÚfunctionÚ4test_basic_capture_exception_with_no_exception_givenzposthog.test.test_clientÚin_appr]   )r   rc   r   re   r   r   r   ru   Ö   sF   ÿ
  þþþ ÿ*$ßz?TestClient.test_basic_capture_exception_with_no_exception_givenc              	   C   s¢   t jjtdd d>}| jddd}| j}| ¡  |  |j¡ |  	|j
d d¡ W d   ƒ n1 s2w   Y  W d   ƒ d S W d   ƒ d S 1 sJw   Y  d S )Nr1   rI   ÚposthogÚWARNING)Úlevelr   z2WARNING:posthog:No exception information available)r
   r   r^   r   Ú
assertLogsr   r_   r3   r`   r4   Úoutput)r   rc   Úlogsr   r   r   r   Ú8test_basic_capture_exception_with_no_exception_happeningû   s   þúÿ"ÿzCTestClient.test_basic_capture_exception_with_no_exception_happeningzposthog.client.decidec                 C   sø   dddii|_ tt| jtd}|jdddd\}}| ¡  |  |¡ |  | j¡ |  	|d	 d¡ |  t
|d
 tƒ¡ |  | d¡¡ |  	|d d¡ |  	|d d d¡ |  	|d d t¡ |  	|d d d¡ |  	|d d dg¡ |  	|jd¡ d S )NÚfeatureFlagsúbeta-featureúrandom-variant©r   Úpersonal_api_keyr(   r)   T©Úsend_feature_flagsr*   r+   r,   r-   r.   r/   r0   ú$feature/beta-featureú$active_feature_flagsrM   ©rJ   r   r   r   r1   r&   r2   r3   r   r4   r5   r6   r7   r8   r   Ú
call_count©r   Úpatch_decider   r:   r;   r   r   r   Ú%test_basic_capture_with_feature_flags	  s   
z0TestClient.test_basic_capture_with_feature_flagsc                 C   sX  dddii|_ tt| jtd}ddddd	d
dddddœgd
dœddigdddddœddddœddddœgidddidœd œd!œ}ddd"d	d	d#dd$gdd%œgd
dœgd&d'id(œd)œ}ddd*d	d	g d+dœgd&d'id(œd)œ}|||g|_| d,d-¡\}}| ¡  |  |¡ |  | j	¡ |  
|d. d-¡ |  t|d/ tƒ¡ |  | d0¡¡ |  
|d, d,¡ |  
|d1 d2 d3¡ |  
|d1 d4 t¡ |  
|d1 d5 d¡ |  
|d1 d6 d¡ |  
|d1 d7 dg¡ d8|d1 vsåJ ‚|  
|jd+¡ g |_| d,d-¡\}}| ¡  |  |¡ |  | j	¡ d8|d1 vsJ ‚d5|d1 vsJ ‚d6|d1 vs!J ‚d7|d1 vs*J ‚d S )9Nr~   r   r€   r   rM   úBeta Featureúbeta-feature-localFTéd   ÚemailÚpersonútest@posthog.comÚexact©ÚkeyrS   rC   Úoperator©r-   Úrollout_percentager—   é2   Úvariantsúfirst-variantúFirst Variant©r”   Únamer—   úsecond-variantúSecond Varianté   úthird-variantúThird Variantúsome-payloadÚaÚjson©rš   r¡   ©ÚgroupsÚmultivariateÚpayloads©Úidr   r”   Úis_simple_flagÚactiver—   Úfiltersúperson-flagÚregionÚUSA©r”   r•   rC   rS   Útrueé,  ©r¨   rª   ©r¬   r   r”   r­   r®   r¯   z
false-flagr   r(   r)   r*   r+   r,   r-   r.   r/   r0   ú$feature/beta-feature-localz$feature/false-flagr†   r…   ©rJ   r   r   r   Úfeature_flagsr1   r&   r2   r3   r   r4   r5   r6   r7   r8   r   rˆ   )r   rŠ   r   Úmultivariate_flagÚ
basic_flagÚ
false_flagr:   r;   r   r   r   Ú7test_basic_capture_with_locally_evaluated_feature_flags  sœ   ÿüÿù


ýÿíùüÿ÷ÿòúþÿùú

zBTestClient.test_basic_capture_with_locally_evaluated_feature_flagsc                 C   s¸  dddii|_ tt| jtd}ddddd	d
dddddœgd
dœddigdddddœddddœddddœgidddidœd œd!œ}ddd"d	d	d#dd$gdd%œgd
dœgd&d'id(œd)œ}||g|_| d*d+d,d-i¡\}}| ¡  |  |¡ |  | j	¡ |  
|d. d+¡ |  t|d/ tƒ¡ |  | d0¡¡ |  
|d* d*¡ |  
|d1 d2 d3¡ |  
|d1 d4 t¡ |  
|d1 d, d-¡ |  
|d1 d5 dg¡ d6|d1 vsËJ ‚d7|d1 vsÓJ ‚|  
|jd8¡ d S )9Nr~   r   r€   r   rM   rŒ   r   FTrŽ   r   r   r‘   r’   r“   r–   r—   r˜   r™   rš   r›   rœ   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r«   r°   r±   r²   r³   r´   rµ   r¶   r·   r(   r)   r¸   zmy-custom-variantr*   r+   r,   r-   r.   r/   r0   r†   r…   z$feature/person-flagr   r¹   )r   rŠ   r   r»   r¼   r:   r;   r   r   r   Ú+test_dont_override_capture_with_local_flags†  sv   ÿüÿù


ýÿíùüÿ÷ÿòú

ÿ
z6TestClient.test_dont_override_capture_with_local_flagsc              
   C   s>  dddddœi|_ tt| jtd}|jdddd	\}}| ¡  |  |¡ |  | j¡ |  	|d
 d¡ |  t
|d tƒ¡ |  | d¡¡ |  	|d d¡ |  |d d ¡ |  	|d d d¡ |  	|d d t¡ |  	|d d d¡ |  	|d d d¡ |  	|d d ddg¡ |  	|jd¡ |jddddi d d dd d S )Nr~   r€   TF©r   úalpha-featurezoff-featurer   r(   r)   rƒ   r*   r+   r,   r-   ú$geoip_disabler.   r/   r0   r…   ú$feature/alpha-featurer†   r   rÁ   rM   Ú
random_keyúhttps://us.i.posthog.comé   ©Útimeoutr(   r¨   Úperson_propertiesÚgroup_propertiesÚdisable_geoip©rJ   r   r   r   r1   r&   r2   r3   r   r4   r5   r6   r7   r8   r   rˆ   Úassert_called_withr‰   r   r   r   Ú9test_basic_capture_with_feature_flags_returns_active_onlyÕ  s8   ÿ

øzDTestClient.test_basic_capture_with_feature_flags_returns_active_onlyc              
   C   sF  dddddœi|_ ttd| jtddd}|jd	d
ddd\}}| ¡  |  |¡ |  | j¡ |  	|d d
¡ |  t
|d tƒ¡ |  | d¡¡ |  d|d v¡ |  	|d	 d	¡ |  	|d d d¡ |  	|d d t¡ |  	|d d d¡ |  	|d d d¡ |  	|d d ddg¡ |  	|jd¡ |jdddd	i d d dd d S )Nr~   r€   TFrÀ   rn   é   )rj   r   r‚   rË   Ú%feature_flags_request_timeout_secondsr(   r)   )r„   rË   r*   r+   r,   rÂ   r-   r.   r/   r0   r…   rÃ   r†   r   rÁ   rM   rÄ   rÅ   rÇ   rÌ   r‰   r   r   r   ÚItest_basic_capture_with_feature_flags_and_disable_geoip_returns_correctlyø  sF   ÿú

øzTTestClient.test_basic_capture_with_feature_flags_and_disable_geoip_returns_correctlyc                 C   sò   dddii|_ tt| jtd}|jdddd\}}| ¡  |  |¡ |  | j¡ |  	|d	 d¡ |  t
|d
 tƒ¡ |  | d¡¡ |  	|d d¡ |  	|d d d¡ |  	|d d t¡ |  d|d v¡ |  d|d v¡ |  	|jd¡ d S )Nr~   r   r€   r   r(   r)   Frƒ   r*   r+   r,   r-   r.   r/   r0   r…   r†   r   r‡   r‰   r   r   r   ÚCtest_basic_capture_with_feature_flags_switched_off_doesnt_send_them"  s   
zNTestClient.test_basic_capture_with_feature_flags_switched_off_doesnt_send_themc                 C   sJ   | j }|jddd\}}| ¡  |  |¡ |  | j¡ |  |d d¡ d S )Nl   úIq´K‰r)   )r(   r*   r(   Ú157963456373623802)r   r1   r&   r2   r3   r   r4   r9   r   r   r   Útest_stringifies_distinct_id7  s   
z'TestClient.test_stringifies_distinct_idc              
   C   sÞ   | j }| ddddidditddd	ƒd
¡\}}|  |¡ |  |d d¡ |  |d d d¡ |  |d d d¡ |  |d d¡ |  |d d d¡ |  |d d t¡ |  |d d
¡ |  |d d¡ |  d|d v¡ d S )Nr(   r)   ÚpropertyrC   Úipú192.168.0.1éÞ  é	   rÆ   únew-uuidr+   ú2014-09-03T00:00:00+00:00r-   Úcontextr*   r.   r/   r0   r,   ú$groups)r   r1   r   r2   r4   r   r9   r   r   r   Útest_advanced_captureB  s&   
ú
	z TestClient.test_advanced_capturec                 C   sD   | j jdddddœd\}}|  |¡ |  |d d dddœ¡ d S )	Nr(   Ú
test_eventúid:5úapp.posthog.com©ÚcompanyÚinstance)r¨   r-   rÝ   )r   r1   r2   r4   ©r   r:   r;   r   r   r   Útest_groups_captureY  s   
ý
zTestClient.test_groups_capturec                 C   ó„   | j }| dddi¡\}}| ¡  |  |¡ |  | j¡ |  |d d d¡ |  t|d tƒ¡ |  	| 
d¡¡ |  |d d¡ d S ©Nr(   rB   rC   rD   r+   r,   )r   rE   r&   r2   r3   r   r4   r5   r6   r7   r8   r9   r   r   r   Útest_basic_identifyc  ó   
zTestClient.test_basic_identifyc              	   C   óÎ   | j }| dddidditdddƒd	¡\}}|  |¡ |  |d
 d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d t¡ |  t|d
 tƒ¡ |  |d d	¡ |  |d d¡ d S ©Nr(   rB   rC   rÖ   r×   rØ   rÙ   rÆ   rÚ   r+   rÛ   rÜ   rD   r-   r.   r/   r0   r,   )r   rE   r   r2   r4   r   r5   r6   r9   r   r   r   Útest_advanced_identifyo  ó   ÿ
z!TestClient.test_advanced_identifyc                 C   rç   rè   )r   Úsetr&   r2   r3   r   r4   r5   r6   r7   r8   r9   r   r   r   Útest_basic_set€  rê   zTestClient.test_basic_setc              	   C   rë   rì   )r   rï   r   r2   r4   r   r5   r6   r9   r   r   r   Útest_advanced_setŒ  rî   zTestClient.test_advanced_setc                 C   rç   )Nr(   rB   rC   ú	$set_oncer+   r,   )r   Úset_oncer&   r2   r3   r   r4   r5   r6   r7   r8   r9   r   r   r   Útest_basic_set_once  rê   zTestClient.test_basic_set_oncec              	   C   rë   )Nr(   rB   rC   rÖ   r×   rØ   rÙ   rÆ   rÚ   r+   rÛ   rÜ   rò   r-   r.   r/   r0   r,   )r   ró   r   r2   r4   r   r5   r6   r9   r   r   r   Útest_advanced_set_once©  rî   z!TestClient.test_advanced_set_oncec              
   C   s‚   | j  dd¡\}}|  |¡ |  |d d¡ |  |d d¡ |  |d ddi dtd	d
œ¡ |  t|d tƒ¡ |  | d¡¡ d S )NÚorganizationrà   r*   ú$groupidentifyr(   ú$organization_id:5r-   r/   T©z$group_typeú
$group_keyz
$group_setr.   r0   rÂ   r+   r,   ©	r   Úgroup_identifyr2   r4   r   r5   r6   r7   r8   rå   r   r   r   Útest_basic_group_identifyº  s    
úþz$TestClient.test_basic_group_identifyc              
   C   s†   | j jdddd\}}|  |¡ |  |d d¡ |  |d d¡ |  |d ddi dtd	d
œ¡ |  t|d tƒ¡ |  | d¡¡ d S )Nrö   rà   r(   rL   r*   r÷   r-   r/   Trù   r+   r,   rû   rå   r   r   r   Ú*test_basic_group_identify_with_distinct_idÎ  s    
úþz5TestClient.test_basic_group_identify_with_distinct_idc              
   C   sž   | j  ddddidditddd	ƒd
¡\}}|  |¡ |  |d d¡ |  |d d¡ |  |d ddddidtddœ¡ |  |d d¡ |  |d d d¡ d S )Nrö   rà   rB   rC   rÖ   r×   rØ   rÙ   rÆ   rÚ   r*   r÷   r(   rø   r-   r/   Trù   r+   rÛ   rÜ   ©r   rü   r   r2   r4   r   rå   r   r   r   Útest_advanced_group_identifyá  s$   ÿ
úþz'TestClient.test_advanced_group_identifyc              
   C   s¢   | j jddddidditddd	ƒd
dd\}}|  |¡ |  |d d¡ |  |d d¡ |  |d ddddidtddœ¡ |  |d d¡ |  |d d d¡ d S )Nrö   rà   rB   rC   rÖ   r×   rØ   rÙ   rÆ   rÚ   r(   rL   r*   r÷   r-   r/   Trù   r+   rÛ   rÜ   rÿ   rå   r   r   r   Ú-test_advanced_group_identify_with_distinct_id÷  s0   

ù

úþz8TestClient.test_advanced_group_identify_with_distinct_idc                 C   s`   | j }| dd¡\}}| ¡  |  |¡ |  | j¡ |  |d d d¡ |  |d d d¡ d S )NÚ
previousIdr(   r-   Úalias)r   r  r&   r2   r3   r   r4   r9   r   r   r   Útest_basic_alias  s   
zTestClient.test_basic_aliasc                 C   s^   | j }|jddd\}}|  | j¡ | ¡  |  |¡ |  |d d¡ |  |d d d¡ d S )Nr(   úhttps://posthog.com/contact©Úurlr-   ú$current_url)r   Úpager3   r   r&   r2   r4   r9   r   r   r   Útest_basic_page  s   
zTestClient.test_basic_pagec                 C   sh   | j }tƒ }|j|dd\}}|  | j¡ | ¡  |  |¡ |  |d t|ƒ¡ |  |d d d¡ d S )Nr  r  r(   r-   r  )	r   r   r	  r3   r   r&   r2   r4   r6   )r   r   r(   r:   r;   r   r   r   Útest_basic_page_distinct_uuid&  s   
z(TestClient.test_basic_page_distinct_uuidc              
   C   sä   | j }| ddddidditddd	ƒd
¡\}}|  |¡ |  |d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d t¡ |  t|d tƒ¡ |  |d d
¡ |  |d d¡ d S )Nr(   r  rÕ   rC   rÖ   r×   rØ   rÙ   rÆ   rÚ   r+   rÛ   rÜ   r-   r  r.   r/   r0   r,   )r   r	  r   r2   r4   r   r5   r6   r9   r   r   r   Útest_advanced_page0  s&   
ú
	zTestClient.test_advanced_pagec                 C   sD   | j }tdƒD ]}| dddi¡\}}q| ¡  |  |j ¡ ¡ d S ©Niè  r(   rB   rC   )r   ÚrangerE   r&   r2   ÚqueueÚempty©r   r   Úir:   r;   r   r   r   Ú
test_flushG  s
   zTestClient.test_flushc                 C   s^   | j }tdƒD ]}| dddi¡\}}q| ¡  |  |j ¡ ¡ |jD ]	}|  | 	¡ ¡ q#d S r  )
r   r  rE   Úshutdownr2   r  r  Ú	consumersr3   Úis_alive)r   r   r  r:   r;   Úconsumerr   r   r   Útest_shutdownR  s   
ÿzTestClient.test_shutdownc                 C   sD   t tdd}| d¡\}}|  |j¡ |  |j ¡ ¡ |  |¡ d S )NT)Ú	sync_moder(   )r   r   rE   r3   r  r2   r  r  )r   r   r:   Úmessager   r   r   Útest_synchronous_  s
   zTestClient.test_synchronousc                 C   sH   t tdd}| ¡  tdƒD ]}| d¡ q| d¡\}}|  |¡ d S )NrM   )Úmax_queue_sizeé
   r(   )r   r   Újoinr  rE   r3   r  r   r   r   Útest_overflowg  s   zTestClient.test_overflowc                 C   s   t t d¡ƒ d S )NÚunicode_key)r   ÚsixÚur    r   r   r   Útest_unicodes  s   zTestClient.test_unicodec                 C   s(   | j  dd¡ | j  ¡  |  | j¡ d S )NiÒ  zpython event)r   r1   r&   r3   r   r    r   r   r   Útest_numeric_distinct_idv  s   
z#TestClient.test_numeric_distinct_idc                 C   s   t ddd d S )NÚbad_keyT)Údebugr   r    r   r   r   Ú
test_debug{  r%   zTestClient.test_debugc                 C   sF   t t| jdd}tdƒD ]
}| dddi¡ q| ¡  |  | j¡ d S )NT)r   Úgzipr  r(   rB   rC   )r   r   Úfailr  rE   r&   r3   r   )r   r   rG   r   r   r   Ú	test_gzip~  s
   zTestClient.test_gzipc                    sˆ   t tˆ jddd}‡ fdd„}tjd|d$}tdƒD ]
}| d	d
di¡ qt d¡ ˆ  	|j
d¡ W d   ƒ d S 1 s=w   Y  d S )Nr  rÆ   )r   Úflush_atÚflush_intervalc                     s   ˆ   t|d ƒd¡ d S )Nr   r  )r4   Úlen)ÚargsÚkwargsr    r   r   Úmock_post_fnˆ  s   z;TestClient.test_user_defined_flush_at.<locals>.mock_post_fnr	   )Úside_effecté   r(   rB   rC   rM   rO   )r   r   r)  r
   r   r  rE   ÚtimeÚsleepr4   rˆ   )r   r   r0  Ú	mock_postrG   r   r    r   Útest_user_defined_flush_at…  s   
"üz%TestClient.test_user_defined_flush_atc                 C   s*   t tdd}|jD ]	}|  |jd¡ q	d S )Nr  )rÈ   ©r   r   r  r4   rÈ   ©r   r   r  r   r   r   Útest_user_defined_timeout“  s   
ÿz$TestClient.test_user_defined_timeoutc                 C   s&   t tƒ}|jD ]	}|  |jd¡ qd S )Né   r7  r8  r   r   r   Útest_default_timeout_15˜  s   
ÿz"TestClient.test_default_timeout_15c                 C   sN   t t| jdd}| dd¡\}}| ¡  |  |¡ |  | j¡ |  |d¡ d S )NT©r   Údisabledr(   r)   r=  )r   r   r   r1   r&   r3   r   r4   r9   r   r   r   Útest_disabled  s   
zTestClient.test_disabledc                 C   s¾   t t| jdd}| dd¡}|  |¡ | ¡  | dd¡}|  |¡ | ¡  | d¡}|  |¡ | ¡  | dd¡}|  |¡ | ¡  | 	d¡}|  
|d d dœ¡ | ¡  |  |j ¡ ¡ d S )NTr<  r   Ú12345r”   )r~   ÚfeatureFlagPayloads)r   r   r   Úget_feature_flagr7   Úassert_not_calledÚfeature_enabledÚget_all_flagsÚget_feature_flag_payloadÚget_all_flags_and_payloadsr4   r2   r  r  )r   rŠ   r   Úresponser   r   r   Ú test_disabled_with_feature_flags¦  s"   





z+TestClient.test_disabled_with_feature_flagsc                 C   s’   t t| jdd}| dd¡\}}| ¡  |  |¡ |  | j¡ |  |d d¡ d|_	| dd¡\}}| ¡  |  |¡ |  | j¡ |  |d¡ d S )NFr<  r(   r)   r*   Tr=  )
r   r   r   r1   r&   r2   r3   r   r4   r=  r9   r   r   r   Útest_enabled_to_disabledÁ  s   

z#TestClient.test_enabled_to_disabledc                 C   sp   t t| jdd}| dd¡\}}| ¡  |  |d d d¡ | dddi¡\}}| ¡  |  |d d d¡ d S )	NT©r   rË   r(   r)   r-   rÂ   rB   rC   )r   r   r   r1   r&   r4   rE   ©r   r   rG   Úcapture_msgÚidentify_msgr   r   r   Ú$test_disable_geoip_default_on_eventsÒ  s   z/TestClient.test_disable_geoip_default_on_eventsc                 C   s€   t t| jdd}|jddddœdd\}}| ¡  |  |d	 d
 d¡ |jddddidd\}}| ¡  |  d
|d	 vd¡ d S )NFrJ  r(   ÚbÚd)r¤   ÚcT©rË   r-   rÂ   zhttp://a.comrB   rC   )r   r   r   rï   r&   r4   r	  rK  r   r   r   Ú%test_disable_geoip_override_on_eventsÜ  s   z0TestClient.test_disable_geoip_override_on_eventsc                 C   sB   t t| jdd}|jdddd\}}| ¡  |  d|d v¡ d S )	NTrJ  r(   r)   FrR  rÂ   r-   )r   r   r   r1   r&   r2   rF   r   r   r   Ú2test_disable_geoip_method_overrides_init_on_eventsæ  s   z=TestClient.test_disable_geoip_method_overrides_init_on_eventsc              
   C   sº   dddddœi|_ tt| jdd}|jdddd	 |jdd
ddi ddii dd | ¡  |jdddd	 |jdd
ddi ddii dd | ¡  | d¡ |jdd
ddi ddii dd d S )Nr~   r€   TFrÀ   rJ  rÄ   Úsome_idrR  rÅ   rÆ   r(   rÇ   Úfeature_enabled_distinct_idÚall_flags_payloads_id)	rJ   r   r   r   rA  rÍ   Ú
reset_mockrC  rF  ©r   rŠ   r   r   r   r   Ú$test_disable_geoip_default_on_decideì  sL   ÿø
ø


øz/TestClient.test_disable_geoip_default_on_decidezposthog.client.Pollerzposthog.client.getc                 C   sB   dd„ }||j j_ttdd}dddœg|_|  | dd¡¡ d S )	Nc                   S   s   t dƒ‚)Nzhttp exception)rP   r   r   r   r   Úraise_effect  s   z9TestClient.test_call_identify_fails.<locals>.raise_effectÚtest)r‚   ÚexampleF)r”   r­   r(   )rJ   Ú
raiseErrorr1  r   r   rº   r3   rC  )r   Ú	patch_getÚ
patch_pollr[  r   r   r   r   Útest_call_identify_fails  s
   
z#TestClient.test_call_identify_failsc              
   C   s  dddddœi|_ ttd| jdd}|jdd	d
ddœddidddiid |jdddd	d
ddœd	ddœd
ddœddidœdd | ¡  |jdd	d
ddœddidddiid |jdddd	d
ddœddiddiddidœdd | ¡  |jd	i d d d |jdddd	i dd	ii dd d S )Nr~   r€   TFrÀ   zhttp://app2.posthog.com)rj   r   rË   rÄ   rU  rà   rá   râ   Úx1Úy1rã   ÚxÚy)r¨   rÉ   rÊ   rÆ   )r(   rb  )rú   rd  rú   rÇ   r(   ÚoverrideÚgroup_override)rJ   r   r   r   rA  rÍ   rX  rF  rY  r   r   r   Ú*test_default_properties_get_added_properly"  sr   ÿ
ûþõÿÿûþõ
øz5TestClient.test_default_properties_get_added_properlyN)AÚ__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r!   r$   r'   r<   r=   r?   rH   rf   rg   rl   ro   ru   r}   r
   r   r‹   r¾   r¿   rÎ   rÑ   rÒ   rÔ   rÞ   ræ   ré   rí   rð   rñ   rô   rõ   rý   rþ   r   r  r  r
  r  r  r  r  r  r  r#  r$  r'  r*  r6  r9  r;  r>  rH  rI  rN  rS  rT  rZ  ra  rh  r   r   r   r   r      s’    

%

g
N
"
)

		
	



)
r   )r3  Úunittestr   r,   r   r
   r!  Úposthog.clientr   Úposthog.test.test_utilsr   Úposthog.versionr   ÚTestCaser   r   r   r   r   Ú<module>   s    