
    Zi{                         d dl Z d dlZd dlmZ d dlmZ d dlmZmZ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ej                  ZdS )    N)datetime)uuid4)get_context_session_idset_context_sessionnew_context)parameterizedClient)APIError)FAKE_TEST_API_KEY)FeatureFlagLegacyFlagMetadata)VERSIONc                   6   e Zd Zed             Zed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z. e/j0        d,d-i i fd.d/d0d1d2d3d0d1d2d3fd4 e1 e2                      i i fd5d6i i fd7d8i i fd9d:i i fg          d;             Z3d< Z4d= Z5d> Z6 e/j0        d?d@dAdBdCidBdCifdDdEdFdGdHdIdJgdKdLdGifdMdNdOdPdQd0dRdQdSdPdQd0dRdQdSfdTdUdVdWdPd1dXdPdYdZd[dWdPd1dXdPdYdZd[fg          d\             Z7 e/j0        d]d^d_d`dad^dbd_ifdcd_dWdddeded_dWddfdfi dgdgi fdhdid_djdkdkdid_djfg          dl             Z8dm Z9dn Z:do Z;dp Z<dq Z=dr Z>ds Z?dt Z@du ZAdv ZBdw ZCdx ZD ej        d          dy             ZEdz ZFd{ ZGd| ZHd} ZI ej        d          d~             ZJ ej        d           ej        d          d                         ZK ej        d          d             ZL e/j0        dddddddddddddif
g          d             ZM ej        d          d             ZNd ZOd ZPd ZQd ZRd ZSdS )
TestClientc                     t          j        d          | _        t          j        d          | _        | j                                         | j                                         d S )Nzposthog.client.batch_postposthog.consumer.batch_post)mockpatchclient_post_patcherconsumer_post_patcherstartclss    S/root/projects/butler/venv/lib/python3.11/site-packages/posthog/test/test_client.py
setUpClasszTestClient.setUpClass   sZ     #'*-H"I"I$(J/L$M$M!%%'''!'')))))    c                 j    | j                                          | j                                         d S N)r   stopr   r   s    r   tearDownClasszTestClient.tearDownClass   s2    $$&&&!&&(((((r   c                 6    t          d||           d| _        dS )zMark the failure handlerFAILTN)printfailed)selfebatchs      r   set_failzTestClient.set_fail    s    far   c                 T    d| _         t          t          | j                  | _        d S )NF)on_error)r%   r
   r   r)   clientr&   s    r   setUpzTestClient.setUp%   s$    .GGGr   c                 F    |                      t          t                     d S r   )assertRaisesAssertionErrorr
   r-   s    r   test_requires_api_keyz TestClient.test_requires_api_key)   s    .&11111r   c                 8    | j                                          d S r   )r,   flushr-   s    r   test_empty_flushzTestClient.test_empty_flush,   s    r   c                 j   | 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    sJ |d         d         t          j        k    sJ |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,   capturer4   
assertTrueassertFalser%   assertEqual
isinstancestrassertIsNonegetr   r   ANYr&   r,   successmsgs       r   test_basic_capturezTestClient.test_basic_capture/   s   ~~m5HII   %%%W':;;;
3{#3S99:::#''&//***]+];;;\*624DEEE\*>:GDDD< !23tx????< !23tx????< '483333< /48;;;;;;r   c                    | j         }t          t                                }|                    dd|          \  }}|                                 |                     |           |                     | j                   |                     |d         d           |                     t          |d         t                               |                     |d         |           |                     |d         d           |                     |d         d         d	           |                     |d         d
         t                     d S )Nr7   r8   )r;   r9   r:   r;   r<   r=   r>   r?   )r,   rI   r   rD   r4   rE   rF   r%   rG   rH   r   )r&   r,   r;   rN   rO   s        r   test_basic_capture_with_uuidz'TestClient.test_basic_capture_with_uuidB   s!   577||~~m5Ht~TT   %%%W':;;;
3{#3S99:::Vd+++]+];;;\*624DEEE\*>:GDDDDDr   c                    t          t          | j                  }|                    dd          \  }}|                                 |                     |           |                     | j                   |                     |d         d           |                     t          |d         t                               |                     |                    d                     |                     |d         d           |                     |d         d         d	           |                     |d         d
         t                     d S )N)project_api_keyr+   r7   r8   r9   r:   r;   r<   r=   r>   r?   )r
   r   r)   rD   r4   rE   rF   r%   rG   rH   rI   rJ   rK   r   rM   s       r   'test_basic_capture_with_project_api_keyz2TestClient.test_basic_capture_with_project_api_keyQ   s    (9DMRRR~~m5HII   %%%W':;;;
3{#3S99:::#''&//***]+];;;\*624DEEE\*>:GDDDDDr   c                    t          t          ddi          }|                    dd          \  }}|                                 |                     |d         d           |                     |d         d         d           |                    ddd	i          \  }}|                                 |                     |d
         d         d	           |                     |d         d         d           d S )Nsourcez	repo-namesuper_propertiesr7   r8   r9   r<   traitvalue$set)r
   r   rD   r4   rG   identifyr&   r,   _rO   s       r   test_basic_super_propertiesz&TestClient.test_basic_super_properties`   s    )X{<STTT/BCC3W':;;;\*84kBBB'0BCC3VW-w777\*84kBBBBBr   c                    t           j                            t          dd           5 }| j        }t          d          }|                    |d           |                     |j                   |j	        d         }| 
                    |d         d           | 
                    |d         d           d d d            d S # 1 swxY w Y   d S )	NrD   return_valuetest exceptionr7   r7   r      
$exceptionr   r   objectr
   r,   	Exceptioncapture_exceptionrE   called	call_argsrG   r&   patch_capturer,   	exceptioncapture_calls        r   test_basic_capture_exceptionz'TestClient.test_basic_capture_exceptiono   s   ZvytDD 	<[F!"233I$$YM$JJJOOM0111(215L\!_m<<<\!_l;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   BCC	Cc                    t           j                            t          dd           5 }| j        }t          d          }|                    |d           |                     |j                   |j	        d         }| 
                    |d         d           | 
                    |d         d           d d d            d S # 1 swxY w Y   d S )NrD   rb   rd   r7   r   rf   rg   rh   rn   s        r   -test_basic_capture_exception_with_distinct_idz8TestClient.test_basic_capture_exception_with_distinct_idz   s   ZvytDD 	<[F!"233I$$Y>>>OOM0111(215L\!_m<<<\!_l;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   BCCCc                    t           j                            t          dd           5 }t          t          | j        d          }t          d          }|                    |d           |                     |j	                   |j
        d         }|                     |d         d           |                     |d         d	           d d d            d S # 1 swxY w Y   d S )
NrD   rb   zhttps://aloha.comr+   hostrd   r7   r   rf   rg   r   r   ri   r
   r   r)   rj   rk   rE   rl   rm   rG   rn   s        r   9test_basic_capture_exception_with_correct_host_generationzDTestClient.test_basic_capture_exception_with_correct_host_generation   s   ZvytDD 
	<!DM@S  F ""233I$$Y>>>OOM0111(215L\!_m<<<\!_l;;;
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	< 
	<   B!CCCc                    t           j                            t          dd           5 }t          t          | j        d          }t          d          }|                    |d           |                     |j	                   |j
        d         }|                     |d         d           |                     |d         d	           d d d            d S # 1 swxY w Y   d S )
NrD   rb   https://app.posthog.comrv   rd   r7   r   rf   rg   rx   rn   s        r   Jtest_basic_capture_exception_with_correct_host_generation_for_server_hostszUTestClient.test_basic_capture_exception_with_correct_host_generation_for_server_hosts   s    ZvytDD 	<!.  F
 ""233I$$Y>>>OOM0111(215L\!_m<<<\!_l;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<rz   c                    t           j                            t          dd           5 }| j        }	 t          d          # t
          $ r |                    d           Y nw xY 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           d d d            d S # 1 swxY w Y   d S )NrD   rb   rd   r7   re   r   rf   rg      z$exception_typerj   z$exception_messagez$exception_list	mechanismtypegenerichandledTmoduler[   
stacktracerawframesfilenamezposthog/test/test_client.pyfunction4test_basic_capture_exception_with_no_exception_givenzposthog.test.test_clientin_apprh   )r&   ro   r,   rq   s       r   r   z?TestClient.test_basic_capture_exception_with_no_exception_given   s   ZvytDD 3	[FD 0111 D D D((](CCCCCD OOM0111(215L\!_m<<<\!_l;;;\!_->?MMM\!_-ABDTUUUQ 1215kB6JI   Q 1215kB9Mt   \!_->?B8LdSSS\!_->?B6JKXXXQ 1215g>@P   Q 1215lCFK   Q 1215lCHMaP .	   Q 1215lCHMaP G	   Q 1215lCHMaP +	   Q 1215lCHMaP 	  ]3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	 3	s/   L<A   A# L<"A##KL<<M M c                    t           j                            t          dd           5 }|                     dd          5 }| j        }|                                 |                     |j                   | 	                    |j
        d         d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrD   rb   posthogWARNINGlevelr   z2WARNING:posthog:No exception information available)r   r   ri   r
   
assertLogsr,   rk   rF   rl   rG   output)r&   ro   logsr,   s       r   8test_basic_capture_exception_with_no_exception_happeningzCTestClient.test_basic_capture_exception_with_no_exception_happening   s<   ZvytDD 		)<< ((***  !5666  KNH                		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s6   B; AB#B;#B'	'B;*B'	+B;;B?B?c                 |   t          t          d          }|                     dd          5 }|                    t	          d          dd	           |                     |j        d
         d           |                     t          |j        d
         d          d           d d d            d S # 1 swxY w Y   d S )NT)log_captured_exceptionsr   ERRORr   rd   r7   zone/two/three)pathr   z+ERROR:posthog:test exception
NoneType: Noner   )	r
   r   r   rk   rj   rG   r   getattrrecords)r&   r,   r   s      r   (test_capture_exception_logs_when_enabledz3TestClient.test_capture_exception_logs_when_enabled   s   )4HHH__Yg_66 	P$$$*++] %    A N   WT\!_f==OOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   A6B11B58B5zposthog.client.flagsc                    dddii|_         t          t          | j        t                    }|                    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_keyr7   r8   Tsend_feature_flagsr9   r:   r;   r<   r=   r>   r?   $feature/beta-feature$active_feature_flagsrf   rc   r
   r   r)   rD   r4   rE   rF   r%   rG   rH   rI   rJ   rK   r   
call_countr&   patch_flagsr,   rN   rO   s        r   %test_basic_capture_with_feature_flagsz0TestClient.test_basic_capture_with_feature_flags   s   $2^EU4V#W ].
 
 

 ~~.4 & 
 
 	   %%%W':;;;
3{#3S99:::#''&//***]+];;;\*624DEEE\*>:GDDD\*+BCEUVVV\*+BCnEUVVV/33333r   c                    dddii|_         t          t          | j        t                    }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sJ | 
                    |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   rf   Beta Featurebeta-feature-localTd   emailpersontest@posthog.comexactkeyr   r[   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   activer   filtersperson-flagregionUSAr   r   r[   r   true,  r   r   r   r   r   r   r   z
false-flagr   r7   r8   r9   r:   r;   r<   r=   r>   r?   $feature/beta-feature-localz$feature/false-flagFr   r   rc   r
   r   r)   feature_flagsrD   r4   rE   rF   r%   rG   rH   rI   rJ   rK   r   r   )r&   r   r,   multivariate_flag
basic_flag
false_flagrN   rO   s           r   7test_basic_capture_with_locally_evaluated_feature_flagszBTestClient.test_basic_capture_with_locally_evaluated_feature_flags  s   $2^EU4V#W ].
 
 
 "'"% (/(0);,3	 ' /2
 
 -b" #2$324  $4$424  $3$324 !!( &4&)6] I( (/
 /
b "  (0,3*/(0	 ' /2
 
 $SM 
 

. " ')./  $SM 
 

 !2:zJ~~m5HII   %%%W':;;;
3{#3S99:::#''&//***]+];;;\*624DEEE\*>:GDDD;<o	
 	
 	
 	\*+@A5III569M8N	
 	
 	
 'c,.?????/333  "~~m5HII   %%%&c,.?????,C4EEEEE$C,=====&c,.???????r   zposthog.client.getc                    dddd}t          d|d                   |_        t          t          d          }|                     d	d
          5 }|                                 |                     |j        g            |                     |j        i            |                     |j	        i            |                     |j
        i            |                     d|j        d                    d d d            d S # 1 swxY w 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_flagsrG   r   feature_flags_by_keygroup_type_mappingcohortsassertInr   )r&   	patch_getmock_responser,   r   s        r   %test_load_feature_flags_quota_limitedz0TestClient.test_load_feature_flags_quota_limited  s_    $I&
 

 !)mH.E F F	)FCCC__Yi_88 	QD&&(((V12666V8"===V6;;;V^R000MM?QPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   B"C>>DDc                 \   dddii|_         t          t          | j        t                    }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sJ d6|d0         vsJ | 
                    |j        d7           d S )8Nr   r   r   r   rf   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   r7   r8   r   zmy-custom-variantr9   r:   r;   r<   r=   r>   r?   r   r   z$feature/person-flagr   r   )r&   r   r,   r   r   rN   rO   s          r   +test_dont_override_capture_with_local_flagsz6TestClient.test_dont_override_capture_with_local_flags  s#   $2^EU4V#W ].
 
 
 "'"% (/(0);,3	 ' /2
 
 -b" #2$324  $4$424  $3$324 !!( &4&)6] I( (/
 /
b "  (0,3*/(0	 ' /2
 
 $SM 
 

, !2:>~~*,?@
 

 	   %%%W':;;;
3{#3S99:::#''&//***]+];;;\*624DEEE\*>:GDDD;<>Q	
 	
 	
 	569M8N	
 	
 	
 'c,.?????%S->>>>>/33333r   c           
      N   dddddi|_         t          t          | j        t                    }|                    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           |                    ddddi d d d           d S )Nr   r   TFr   alpha-featureoff-featurer   r7   r8   r   r9   r:   r;   r<   $geoip_disabler=   r>   r?   r   $feature/alpha-featurer   r   r   rf   
random_keyhttps://us.i.posthog.com   timeoutr7   r   person_propertiesgroup_propertiesgeoip_disablerc   r
   r   r)   rD   r4   rE   rF   r%   rG   rH   rI   rJ   rK   r   r   assert_called_withr   s        r   9test_basic_capture_with_feature_flags_returns_active_onlyzDTestClient.test_basic_capture_with_feature_flags_returns_active_only
  s@     0!%$ $
  ].
 
 

 ~~.4 & 
 
 	   %%%W':;;;
3{#3S99:::#''&//***]+];;;L)*:;<<<\*624DEEE\*>:GDDD\*+BCEUVVV\*+CDdKKK56_-	
 	
 	

 	/333&&&%"! 	' 		
 		
 		
 		
 		
r   c           
      N   dddddi|_         t          t          d| j        t          d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           |                    dddd	i d d d           d S )Nr   r   TFr   r|      )rw   r+   r   disable_geoip%feature_flags_request_timeout_secondsr7   r8   )r   r  r9   r:   r;   r   r<   r=   r>   r?   r   r   r   r   r   rf   r   r   r   r   r   s        r   Itest_basic_capture_with_feature_flags_and_disable_geoip_returns_correctlyzTTestClient.test_basic_capture_with_feature_flags_and_disable_geoip_returns_correctly:  sM   
  0!%$ $
  *].24
 
 
 ~~#	 & 
 
 	   %%%W':;;;
3{#3S99:::#''&//***(L0AABBB]+];;;\*624DEEE\*>:GDDD\*+BCEUVVV\*+CDdKKK56_-	
 	
 	

 	/333&&&%"! 	' 		
 		
 		
 		
 		
r   c                 r   dddii|_         t          t          | j        t                    }|                    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   r7   r8   Fr   r9   r:   r;   r<   r=   r>   r?   r   r   r   r   r   s        r   Ctest_basic_capture_with_feature_flags_switched_off_doesnt_send_themzNTestClient.test_basic_capture_with_feature_flags_switched_off_doesnt_send_themr  s    %3^EU4V#W ].
 
 

 ~~.5 & 
 
 	   %%%W':;;;
3{#3S99:::#''&//***]+];;;\*624DEEE\*>:GDDD/s<7HHIII/s<7HHIII/33333r   c                    | j         }|                    dd          \  }}|                                 |                     |           |                     | j                   |                     |d         d           d S )Nl   IqKr8   )r7   r9   r7   157963456373623802)r,   rD   r4   rE   rF   r%   rG   rM   s       r   test_stringifies_distinct_idz'TestClient.test_stringifies_distinct_id  s     ~~*2E & 
 
 	   %%%]+-ABBBBBr   c           
         | j         }|                    ddddit          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 )Nr7   r8   propertyr[     	   r   new-uuidr:   r;   r:   2014-09-03T00:00:00+00:00r<   r9   r=   r>   r?   r;   $groups)r,   rD   r   rE   rG   r   rM   s       r   test_advanced_capturez TestClient.test_advanced_capture  sH   ~~!tQ** & 
 
 	   [)+FGGG\*:6@@@W':;;;\*624DEEE\*>:GDDDVj111]+];;;	\)::;;;;;r   c                     | j                             ddddd          \  }}|                     |           |                     |d         d         ddd           d S )	Nr7   
test_eventid:5app.posthog.comcompanyinstance)r   r<   r  )r,   rD   rE   rG   r&   rN   rO   s      r   test_groups_capturezTestClient.test_groups_capture  s    {**%3DEE + 
 
 	   i(,=>>	
 	
 	
 	
 	
r   c                    | j         }|                    dddi          \  }}|                                 |                     |           |                     | j                   |                     |d         d         d           |                     t          |d         t                               | 	                    |
                    d                     |                     |d         d           d S Nr7   rZ   r[   r\   r:   r;   )r,   r]   r4   rE   rF   r%   rG   rH   rI   rJ   rK   rM   s       r   test_basic_identifyzTestClient.test_basic_identify  s    }w6HII   %%%VW-w777
3{#3S99:::#''&//***]+];;;;;r   c           	      r   | j         }|                    dddit          ddd          d          \  }}|                     |           |                     |d	         d
           |                     |d         d         d           |                     |d         d         d           |                     |d         d         t
                     |                     t          |d	         t                               |                     |d         d           |                     |d         d           d S Nr7   rZ   r[   r  r  r   r  r  r:   r  r\   r<   r=   r>   r?   r;   )r,   r]   r   rE   rG   r   rH   rI   rM   s       r   test_advanced_identifyz!TestClient.test_advanced_identify  s.   gtQ**	 ' 
 
 	   [)+FGGGVW-w777\*624DEEE\*>:GDDD
3{#3S99:::Vj111]+];;;;;r   c                    | j         }|                    dddi          \  }}|                                 |                     |           |                     | j                   |                     |d         d         d           |                     t          |d         t                               | 	                    |
                    d                     |                     |d         d           d S r  )r,   setr4   rE   rF   r%   rG   rH   rI   rJ   rK   rM   s       r   test_basic_setzTestClient.test_basic_set  s    zz-'71CDD   %%%VW-w777
3{#3S99:::#''&//***]+];;;;;r   c           	      r   | j         }|                    dddit          ddd          d          \  }}|                     |           |                     |d	         d
           |                     |d         d         d           |                     |d         d         d           |                     |d         d         t
                     |                     t          |d	         t                               |                     |d         d           |                     |d         d           d S r!  )r,   r$  r   rE   rG   r   rH   rI   rM   s       r   test_advanced_setzTestClient.test_advanced_set  s.   zzgtQ**	 " 
 
 	   [)+FGGGVW-w777\*624DEEE\*>:GDDD
3{#3S99:::Vj111]+];;;;;r   c                    | j         }|                    dddi          \  }}|                                 |                     |           |                     | j                   |                     |d         d         d           |                     t          |d         t                               | 	                    |
                    d                     |                     |d         d           d S )Nr7   rZ   r[   	$set_oncer:   r;   )r,   set_oncer4   rE   rF   r%   rG   rH   rI   rJ   rK   rM   s       r   test_basic_set_oncezTestClient.test_basic_set_once  s    }w6HII   %%%[)'2G<<<
3{#3S99:::#''&//***]+];;;;;r   c           	      r   | j         }|                    dddit          ddd          d          \  }}|                     |           |                     |d	         d
           |                     |d         d         d           |                     |d         d         d           |                     |d         d         t
                     |                     t          |d	         t                               |                     |d         d           |                     |d         d           d S )Nr7   rZ   r[   r  r  r   r  r  r:   r  r)  r<   r=   r>   r?   r;   )r,   r*  r   rE   rG   r   rH   rI   rM   s       r   test_advanced_set_oncez!TestClient.test_advanced_set_once  s/   gtQ**	 ' 
 
 	   [)+FGGG[)'2G<<<\*624DEEE\*>:GDDD
3{#3S99:::Vj111]+];;;;;r   c           
         | j                             dd          \  }}|                     |           |                     |d         d           |                     |d         d           |                     |d         ddi dt          d	d
           |                     t          |d         t                               |                     |                    d                     d S )Norganizationr  r9   $groupidentifyr7   $organization_id:5r<   r>   Tz$group_type
$group_keyz
$group_setr=   r?   r   r:   r;   	r,   group_identifyrE   rG   r   rH   rI   rJ   rK   r  s      r   test_basic_group_identifyz$TestClient.test_basic_group_identify  s    {11.&II   W'7888]+-ABBB-$ ( '"& 
	
 
	
 
	
 	
3{#3S99:::#''&//*****r   c           
         | j                             ddd          \  }}|                     |           |                     |d         d           |                     |d         d           |                     |d         ddi dt          d	d
           |                     t          |d         t                               |                     |                    d                     d S )Nr/  r  r7   re   r9   r0  r<   r>   Tr2  r:   r;   r4  r  s      r   *test_basic_group_identify_with_distinct_idz5TestClient.test_basic_group_identify_with_distinct_id/  s    {11F 2 
 
 	   W'7888]+];;;-$ ( '"& 
	
 
	
 
	
 	
3{#3S99:::#''&//*****r   c           
         | j                             dd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 S )Nr/  r  rZ   r[   r  r  r   r  r  r9   r0  r7   r1  r<   r>   Tr2  r:   r  r,   r5  r   rE   rG   r   r  s      r   test_advanced_group_identifyz'TestClient.test_advanced_group_identifyD  s    {11gtQ** 2 
 
 	   W'7888]+-ABBB-$&0( '"& 
	
 
	
 
	
 	[)+FGGGGGr   c           
         | 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  rZ   r[   r  r  r   r  r7   )r:   r;   r7   r9   r0  r<   r>   Tr2  r:   r  r:  r  s      r   -test_advanced_group_identify_with_distinct_idz8TestClient.test_advanced_group_identify_with_distinct_id]  s    {11gtQ**% 2 
 
 	   W'7888]+];;;-$&0( '"& 
	
 
	
 
	
 	[)+FGGGGGr   c                 T   | j         }|                    dd          \  }}|                                 |                     |           |                     | j                   |                     |d         d         d           |                     |d         d         d           d S )N
previousIdr7   r<   alias)r,   r@  r4   rE   rF   r%   rG   rM   s       r   test_basic_aliaszTestClient.test_basic_aliasx  s    ||L-@@   %%%\*=9<HHH\*73]CCCCCr   c                 J   | j         }|                    dd          \  }}|                     | j                   |                                 |                     |           |                     |d         d           |                     |d         d         d           d S )Nr7   https://posthog.com/contacturlr<   $current_url)r,   pagerF   r%   r4   rE   rG   rM   s       r   test_basic_pagezTestClient.test_basic_page  s    {{=6S{TT%%%   ]+];;;n-/L	
 	
 	
 	
 	
r   c                    | j         }t                      }|                    |d          \  }}|                     | j                   |                                 |                     |           |                     |d         t          |                     |                     |d         d         d           d S )NrC  rD  r7   r<   rF  )	r,   r   rG  rF   r%   r4   rE   rG   rI   )r&   r,   r7   rN   rO   s        r   test_basic_page_distinct_uuidz(TestClient.test_basic_page_distinct_uuid  s    gg{{;4Q{RR%%%   ]+S-=-=>>>n-/L	
 	
 	
 	
 	
r   c           
         | 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
                     |                     t          |d
         t                               |                     |d         d           |                     |d         d           d S )Nr7   rC  r  r[   r  r  r   r  r  r:   r  r<   rF  r=   r>   r?   r;   )r,   rG  r   rE   rG   r   rH   rI   rM   s       r   test_advanced_pagezTestClient.test_advanced_page  s\   {{)!tQ** # 
 
 	   [)+FGGGn-/L	
 	
 	
 	\*:6@@@\*624DEEE\*>:GDDD
3{#3S99:::Vj111]+];;;;;r   basic_session_idztest-session-123 session_id_with_other_propertiesztest-session-456custom_valueFzhttps://example.com)custom_prop$process_person_profilerF  session_id_uuid_formatsession_id_numeric_string
1234567890session_id_empty_string session_id_with_special_charszsession-123_test.idc                    | j         }d|i|}|                    dd|          \  }}|                                 |                     |           |                     | j                   |                     |d         d           |                     |d         d           |                     |d         d         |           |                     |d         d         d           |                     |d         d	         t                     |                                D ]'\  }	}
|                     |d         |	         |
           (d S )
N$session_idr7   r8   r<   r9   r<   r=   r>   r?   )	r,   rD   r4   rE   rF   r%   rG   r   items)r&   	test_name
session_idadditional_propertiesexpected_propertiesr,   r<   rN   rO   r   r[   s              r   'test_capture_with_session_id_variationsz2TestClient.test_capture_with_session_id_variations  s[   6 #ZI3HI
~~.: & 
 
 	   %%%W':;;;]+];;;\*=9:FFF\*624DEEE\*>:GDDD .3355 	< 	<JCS.s3U;;;;	< 	<r   c                 :   | j         }d}|                    ddd|iddd          \  }}|                                 |                     |           |                     |d	         d         |           |                     |d	         d
         ddd           d S )Nzgroup-session-101r7   r  rY  r  r  r  )r<   r   r<   r  r,   rD   r4   rE   rG   r&   r,   r]  rN   rO   s        r   %test_session_id_preserved_with_groupsz0TestClient.test_session_id_preserved_with_groups  s    (
~~%z2%3DEE	 & 
 
 	   \*=9:FFFi(,=>>	
 	
 	
 	
 	
r   c                 .   | j         }d}|                    dd|dd          \  }}|                                 |                     |           |                     |d         d         |           |                     |d         d	         d           d S )
Nzanonymous-session-202r7   anonymous_eventF)rY  rQ  rZ  r<   rY  rQ  rb  rc  s        r   $test_session_id_with_anonymous_eventz/TestClient.test_session_id_with_anonymous_event  s    ,
~~'1eTT & 
 

 	   \*=9:FFF\*+DEuMMMMMr   c                    | j         }d}|                    dd|dd          \  }}|                                 |                     |           |                     | j                   |                     |d         d           |                     |d         d           |                     |d	         d
         |           |                     |d	         d         d           |                     |d	         d         d           d S )Nzpage-session-303r7   rC  contactrY  	page_typerZ  r9   z	$pageviewr<   rY  rF  rk  )r,   rG  r4   rE   rF   r%   rG   rc  s        r   test_page_with_session_idz$TestClient.test_page_with_session_id   s   '
{{)'1	JJ # 
 

 	   %%%W{333]+];;;\*=9:FFFn-/L	
 	
 	
 	\*;7CCCCCr   screen_eventz$screenzspecial-session-505z$screen_name
HomeScreensurvey_eventzsurvey sentzsurvey-session-606
survey_123q1z#How likely are you to recommend us?)r   question)
$survey_idz$survey_questionsrs  complex_properties_eventcomplex_eventzmixed-session-707https://example.com/pageT*   )rF  rQ  custom_propertynumeric_propertyboolean_propertycsp_violationz$csp_violationzcsp-session-789z1.0zMozilla/5.0 Test Agentzhttps://malicious.com/script.jsz
script-src)z$csp_versionrF  rQ  z$raw_user_agentz$csp_document_urlz$csp_blocked_urlz$csp_violated_directivec                 .   | j         }d|i|}|                    d||          \  }}	|                                 |                     |           |                     |	d         |           |                     |	d         d         |           |                                D ]'\  }
}|                     |	d         |
         |           (|                     |	d         d         d           |                     |	d         d         t                     d S )	NrY  r7   rZ  r9   r<   r=   r>   r?   )r,   rD   r4   rE   rG   r[  r   )r&   r\  
event_namer]  r^  expected_additional_propertiesr,   r<   rN   rO   r   r[   s               r   *test_session_id_with_different_event_typesz5TestClient.test_session_id_with_different_event_types  s   T #ZI3HI
~~mZJ~WW   Wz222\*=9:FFF 9>>@@ 	< 	<JCS.s3U;;;; 	\*624DEEE\*>:GDDDDDr   $super_properties_override_session_idzsuper-sessionr   )rY  rW   zevent-session-808rW   no_super_properties_conflict)rW   versionzevent-session-909empty_super_propertieszevent-session-111(super_properties_with_other_dollar_propszhttps://super.com)rF  rW   zevent-session-222c                 z   t          t          |          }|                    ddd|i          \  }}|                                 |                     |           |                     |d         d         |           |                                D ]'\  }	}
|                     |d         |	         |
           (d S )NrX   r7   r  rY  rZ  r<   )r
   r   rD   r4   rE   rG   r[  )r&   r\  rY   event_session_idexpected_session_idexpected_super_propsr,   rN   rO   r   r[   s              r   0test_session_id_with_super_properties_variationsz;TestClient.test_session_id_with_super_properties_variationsq  s    R )<LMMM~~<]DT4U & 
 
 	   \*=9;NOOO /4466 	< 	<JCS.s3U;;;;	< 	<r   c                     | j         }t          d          D ]}|                    dddi          \  }}|                                 |                     |j                                                   d S Ni  r7   rZ   r[   )r,   ranger]   r4   rE   queueemptyr&   r,   irN   rO   s        r   
test_flushzTestClient.test_flush  ss    t 	N 	NA!??=7G:LMMLGSS 	**,,-----r   c                 P   | j         }t          d          D ]}|                    dddi          \  }}|                                 |                     |j                                                   |j        D ])}|                     |	                                           *d S r  )
r,   r  r]   shutdownrE   r  r  	consumersrF   is_alive)r&   r,   r  rN   rO   consumers         r   test_shutdownzTestClient.test_shutdown  s    t 	N 	NA!??=7G:LMMLGSS 	**,,---( 	2 	2HX..001111	2 	2r   c                    t          t          d          }|                    d          \  }}|                     |j                   |                     |j                                                   |                     |           d S )NT)	sync_moder7   )r
   r   r]   rF   r  rE   r  r  )r&   r,   rN   messages       r   test_synchronouszTestClient.test_synchronous  sz    )T:::!??=99)*****,,---     r   c                    t          t          d          }|                                 t          d          D ]}|                    d           |                    d          \  }}|                     |           d S )Nrf   )max_queue_size
   r7   )r
   r   joinr  r]   rF   r  s        r   test_overflowzTestClient.test_overflow  s{    )!<<<r 	+ 	+AOOM****}55!!!!!r   c                 H    t          t          j        d                     d S )Nunicode_key)r
   sixur-   s    r   test_unicodezTestClient.test_unicode  s     su]##$$$$$r   c                     | j                             dd           | j                                          |                     | j                   d S )Ni  zpython event)r,   rD   r4   rF   r%   r-   s    r   test_numeric_distinct_idz#TestClient.test_numeric_distinct_id  sJ    D.111%%%%%r   c                 (    t          dd           d S )Nbad_keyT)debugr	   r-   s    r   
test_debugzTestClient.test_debug  s    y%%%%%%r   c                     t          t          | j        d          }t          d          D ]}|                    dddi           |                                 |                     | j                   d S )NT)r+   gzipr  r7   rZ   r[   )r
   r   failr  r]   r4   rF   r%   )r&   r,   r_   s      r   	test_gzipzTestClient.test_gzip  ss    )DIDIIIr 	? 	?AOOMGW+=>>>>%%%%%r   c                 \    t          t           j        dd          } fd}t          j        d|          5 }t          d          D ]}|                    dd	d
i           t          j        d            	                    |j
        d           d d d            d S # 1 swxY w Y   d S )Nr  r   )r+   flush_atflush_intervalc                  Z                         t          |d                   d           d S )Nr(   r  )rG   len)argskwargsr&   s     r   mock_post_fnz;TestClient.test_user_defined_flush_at.<locals>.mock_post_fn  s+    S11266666r   r   )r      r7   rZ   r[   rf   r   )r
   r   r  r   r   r  r]   timesleeprG   r   )r&   r,   r  	mock_postr_   s   `    r   test_user_defined_flush_atz%TestClient.test_user_defined_flush_at  s   	Bq
 
 
	7 	7 	7 	7 	7
 Z)|
 
 
 	62YY C C/ABBBBJqMMMY11555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   AB!!B%(B%c                 |    t          t          d          }|j        D ]}|                     |j        d           d S )Nr  )r   r
   r   r  rG   r   r&   r,   r  s      r   test_user_defined_timeoutz$TestClient.test_user_defined_timeout  sM    )2666( 	3 	3HX-r2222	3 	3r   c                 x    t          t                    }|j        D ]}|                     |j        d           d S )N   r  r  s      r   test_default_timeout_15z"TestClient.test_default_timeout_15  sH    )**( 	3 	3HX-r2222	3 	3r   c                 "   t          t          | j        d          }|                    dd          \  }}|                                 |                     |           |                     | j                   |                     |d           d S )NTr+   disabledr7   r8   r  )r
   r   r)   rD   r4   rF   r%   rG   rM   s       r   test_disabledzTestClient.test_disabled  s    )DMDQQQ~~m5HII!!!%%%j)))))r   c                    t          t          | j        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_flagrJ   assert_not_calledfeature_enabledget_all_flagsget_feature_flag_payloadget_all_flags_and_payloadsrG   rE   r  r  )r&   r   r,   responses       r    test_disabled_with_feature_flagsz+TestClient.test_disabled_with_feature_flags  so   )DMDQQQ**>7CC(###%%''')).'BB(###%%'''''00(###%%'''225'BB(###%%'''44W==DQU#V#VWWW%%''' 	**,,-----r   c                     t          t          | j        d          }|                    dd          \  }}|                                 |                     |           |                     | j                   |                     |d         d           d|_	        |                    dd          \  }}|                                 |                     |           |                     | j                   |                     |d           d S )NFr  r7   r8   r9   Tr  )
r
   r   r)   rD   r4   rE   rF   r%   rG   r  rM   s       r   test_enabled_to_disabledz#TestClient.test_enabled_to_disabled&  s    )DMERRR~~m5HII   %%%W':;;;~~m5HII!!!%%%j)))))r   c                 ~   t          t          | j        d          }|                    dd          \  }}|                                 |                     |d         d         d           |                    dddi          \  }}|                                 |                     |d         d         d           d S )	NTr+   r  r7   r8   r<   r   rZ   r[   )r
   r   r)   rD   r4   rG   r]   r&   r,   r_   capture_msgidentify_msgs        r   $test_disable_geoip_default_on_eventsz/TestClient.test_disable_geoip_default_on_events7  s    )DMQUVVV7JKK;\23CDdKKK //-'79KLL<l34DEtLLLLLr   c                    t          t          | j        d          }|                    ddddd          \  }}|                                 |                     |d	         d
         d           |                    ddddid          \  }}|                                 |                     d
|d	         vd           d S )NFr  r7   bd)r   cTr  r<   r   zhttp://a.comrZ   r[   )r
   r   r)   r$  r4   rG   rG  r  s        r   %test_disable_geoip_override_on_eventsz0TestClient.test_disable_geoip_override_on_eventsA  s    )DMQVWWW3//t $ 
 
; 	\23CDdKKK ++>GW+=U & 
 
< 	)l1KKTRRRRRr   c                     t          t          | j        d          }|                    ddd          \  }}|                                 |                     d|d         v           d S )	NTr  r7   r8   Fr  r   r<   )r
   r   r)   rD   r4   rE   r^   s       r   2test_disable_geoip_method_overrides_init_on_eventsz=TestClient.test_disable_geoip_method_overrides_init_on_eventsO  sg    )DMQUVVV/BRWXX3(L0AABBBBBr   c           
         dddddi|_         t          t          | j        d          }|                    ddd	           |                    dd
ddi ddii d           |                                 |                    ddd	           |                    dd
ddi ddii d           |                                 |                    d           |                    dd
ddi ddii d           d S )Nr   r   TFr   r  r   some_idr  r   r   r7   r   feature_enabled_distinct_idall_flags_payloads_id)	rc   r
   r   r)   r  r   
reset_mockr  r  r&   r   r,   s      r   $test_disable_geoip_default_on_decidez/TestClient.test_disable_geoip_default_on_decideU  sw     0!%$ $
  )DMQVWWWitLLL&&&!,i8 	' 		
 		
 		
 	   7t 	 	
 	
 	
 	&&&5,.KL 	' 		
 		
 		
 	   ))*ABBB&&&/,.EF 	' 		
 		
 		
 		
 		
r   zposthog.client.Pollerc                     d }||j         j        _        t          t          d          }ddig|_        |                     |                    dd                     d S )Nc                       t          d          )Nzhttp exception)rj    r   r   raise_effectz9TestClient.test_call_identify_fails.<locals>.raise_effect  s    ,---r   r   r   r   exampler7   )rc   
raiseErrorr   r
   r   r   rF   r  )r&   r   
patch_pollr  r,   s        r   test_call_identify_failsz#TestClient.test_call_identify_fails  so    	. 	. 	. 9E	)5)FCCC!&	 23//	=IIJJJJJr   c                 N   dddddi|_         t          t          d| j        d          }|                    dd	d
ddddidddii           |                    dddd	d
ddd	ddd
ddddidd           |                                 |                    dd	d
ddddidddii           |                    dddd	d
ddddiddiddidd           |                                 |                    d	i d d            |                    dddd	i dd	ii d           d S )Nr   r   TFr   zhttp://app2.posthog.com)rw   r+   r  r   r  r  r  r  x1y1r  xy)r   r   r   r   )r7   r  )r3  r  r3  r   r7   overridegroup_override)rc   r
   r   r)   r  r   r  r  r  s      r   *test_default_properties_get_added_properlyz5TestClient.test_default_properties_get_added_properly  s/     0!%$ $
  *]	
 
 
 	%3DEE#Tl'#s4 	  	
 	
 	
 	&&%!%3DEE.7tDD*0s;;)+<=    	' 	
 	
 	
 	   %3DEE,j9 "2 	  
	
 
	
 
	
 	&&%!%3DEE,j9(*:;)+<=    	' 	
 	
 	
 	   ))bD4 	* 	
 	
 	
 	&&%!,i8 	' 		
 		
 		
 		
 		
r   )
macOSdarwinr      r  
MockPython3.8.10zMac OS X10.15.7mac_ver)r   rV  rV  N)
Windowswin32r  r  r  r  10	win32_ver)r  rV  rV  rV  NLinuxlinuxr  r  r  z20.04Nr  c                    t          j        d          5 }t          j        d          5 }||j        _        ||_        ||_        |r|	t          ||          _        |dk    rAt          j        d||f          5  ddlm}  |            }ddd           n# 1 swxY w Y   nddlm}  |            }||||d	}||k    sJ 	 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY 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_inforb   r   )system_contextN)r@   rA   rB   rC   )	r   r   python_implementationrc   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_contexts                   r   test_mock_system_contextz#TestClient.test_mock_system_context  s   n Z122 %	3m011 $3XCS3@(4%$0! # 5 &5 % "  7**4&13F%G   3 3 BAAAAA"0."2"23 3 3 3 3 3 3 3 3 3 3 3 3 3 3 >=====,n..G (8'7&#6	$ $  "222222I$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 %	3 %	3 %	3 %	3 %	3sY   C'AC:BCBCB#CC'C	C'C	C''C+.C+c                 t   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                    t	          ddd d t          d                     t	          ddd d t          d                     ddddk    sJ 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  )rc   r
   r   get_flags_decisionr   r   )r&   r   r,   r7   r   r   r  s          r   2test_get_decide_returns_normalized_decide_responsez=TestClient.test_get_decide_returns_normalized_decide_response=  sS    !1!%$ 
 %34F#G)."	$
 	$
  )**(#_5,l;,,[&BSTT +& ,/ 2  ! ! ! "-'  / $  " " "  +%! / $       ' : */"? 
  
  
  
  
  
  
  
r   c                 T   t                      5  t          d           | j                            ddddi          \  }}| j                                         |                     |           |                     |d         d         d           d d d            d S # 1 swxY w Y   d S )Nzcontext-session-123r7   r  rP  r[   r<   rY  )r   r   r,   rD   r4   rE   rG   r  s      r   %test_set_context_session_with_capturez0TestClient.test_set_context_session_with_captures  s   ]] 		V 		V 5666;..|mW-E LGS KOOG$$$S.}=?TUUU		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		V 		Vs   BBB!$B!c                 N   t                      5  t          d           | j                            dd          \  }}| j                                         |                     |           |                     |d         d         d           d d d            d S # 1 swxY w Y   d S )Nzpage-context-session-456r7   rv  r<   rY  )r   r   r,   rG  r4   rE   rG   r  s      r   "test_set_context_session_with_pagez-TestClient.test_set_context_session_with_page  s    ]] 		 		 :;;;;++M;UVVLGSKOOG$$$L!-02L  		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   A>BB!Bc                 r   t                      5  t          d           t                      dd}| j                            dd|          \  }}| j                                         |                     |           |                     |d         d         d           d d d            d S # 1 swxY w Y   d S )Nzpage-explicit-session-789landingrj  r7   zhttps://example.com/landingr<   rY  )r   r   r   r,   rG  r4   rE   rG   )r&   r<   rN   rO   s       r   6test_set_context_session_with_page_explicit_propertieszATestClient.test_set_context_session_with_page_explicit_properties  s   ]] 	 	 ;<<<  677& J  ;++<j LGS KOOG$$$L!-02M  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BB,,B03B0c                 V   ddl m}m}  |            5   |d           | j                            ddddd          \  }}| j                                         |                     |           |                     |d	         d
         d           ddd           dS # 1 swxY w Y   dS )zETest that explicit session ID overrides context session ID in capturer   )r   r   zcontext-session-overrider7   r  zexplicit-session-overrider[   )rY  rP  r<   rY  N)posthog.scopesr   r   r,   rD   r4   rE   rG   )r&   r   r   rN   rO   s        r   ,test_set_context_session_override_in_capturez7TestClient.test_set_context_session_override_in_capture  s   CCCCCCCC[]] 	 	 :;;;;.. ;GTT LGS
 KOOG$$$L!-02M  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A>BB"%B"c                 V   t          d          5  t          d           | j                            dddi          \  }}| j                                         |                     |           |                     |d         d         d           d d d            d S # 1 swxY w Y   d S )	NF)capture_exceptionszidentify-session-555r7   rZ   r[   r\   rY  )r   r   r,   r]   r4   rE   rG   r  s      r   &test_set_context_session_with_identifyz1TestClient.test_set_context_session_with_identify  s    E222 	Q 	Q 6777;//?QRRLGSKOOG$$$S[79OPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   B BB"%B")T__name__
__module____qualname__classmethodr   r!   r)   r.   r2   r5   rP   rR   rU   r`   rr   rt   ry   r}   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r"  r%  r'  r+  r-  r6  r8  r;  r=  rA  rH  rJ  rL  r   expandrI   r   r`  rd  rg  rl  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/  r2  r5  r8  r  r   r   r   r      s       * * [* ) ) [)  
H H H2 2 2  < < <&E E EE E EC C C	< 	< 	<	< 	< 	<< < << < <"4 4 4l
 
 
	P 	P 	P TZ&''4 4 ('44 TZ&''~@ ~@ ('~@@ TZ$%%Q Q &%Q$ TZ&''h4 h4 ('h4T TZ&''-
 -
 ('-
^ TZ&''5
 5
 ('5
n TZ&''4 4 ('48C C C< < <*
 
 

< 
< 
<< < <&
< 
< 
<< < <&
< 
< 
<< < <&+ + +(+ + +*H H H2H H H6D D D	
 	
 	


 

 

< < <. ]  !3R<2"#1/4$9  $2/4$9  &ss5577||R<(,B?&B3,.CRL)	
 0< <1 0<.
 
 
&N N ND D D* ] %.. $".#1VWW*  |, +#$>/3'5(*(,  %?/3'5(*(, (   !$)$>/4'?)C(I/;  %*$>/4'?)C(I/; Q?	
A ADE EEA ADE4 ] 7 /6BB#6" /!e44##!e44 )## ;!4GG##!4GG/	
   B< <C   B<,	. 	. 	.2 2 2! ! !
" 
" 
"% % %& & &
& & && & &6 6 6$3 3 3
3 3 3
* * * TZ&''. . ('.4* * *"M M MS S SC C C TZ&''-
 -
 ('-
^ TZ'((TZ$%%K K &% )(K TZ&''K
 K
 ('K
Z ] G$5&	
( (R33 33S( (R33j TZ&''3
 3
 ('3
j
V 
V 
V
 
 
  $  &	Q 	Q 	Q 	Q 	Qr   r   )r  unittestr   r;   r   r4  r   r   r   r   r  r   r  r
   posthog.requestr   posthog.test.test_utilsr   posthog.typesr   r   posthog.versionr   TestCaser   r  r   r   <module>rD     s(                 S S S S S S S S S S  



 ' ' ' ' ' ' ! ! ! ! ! ! $ $ $ $ $ $ 5 5 5 5 5 5 9 9 9 9 9 9 9 9 # # # # # #gQ gQ gQ gQ gQ" gQ gQ gQ gQ gQr   