o
    Rh3                     @   s   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 d dlmZ d dlmZmZ d d	lmZ G d
d dejZdS )    N)datetime)uuid4)parameterizedClient)APIError)FAKE_TEST_API_KEY)FeatureFlagLegacyFlagMetadata)VERSIONc                   @   s  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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/d0 Zed#d1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2d]d^ Z3d_d` Z4dadb Z5dcdd Z6dedf Z7dgdh Z8didj Z9dkdl Z:ed#dmdn Z;dodp Z<dqdr Z=dsdt Z>dudv Z?ed#dwdx Z@edyed(dzd{ ZAed#d|d} ZBeCDd~ddddddddddddif
gdd ZEed#dd ZFdS )
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   Z/home/air/sanwanet/backup_V2/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 d
 tjks[J |d d tjksfJ |d d tjksqJ |d d tjks|J d S )Ndistinct_idpython test eventevent	timestampuuid
properties$libposthog-python$lib_version$python_runtime$python_version$os$os_version)r#   capturer*   
assertTrueassertFalser   assertEqual
isinstancestrassertIsNonegetr   r   ANY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-   )r0   r.   r/   r0   r1   r2   r3   r4   )r#   r>   r   r9   r*   r:   r;   r   r<   r=   r   )r   r#   r0   rC   rD   r   r   r   test_basic_capture_with_uuidA   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/   r0   r1   r2   r3   r4   )r   r   r!   r9   r*   r:   r;   r   r<   r=   r>   r?   r@   r   rB   r   r   r   'test_basic_capture_with_project_api_keyP   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.   r1   traitvalue$set)r   r   r9   r*   r<   identifyr   r#   _rD   r   r   r   test_basic_super_properties_   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 )Nr9   return_valuetest exceptionr,   r,   r      
$exception   	ExceptiongenericTtypehandled	mechanismmoduler\   rL   >https://us.i.posthog.com/project/random_key/person/distinct_id$exception_type$exception_message$exception_listz$exception_personURLr   r   objectr   r#   rY   capture_exceptionr:   called	call_argsr<   r   patch_capturer#   	exceptioncapture_callr   r   r   test_basic_capture_exceptionn   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 )Nr9   rR   rT   r,   r   rV   rW   rX   rY   rZ   Tr[   r^   ra   rb   rf   rk   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 )Nr9   rR   zhttps://aloha.comr"   hostrT   r,   r   rV   rW   rX   rY   rZ   Tr[   r^   z7https://aloha.com/project/random_key/person/distinct_idrb   r   r   rg   r   r   r!   rY   rh   r:   ri   rj   r<   rk   r   r   r   9test_basic_capture_exception_with_correct_host_generation   s0   
"zDTestClient.test_basic_capture_exception_with_correct_host_generationc                 C   rq   )Nr9   rR   https://app.posthog.comrr   rT   r,   r   rV   rW   rX   rY   rZ   Tr[   r^   z=https://app.posthog.com/project/random_key/person/distinct_idrb   rt   rk   r   r   r   Jtest_basic_capture_exception_with_correct_host_generation_for_server_hosts   s4   
"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 )Nr9   rR   rT   r,   rU   r   rV   rW   rX   rc   rY   rd   re   r_   r\   rZ   r]   Tr`   rL   
stacktracerawframesfilenamezposthog/test/test_client.pyfunction4test_basic_capture_exception_with_no_exception_givenzposthog.test.test_clientin_apprf   )r   rl   r#   rn   r   r   r   r}      sj   
$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 )Nr9   rR   posthogWARNINGlevelr   z2WARNING:posthog:No exception information available)r   r   rg   r   
assertLogsr#   rh   r;   ri   r<   output)r   rl   logsr#   r   r   r   8test_basic_capture_exception_with_no_exception_happening  s   "zCTestClient.test_basic_capture_exception_with_no_exception_happeningc                 C   s~   t tdd}| jddd(}|jtdddd	 | |jd
 d | t|jd
 dd W d    d S 1 s8w   Y  d S )NT)log_captured_exceptionsr   ERRORr   rT   r,   zone/two/three)pathr   z+ERROR:posthog:test exception
NoneType: Noner   )	r   r   r   rh   rY   r<   r   getattrrecords)r   r#   r   r   r   r   (test_capture_exception_logs_when_enabled$  s   

"z3TestClient.test_capture_exception_logs_when_enabledzposthog.client.flagsc                 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/   r0   r1   r2   r3   r4   $feature/beta-feature$active_feature_flagsrV   rS   r   r   r!   r9   r*   r:   r;   r   r<   r=   r>   r?   r@   r   
call_countr   patch_flagsr#   rC   rD   r   r   r   %test_basic_capture_with_feature_flags/  s*   

z0TestClient.test_basic_capture_with_feature_flagsc                 C   sR  dddii|_ tt| jt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#gdd$gd	dgd%d&id'd(}ddd)dg d*dgd%d&id'd(}|||g|_|d+d,\}}|  | | | | j	 | 
|d- d, | t|d. t | |d/ | 
|d+ d+ | 
|d0 d1 d2 | 
|d0 d3 t | 
|d0 d4 d | 
|d0 d5 d6 | 
|d0 d7 dg d8|d0 vsJ | 
|jd* g |_|d+d,\}}|  | | | | j	 d8|d0 vsJ d4|d0 vsJ d5|d0 vsJ d7|d0 vs'J d S )9Nr   r   r   r   rV   Beta Featurebeta-feature-localTd   emailpersontest@posthog.comexactkeyr\   rL   operatorr1   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   activer   filtersperson-flagregionUSAr   r   rL   r\   true,  r   r   r   r   r   r   r   z
false-flagr   r,   r-   r.   r/   r0   r1   r2   r3   r4   $feature/beta-feature-localz$feature/false-flagFr   r   rS   r   r   r!   feature_flagsr9   r*   r:   r;   r   r<   r=   r>   r?   r@   r   r   )r   r   r#   multivariate_flag
basic_flag
false_flagrC   rD   r   r   r   7test_basic_capture_with_locally_evaluated_feature_flagsJ  s   1

zBTestClient.test_basic_capture_with_locally_evaluated_feature_flagszposthog.client.getc                 C   s   dddd}t d|d |_ttdd}| jd	d
d2}|  | |jg  | |ji  | |j	i  | |j
i  | d|jd  W d    d S 1 sPw   Y  d S )Nquota_limitedz1You have exceeded your feature flag request quotapayment_required)r\   detailcodei  r   testr   r   r   r   z#PostHog feature flags quota limitedr   )r   side_effectr   r   r   _load_feature_flagsr<   r   feature_flags_by_keygroup_type_mappingcohortsassertInr   )r   	patch_getmock_responser#   r   r   r   r   %test_load_feature_flags_quota_limited  s   "z0TestClient.test_load_feature_flags_quota_limitedc                 C   s  dddii|_ tt| jt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#gdd$gd	dgd%d&id'd(}||g|_|d)d*d+d,i\}}|  | | | | j	 | 
|d- d* | t|d. t | |d/ | 
|d) d) | 
|d0 d1 d2 | 
|d0 d3 t | 
|d0 d+ d, | 
|d0 d4 dg d5|d0 vsJ d6|d0 vsJ | 
|jd7 d S )8Nr   r   r   r   rV   r   r   Tr   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/   r0   r1   r2   r3   r4   r   r   z$feature/person-flagr   r   )r   r   r#   r   r   rC   rD   r   r   r   +test_dont_override_capture_with_local_flags  s   1

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-featureoff-featurer   r,   r-   r   r.   r/   r0   r1   $geoip_disabler2   r3   r4   r   $feature/alpha-featurer   r   r   rV   
random_keyhttps://us.i.posthog.com   timeoutr,   r   person_propertiesgroup_propertiesgeoip_disablerS   r   r   r!   r9   r*   r:   r;   r   r<   r=   r>   r?   r@   r   r   assert_called_withr   r   r   r   9test_basic_capture_with_feature_flags_returns_active_onlyI  sR   



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   rv      )rs   r"   r   disable_geoip%feature_flags_request_timeout_secondsr,   r-   )r   r   r.   r/   r0   r   r1   r2   r3   r4   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   Itest_basic_capture_with_feature_flags_and_disable_geoip_returns_correctlyy  s^   



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/   r0   r1   r2   r3   r4   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   IqKr-   )r,   r.   r,   157963456373623802)r#   r9   r*   r:   r;   r   r<   rB   r   r   r   test_stringifies_distinct_id  s   

z'TestClient.test_stringifies_distinct_idc                 C   s   | j }|jddddit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-   propertyrL     	   r   new-uuidr/   r0   r/   2014-09-03T00:00:00+00:00r1   r.   r2   r3   r4   r0   $groups)r#   r9   r   r:   r<   r   rB   r   r   r   test_advanced_capture  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   r1   r   )r#   r9   r:   r<   r   rC   rD   r   r   r   test_groups_capture  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,   rK   rL   rM   r/   r0   )r#   rN   r*   r:   r;   r   r<   r=   r>   r?   r@   rB   r   r   r   test_basic_identify     
zTestClient.test_basic_identifyc                 C      | j }|jdddit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,   rK   rL   r   r   r   r   r   r/   r   rM   r1   r2   r3   r4   r0   )r#   rN   r   r:   r<   r   r=   r>   rB   r   r   r   test_advanced_identify	     


z!TestClient.test_advanced_identifyc                 C   r  r  )r#   setr*   r:   r;   r   r<   r=   r>   r?   r@   rB   r   r   r   test_basic_set  r  zTestClient.test_basic_setc                 C   r  r	  )r#   r  r   r:   r<   r   r=   r>   rB   r   r   r   test_advanced_set(  r  zTestClient.test_advanced_setc                 C   r  )Nr,   rK   rL   	$set_oncer/   r0   )r#   set_oncer*   r:   r;   r   r<   r=   r>   r?   r@   rB   r   r   r   test_basic_set_once;  r  zTestClient.test_basic_set_oncec                 C   r  )Nr,   rK   rL   r   r   r   r   r   r/   r   r  r1   r2   r3   r4   r0   )r#   r  r   r:   r<   r   r=   r>   rB   r   r   r   test_advanced_set_onceG  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:5r1   r3   Tz$group_type
$group_keyz
$group_setr2   r4   r   r/   r0   	r#   group_identifyr:   r<   r   r=   r>   r?   r@   r  r   r   r   test_basic_group_identifyZ  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,   rU   r.   r  r1   r3   Tr  r/   r0   r  r  r   r   r   *test_basic_group_identify_with_distinct_idn  s$   

z5TestClient.test_basic_group_identify_with_distinct_idc              
   C   s   | j jdddditddddd	\}}| | | |d
 d | |d d | |d ddddidtdd | |d d d S )Nr  r   rK   rL   r   r   r   r   r   r.   r  r,   r  r1   r3   Tr  r/   r   r#   r  r   r:   r<   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tddddd	d
\}}| | | |d d | |d	 d	 | |d ddddidtdd | |d d d S )Nr  r   rK   rL   r   r   r   r   r,   )r/   r0   r,   r.   r  r1   r3   Tr  r/   r   r  r  r   r   r   -test_advanced_group_identify_with_distinct_id  s,   


	z8TestClient.test_advanced_group_identify_with_distinct_idc                 C   s`   | j }|dd\}}|  | | | | j | |d d d | |d d d d S )N
previousIdr,   r1   alias)r#   r   r*   r:   r;   r   r<   rB   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urlr1   $current_url)r#   pager;   r   r*   r:   r<   rB   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,   r1   r%  )	r#   r   r&  r;   r   r*   r:   r<   r>   )r   r#   r,   rC   rD   r   r   r   test_basic_page_distinct_uuid  s   
z(TestClient.test_basic_page_distinct_uuidc                 C   s   | j }|jddddit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   rL   r   r   r   r   r   r/   r   r1   r%  r2   r3   r4   r0   )r#   r&  r   r:   r<   r   r=   r>   rB   r   r   r   test_advanced_page  s&   


zTestClient.test_advanced_pagec                 C   sD   | j }tdD ]}|dddi\}}q|  | |j  d S Ni  r,   rK   rL   )r#   rangerN   r*   r:   queueemptyr   r#   irC   rD   r   r   r   
test_flush  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+  rN   shutdownr:   r,  r-  	consumersr;   is_alive)r   r#   r/  rC   rD   consumerr   r   r   test_shutdown  s   
zTestClient.test_shutdownc                 C   sD   t tdd}|d\}}| |j | |j  | | d S )NT)	sync_moder,   )r   r   rN   r;   r2  r:   r,  r-  )r   r#   rC   messager   r   r   test_synchronous  s
   zTestClient.test_synchronousc                 C   sH   t tdd}|  tdD ]}|d q|d\}}| | d S )NrV   )max_queue_size
   r,   )r   r   joinr+  rN   r;   r.  r   r   r   test_overflow  s   zTestClient.test_overflowc                 C   s   t td d S )Nunicode_key)r   sixur$   r   r   r   test_unicode  s   zTestClient.test_unicodec                 C   s(   | j dd | j   | | j d S )Ni  zpython event)r#   r9   r*   r;   r   r$   r   r   r   test_numeric_distinct_id  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,   rK   rL   )r   r   failr+  rN   r*   r;   r   )r   r#   rP   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:  )r<   len)argskwargsr$   r   r   mock_post_fn1  s   z;TestClient.test_user_defined_flush_at.<locals>.mock_post_fnr   )r      r,   rK   rL   rV   rX   )r   r   rF  r   r   r+  rN   timesleepr<   r   )r   r#   rM  	mock_postrP   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   r2  r<   r   r   r#   r4  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   rS  rT  r   r   r   test_default_timeout_15C  s   
z"TestClient.test_default_timeout_15c                 C   sN   t t| jdd}|dd\}}|  | | | | j | |d d S )NTr"   disabledr,   r-   rY  )r   r   r!   r9   r*   r;   r   r<   rB   r   r   r   test_disabledH  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 )NTrX  r   12345r   )r   featureFlagPayloads)r   r   r!   get_feature_flagr?   assert_not_calledfeature_enabledget_all_flagsget_feature_flag_payloadget_all_flags_and_payloadsr<   r:   r,  r-  )r   r   r#   responser   r   r    test_disabled_with_feature_flagsQ  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 )NFrX  r,   r-   r.   TrY  )
r   r   r!   r9   r*   r:   r;   r   r<   rY  rB   r   r   r   test_enabled_to_disabledl  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-   r1   r   rK   rL   )r   r   r!   r9   r*   r<   rN   r   r#   rP   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 )NFrf  r,   bd)r   cTr   r1   r   zhttp://a.comrK   rL   )r   r   r!   r  r*   r<   r&  rg  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 )	NTrf  r,   r-   Frn  r   r1   )r   r   r!   r9   r*   r:   rO   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   rf  r   some_idrn  r   r   r,   r   feature_enabled_distinct_idall_flags_payloads_id)	rS   r   r   r!   r]  r   
reset_mockr_  rb  r   r   r#   r   r   r   $test_disable_geoip_default_on_decide  sX   



z/TestClient.test_disable_geoip_default_on_decidezposthog.client.Pollerc                 C   s@   dd }||j j_ttdd}ddig|_| |dd d S )Nc                   S   s   t d)Nzhttp exception)rY   r   r   r   r   raise_effect  s   z9TestClient.test_call_identify_fails.<locals>.raise_effectr   r   r   exampler,   )rS   
raiseErrorr   r   r   r   r;   r_  )r   r   
patch_pollrw  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)rs   r"   r   r   rq  r   r   r   x1y1r   xy)r   r   r   r   )r,   r|  )r  r~  r  r   r,   overridegroup_override)rS   r   r   r!   r]  r   rt  rb  ru  r   r   r   *test_default_properties_get_added_properly  s   

z5TestClient.test_default_properties_get_added_properly)
macOSdarwinr      r:  
MockPython3.8.10zMac OS X10.15.7mac_ver)r   r  N)
Windowswin32r  r  r  r  10	win32_ver)r  r  r  r  NLinuxlinuxr  r  r  z20.04Nversionc              
   C   s  t du}t dW}||j_||_||_|r|	t||_|dkrEt jd||fd ddlm} | }W d   n1 s?w   Y  n	ddlm} | }||||d	}||ks[J W d   n1 sew   Y  W d   dS W d   dS 1 s}w   Y  dS )
zATest that we can mock platform and sys for testing system_contextzposthog.client.platformzposthog.client.sysr  zposthog.client.get_os_inforR   r   )system_contextN)r5   r6   r7   r8   )	r   r   python_implementationrS   version_infoplatformr   posthog.clientr  )r   _namesys_platformr  expected_runtimeexpected_versionexpected_osexpected_os_versionplatform_methodplatform_returndistro_infomock_platformmock_sysr  contextexpected_contextr   r   r   test_mock_system_context%  s@   7	"z#TestClient.test_mock_system_contextc                 C   s   ddddddiddd|_ tt}d	}d
di}ddi}||||}|tdddd tdddtddd d td ddtddd d td ddddddksOJ d S )Nr   TFr   r   z{"some": "data"}ztest-id)r   r\  errorsWhileComputingFlags	requestIdtest_distinct_idtest_group_typetest_group_idtest_property
test_value)payload)r   enabledvariantreasonmetadatar   r   )flagsr  r  )rS   r   r   get_flags_decisionr	   r
   )r   r   r#   r,   r   r   rc  r   r   r   2test_get_decide_returns_normalized_decide_response  sZ   		z=TestClient.test_get_decide_returns_normalized_decide_response)G__name__
__module____qualname__classmethodr   r   r!   r%   r(   r+   rE   rF   rH   rQ   ro   rp   ru   rw   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)  r0  r5  r8  r<  r@  rA  rD  rG  rR  rU  rW  rZ  rd  re  rj  ro  rp  rv  r{  r  r   expandr  r  r   r   r   r   r      s    

!6

 

j
/
7
		


/

M
)5r   )rO  unittestr   r0   r   r   r>  r   r  r   posthog.requestr   posthog.test.test_utilsr   posthog.typesr	   r
   posthog.versionr   TestCaser   r   r   r   r   <module>   s    