
    g_                         d dl Z d dlZd dlmZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZ  G d dej                        Zy)	    N)datetime)uuid4Client)FAKE_TEST_API_KEY)VERSIONc                   P   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 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,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8 ej*                  d      d5        Z9d6 Z:d7 Z;d8 Z<d9 Z= ej*                  d      d:        Z> ej*                  d;       ej*                  d<      d=               Z? ej*                  d      d>        Z@y?)@
TestClientc                     t        j                  d      | _        t        j                  d      | _        | j                  j	                          | j                  j	                          y )Nzposthog.client.batch_postposthog.consumer.batch_post)mockpatchclient_post_patcherconsumer_post_patcherstartclss    M/var/www/openai/venv/lib/python3.12/site-packages/posthog/test/test_client.py
setUpClasszTestClient.setUpClass   sL     #'**-H"I$(JJ/L$M!%%'!!'')    c                 l    | j                   j                          | j                  j                          y N)r   stopr   r   s    r   tearDownClasszTestClient.tearDownClass   s&    $$&!!&&(r   c                 ,    t        d||       d| _        y)zMark the failure handlerFAILTN)printfailed)selfebatchs      r   set_failzTestClient.set_fail   s    far   c                 R    d| _         t        t        | j                        | _        y )NF)on_error)r   r   r   r"   clientr   s    r   setUpzTestClient.setUp!   s    .Gr   c                 8    | j                  t        t               y r   )assertRaisesAssertionErrorr   r&   s    r   test_requires_api_keyz TestClient.test_requires_api_key%   s    .&1r   c                 8    | j                   j                          y r   )r%   flushr&   s    r   test_empty_flushzTestClient.test_empty_flush(   s    r   c                    | j                   }|j                  dd      \  }}|j                          | j                  |       | j	                  | j
                         | j                  |d   d       | j                  t        |d   t                     | j                  |j                  d             | j                  |d   d       | j                  |d   d   d       | j                  |d   d	   t               y )
Ndistinct_idpython test eventevent	timestampuuid
properties$libposthog-python$lib_version)r%   capturer-   
assertTrueassertFalser   assertEqual
isinstancestrassertIsNonegetr   r   r%   successmsgs       r   test_basic_capturezTestClient.test_basic_capture+   s    ~~m5HI %W':;
3{#3S9:#''&/*]+];\*624DE\*>:GDr   c                    | j                   }t        t                     }|j                  dd|      \  }}|j	                          | j                  |       | j                  | j                         | j                  |d   d       | j                  t        |d   t                     | j                  |d   |       | j                  |d   d       | j                  |d   d   d	       | j                  |d   d
   t               y )Nr0   r1   )r4   r2   r3   r4   r5   r6   r7   r8   )r%   r>   r   r9   r-   r:   r;   r   r<   r=   r   )r   r%   r4   rB   rC   s        r   test_basic_capture_with_uuidz'TestClient.test_basic_capture_with_uuid9   s    57|~~m5Ht~T %W':;
3{#3S9:Vd+]+];\*624DE\*>:GDr   c                    t        t        | j                        }|j                  dd      \  }}|j	                          | j                  |       | j                  | j                         | j                  |d   d       | j                  t        |d   t                     | j                  |j                  d             | j                  |d   d       | j                  |d   d   d	       | j                  |d   d
   t               y )N)project_api_keyr$   r0   r1   r2   r3   r4   r5   r6   r7   r8   )r   r   r"   r9   r-   r:   r;   r   r<   r=   r>   r?   r@   r   rA   s       r   'test_basic_capture_with_project_api_keyz2TestClient.test_basic_capture_with_project_api_keyH   s    (9DMMR~~m5HI %W':;
3{#3S9:#''&/*]+];\*624DE\*>:GDr   c                 |   t        t        ddi      }|j                  dd      \  }}|j                          | j	                  |d   d       | j	                  |d   d   d       |j                  ddd	i      \  }}|j                          | j	                  |d
   d   d	       | j	                  |d   d   d       y )Nsourcez	repo-name)super_propertiesr0   r1   r2   r5   traitvalue$set)r   r   r9   r-   r<   identifyr   r%   _rC   s       r   test_basic_super_propertiesz&TestClient.test_basic_super_propertiesW   s    )X{<ST/BC3W':;\*84kB'0BC3VW-w7\*84kBr   c                    t         j                  j                  t        dd       5 }| j                  }t        d      }|j                  |d       | j                  |j                         |j                  d   }| j                  |d   d       | j                  |d   d       | j                  |d	   d
ddddd d
ddgdd       d d d        y # 1 sw Y   y xY w)Nr9   return_valuetest exceptionr0   r0   r      
$exception   	ExceptiongenericTtypehandled	mechanismmoduler_   rN   >https://us.i.posthog.com/project/random_key/person/distinct_id$exception_type$exception_message$exception_listz$exception_personURLr   r   objectr   r%   r\   capture_exceptionr:   called	call_argsr<   r   patch_capturer%   	exceptioncapture_calls        r   test_basic_capture_exceptionz'TestClient.test_basic_capture_exceptionf   s    ZZvytD[[F!"23I$$YM$JOOM001(2215L\!_m<\!_l;Q'2*: 3<)M&*$/%5	( -m EDDs   B"CCc                    t         j                  j                  t        dd       5 }| j                  }t        d      }|j                  |d       | j                  |j                         |j                  d   }| j                  |d   d       | j                  |d   d       | j                  |d   d	dd
ddd d	ddgdd       d d d        y # 1 sw Y   y xY w)Nr9   rU   rW   r0   r   rY   rZ   r[   r\   r]   Tr^   ra   rd   re   ri   rn   s        r   -test_basic_capture_exception_with_distinct_idz8TestClient.test_basic_capture_exception_with_distinct_id   s    ZZvytD[[F!"23I$$Y>OOM001(2215L\!_m<\!_l;Q'2*: 3<)M&*$/%5	( -m EDDs   B!CCc                    t         j                  j                  t        dd       5 }t        t        | j
                  d      }t        d      }|j                  |d       | j                  |j                         |j                  d   }| j                  |d   d       | j                  |d   d	       | j                  |d
   dddddd dddgdd       d d d        y # 1 sw Y   y xY w)Nr9   rU   zhttps://aloha.comr$   hostrW   r0   r   rY   rZ   r[   r\   r]   Tr^   ra   z7https://aloha.com/project/random_key/person/distinct_idre   r   r   rj   r   r   r"   r\   rk   r:   rl   rm   r<   rn   s        r   9test_basic_capture_exception_with_correct_host_generationzDTestClient.test_basic_capture_exception_with_correct_host_generation   s    ZZvytD-L_`F!"23I$$Y>OOM001(2215L\!_m<\!_l;Q'2*: 3<)M&*$/%5	( -f EDD   B1C!!C*c                    t         j                  j                  t        dd       5 }t        t        | j
                  d      }t        d      }|j                  |d       | j                  |j                         |j                  d   }| j                  |d   d       | j                  |d   d	       | j                  |d
   dddddd dddgdd       d d d        y # 1 sw Y   y xY w)Nr9   rU   https://app.posthog.comrv   rW   r0   r   rY   rZ   r[   r\   r]   Tr^   ra   z=https://app.posthog.com/project/random_key/person/distinct_idre   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    ZZvytD-LefF!"23I$$Y>OOM001(2215L\!_m<\!_l;Q'2*: 3<)M&*$/%5	( -l EDDrz   c                    t         j                  j                  t        dd       5 }| j                  }	 t        d      # t
        $ r |j                  d       Y nw xY w| j                  |j                         |j                  d   }| j                  |d   d       | j                  |d   d       | j                  |d	   d
   d       | j                  |d	   d   d       | j                  |d	   d   d   d   d   d       | j                  |d	   d   d   d   d   d       | j                  |d	   d   d   d   d        | j                  |d	   d   d   d   d       | j                  |d	   d   d   d   d       | j                  |d	   d   d   d   d   d       | j                  |d	   d   d   d   d   d   d   d       | j                  |d	   d   d   d   d   d   d   d       | j                  |d	   d   d   d   d   d   d   d       | j                  |d	   d   d   d   d   d   d   d       d d d        y # 1 sw Y   y xY w)Nr9   rU   rW   r0   rX   r   rY   rZ   r[   rf   r\   rg   rh   rb   r_   r]   r`   Trc   rN   
stacktracerawframesfilenamezposthog/test/test_client.pyfunction4test_basic_capture_exception_with_no_exception_givenzposthog.test.test_clientin_appri   )r   ro   r%   rq   s       r   r   z?TestClient.test_basic_capture_exception_with_no_exception_given   s   ZZvytD[[FD 011 D((](CD OOM001(2215L\!_m<\!_l;\!_->?M\!_-ABDTU\!_->?B;OPVWYbc\!_->?B;OPYZ\`a\!_->?B8LdS\!_->?B6JKX\!_->?B7KM]^Q 1215lCFK Q 1215lCHMaPQ[\- Q 1215lCHMaPQ[\F Q 1215lCHMaPQYZ\v \!_->?B<PQYZ[\]^fgimnC EDDs)   IA  AIAG IIc                 v   t         j                  j                  t        dd       5 }| j	                  dd      5 }| j
                  }|j                          | j                  |j                         | j                  |j                  d   d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr9   rU   posthogWARNING)levelr   z2WARNING:posthog:No exception information available)r   r   rj   r   
assertLogsr%   rk   r;   rl   r<   output)r   ro   logsr%   s       r   8test_basic_capture_exception_with_no_exception_happeningzCTestClient.test_basic_capture_exception_with_no_exception_happening   s    ZZvytD)<((*  !5!56  KKNH = ED<< EDs#   B/AB#B/#B,	(B//B8zposthog.client.decidec                    dddii|_         t        t        | j                  t              }|j	                  ddd      \  }}|j                          | j                  |       | j                  | j                         | j                  |d	   d       | j                  t        |d
   t                     | j                  |j                  d             | j                  |d   d       | j                  |d   d   d       | j                  |d   d   t               | j                  |d   d   d       | j                  |d   d   dg       | j                  |j                  d       y )NfeatureFlagsbeta-featurerandom-variantr$   personal_api_keyr0   r1   Tsend_feature_flagsr2   r3   r4   r5   r6   r7   r8   $feature/beta-feature$active_feature_flagsrY   rV   r   r   r"   r9   r-   r:   r;   r   r<   r=   r>   r?   r@   r   
call_countr   patch_decider%   rB   rC   s        r   %test_basic_capture_with_feature_flagsz0TestClient.test_basic_capture_with_feature_flags	  sG   %3nFV5W$X!)DMMTef~~m5H]a~b %W':;
3{#3S9:#''&/*]+];\*624DE\*>:GD\*+BCEUV\*+BCnEUV00!4r   c                    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d$gdd%gd
dgd&d'id(d)}ddd*d	d	g d+dgd&d'id(d)}|||g|_        |j                  d,d-      \  }}|j                          | j                  |       | j                  | j                         | j                  |d.   d-       | j                  t        |d/   t                     | j                  |j                  d0             | j                  |d,   d,       | j                  |d1   d2   d3       | j                  |d1   d4   t               | j                  |d1   d5   d       | j                  |d1   d6   d       | j                  |d1   d7   dg       d8|d1   vsJ | j                  |j                   d+       g |_        |j                  d,d-      \  }}|j                          | j                  |       | j                  | j                         d8|d1   vsJ d5|d1   vsJ d6|d1   vsJ d7|d1   vsJ y )9Nr   r   r   r   rY   Beta Featurebeta-feature-localFTd   emailpersontest@posthog.comexactkeyr_   rN   operatorr5   rollout_percentager   2   variantsfirst-variantFirst Variantr   namer   second-variantSecond Variant   third-variantThird Variantsome-payloadajsonr   r   groupsmultivariatepayloadsidr   r   is_simple_flagactiver   filtersperson-flagregionUSAr   r   rN   r_   true,  r   r   r   r   r   r   r   r   z
false-flagr   r0   r1   r2   r3   r4   r5   r6   r7   r8   $feature/beta-feature-localz$feature/false-flagr   r   rV   r   r   r"   feature_flagsr9   r-   r:   r;   r   r<   r=   r>   r?   r@   r   r   )r   r   r%   multivariate_flag
basic_flag
false_flagrB   rC   s           r   7test_basic_capture_with_locally_evaluated_feature_flagszBTestClient.test_basic_capture_with_locally_evaluated_feature_flags  s,   %3nFV5W$X!)DMMTef "'#"%
 %,XHZhop' /2	 -b
  /`bc 0:Jbde /`bc!! /=PSU[}]'
< " " (0,3*/(0	' /2
 $SM

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

  !2:zJ~~m5HI %W':;
3{#3S9:#''&/*]+];\*624DE\*>:GD\*+HI?[\*+@A5I\*+BCFZE[\&c,.????00!4  "~~m5HI %&c,.????,C4EEEE$C,====&c,.????r   c                    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d$gdd%gd
dgd&d'id(d)}||g|_        |j                  d*d+d,d-i      \  }}|j                          | j                  |       | j                  | j                         | j                  |d.   d+       | j                  t        |d/   t                     | j                  |j                  d0             | j                  |d*   d*       | j                  |d1   d2   d3       | j                  |d1   d4   t               | j                  |d1   d,   d-       | j                  |d1   d5   dg       d6|d1   vsJ d7|d1   vsJ | j                  |j                   d8       y )9Nr   r   r   r   rY   r   r   FTr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r1   r   zmy-custom-variantr2   r3   r4   r5   r6   r7   r8   r   r   z$feature/person-flagr   r   )r   r   r%   r   r   rB   rC   s          r   +test_dont_override_capture_with_local_flagsz6TestClient.test_dont_override_capture_with_local_flags  sg   %3nFV5W$X!)DMMTef "'#"%
 %,XHZhop' /2	 -b
  /`bc 0:Jbde /`bc!! /=PSU[}]'
< " " (0,3*/(0	' /2
 $SM

. !2:>~~.1NPc0d
 	 %W':;
3{#3S9:#''&/*]+];\*624DE\*>:GD\*+HIK^_\*+BCFZE[\&c,.????%S->>>>00!4r   c           
      p   dddddi|_         t        t        | j                  t              }|j	                  ddd	      \  }}|j                          | j                  |       | j                  | j                         | j                  |d
   d       | j                  t        |d   t                     | j                  |j                  d             | j                  |d   d       | j                  |d   d          | j                  |d   d   d       | j                  |d   d   t               | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   ddg       | j                  |j                  d       |j!                  ddddi d d d       y )Nr   r   TFr   alpha-featurezoff-featurer   r0   r1   r   r2   r3   r4   r5   $geoip_disabler6   r7   r8   r   $feature/alpha-featurer   r   r   rY   
random_keyhttps://us.i.posthog.com   timeoutr0   r   person_propertiesgroup_propertiesdisable_geoiprV   r   r   r"   r9   r-   r:   r;   r   r<   r=   r>   r?   r@   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    -=PTejk%
! )DMMTef~~m5H]a~b %W':;
3{#3S9:#''&/*]+];L)*:;<\*624DE\*>:GD\*+BCEUV\*+CDdK\*+BCnVeEfg00!4''&%"! 	( 		
r   c           
      v   dddddi|_         t        t        d| j                  t        dd      }|j	                  d	d
dd      \  }}|j                          | j                  |       | j                  | j                         | j                  |d   d
       | j                  t        |d   t                     | j                  |j                  d             | j                  d|d   v       | j                  |d	   d	       | j                  |d   d   d       | j                  |d   d   t               | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   ddg       | j                  |j                  d       |j!                  dddd	i d d d       y )Nr   r   TFr   r|      )rw   r$   r   r   %feature_flags_request_timeout_secondsr0   r1   )r   r   r2   r3   r4   r   r5   r6   r7   r8   r   r   r   r   r   rY   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  s    -=PTejk%
! *]].24
 ~~m5H]aqv~w %W':;
3{#3S9:#''&/*(L0AAB]+];\*624DE\*>:GD\*+BCEUV\*+CDdK\*+BCnVeEfg00!4''&%"! 	( 		
r   c                    dddii|_         t        t        | j                  t              }|j	                  ddd      \  }}|j                          | j                  |       | j                  | j                         | j                  |d	   d       | j                  t        |d
   t                     | j                  |j                  d             | j                  |d   d       | j                  |d   d   d       | j                  |d   d   t               | j                  d|d   v       | j                  d|d   v       | j                  |j                  d       y )Nr   r   r   r   r0   r1   Fr   r2   r3   r4   r5   r6   r7   r8   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_them"  s;   %3nFV5W$X!)DMMTef~~m5H]b~c %W':;
3{#3S9:#''&/*]+];\*624DE\*>:GD/s<7HHI/s<7HHI00!4r   c                     | j                   }|j                  dd      \  }}|j                          | j                  |       | j	                  | j
                         | j                  |d   d       y )Nl   IqKr1   )r0   r2   r0   157963456373623802)r%   r9   r-   r:   r;   r   r<   rA   s       r   test_stringifies_distinct_idz'TestClient.test_stringifies_distinct_id7  sb     ~~2DL_~` %]+-ABr   c                 *   | j                   }|j                  ddddiddit        ddd	      d
      \  }}| j                  |       | j	                  |d   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d       | j	                  |d   d   d       | j	                  |d   d   t
               | j	                  |d   d
       | j	                  |d   d       | j                  d|d   v       y )Nr0   r1   propertyrN   ip192.168.0.1  	   r   new-uuidr3   2014-09-03T00:00:00+00:00r5   contextr2   r6   r7   r8   r4   $groups)r%   r9   r   r:   r<   r   rA   s       r   test_advanced_capturez TestClient.test_advanced_captureB  s"   ~~!=!T1a 
 	 [)+FG\*:6@Y-}=W':;\*624DE\*>:GDVj1]+];	\)::;r   c                     | j                   j                  ddddd      \  }}| j                  |       | j                  |d   d   ddd       y )	Nr0   
test_eventid:5app.posthog.comcompanyinstance)r   r5   r   )r%   r9   r:   r<   r   rB   rC   s      r   test_groups_capturezTestClient.test_groups_captureY  s\    {{**%3DE + 
 	 \*956Wh7ijr   c                    | j                   }|j                  dddi      \  }}|j                          | j                  |       | j	                  | j
                         | j                  |d   d   d       | j                  t        |d   t                     | j                  |j                  d             | j                  |d   d       y Nr0   rM   rN   rO   r3   r4   )r%   rP   r-   r:   r;   r   r<   r=   r>   r?   r@   rA   s       r   test_basic_identifyzTestClient.test_basic_identifyc  s    }w6HI %VW-w7
3{#3S9:#''&/*]+];r   c           
         | j                   }|j                  dddiddit        ddd      d	      \  }}| j                  |       | j	                  |d
   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   t
               | j                  t        |d
   t                     | j	                  |d   d	       | j	                  |d   d       y Nr0   rM   rN   r   r   r   r   r   r   r3   r   r   rO   r5   r6   r7   r8   r4   )r%   rP   r   r:   r<   r   r=   r>   rA   s       r   test_advanced_identifyz!TestClient.test_advanced_identifyo  s
   GW-m/DhtUVXYFZ\f
 	 [)+FGY-}=VW-w7\*624DE\*>:GD
3{#3S9:Vj1]+];r   c                    | j                   }|j                  dddi      \  }}|j                          | j                  |       | j	                  | j
                         | j                  |d   d   d       | j                  t        |d   t                     | j                  |j                  d             | j                  |d   d       y r  )r%   setr-   r:   r;   r   r<   r=   r>   r?   r@   rA   s       r   test_basic_setzTestClient.test_basic_set  s    zz-'71CD %VW-w7
3{#3S9:#''&/*]+];r   c           
         | j                   }|j                  dddiddit        ddd      d	      \  }}| j                  |       | j	                  |d
   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   t
               | j                  t        |d
   t                     | j	                  |d   d	       | j	                  |d   d       y r  )r%   r  r   r:   r<   r   r=   r>   rA   s       r   test_advanced_setzTestClient.test_advanced_set  s
   zzGW-m/DhtUVXYFZ\f
 	 [)+FGY-}=VW-w7\*624DE\*>:GD
3{#3S9:Vj1]+];r   c                    | j                   }|j                  dddi      \  }}|j                          | j                  |       | j	                  | j
                         | j                  |d   d   d       | j                  t        |d   t                     | j                  |j                  d             | j                  |d   d       y )Nr0   rM   rN   	$set_oncer3   r4   )r%   set_oncer-   r:   r;   r   r<   r=   r>   r?   r@   rA   s       r   test_basic_set_oncezTestClient.test_basic_set_once  s    }w6HI %[)'2G<
3{#3S9:#''&/*]+];r   c           
         | j                   }|j                  dddiddit        ddd      d	      \  }}| j                  |       | j	                  |d
   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   t
               | j                  t        |d
   t                     | j	                  |d   d	       | j	                  |d   d       y )Nr0   rM   rN   r   r   r   r   r   r   r3   r   r   r  r5   r6   r7   r8   r4   )r%   r  r   r:   r<   r   r=   r>   rA   s       r   test_advanced_set_oncez!TestClient.test_advanced_set_once  s   GW-m/DhtUVXYFZ\f
 	 [)+FGY-}=[)'2G<\*624DE\*>:GD
3{#3S9:Vj1]+];r   c           
      |   | j                   j                  dd      \  }}| j                  |       | j                  |d   d       | j                  |d   d       | j                  |d   ddi dt        d	d
       | j                  t        |d   t                     | j                  |j                  d             y )Norganizationr   r2   $groupidentifyr0   $organization_id:5r5   r7   Tz$group_type
$group_keyz
$group_setr6   r8   r   r3   r4   	r%   group_identifyr:   r<   r   r=   r>   r?   r@   r   s      r   test_basic_group_identifyz$TestClient.test_basic_group_identify  s    {{11.&I W'78]+-AB-$ ( '"&
	
 	
3{#3S9:#''&/*r   c           
         | j                   j                  ddd      \  }}| j                  |       | j                  |d   d       | j                  |d   d       | j                  |d   ddi dt        d	d
       | j                  t        |d   t                     | j                  |j                  d             y )Nr  r   r0   rX   r2   r  r5   r7   Tr  r3   r4   r  r   s      r   *test_basic_group_identify_with_distinct_idz5TestClient.test_basic_group_identify_with_distinct_id  s    {{11.&Vc1d W'78]+];-$ ( '"&
	
 	
3{#3S9:#''&/*r   c                 |   | j                   j                  ddddiddit        ddd	      d
      \  }}| j                  |       | j	                  |d   d       | j	                  |d   d       | j	                  |d   ddddidt
        dd       | j	                  |d   d       | j	                  |d   d   d       y )Nr  r   rM   rN   r   r   r   r   r   r   r2   r  r0   r  r5   r7   Tr  r3   r   r   r%   r  r   r:   r<   r   r   s      r   test_advanced_group_identifyz'TestClient.test_advanced_group_identify  s    {{11FWg$6}8MxX\^_abOceo
 	 W'78]+-AB-$&0( '"&
	
 	[)+FGY-}=r   c                    | j                   j                  ddddiddit        ddd	      d
d      \  }}| j                  |       | j	                  |d   d       | j	                  |d   d       | j	                  |d   ddddidt
        dd       | j	                  |d   d       | j	                  |d   d   d       y )Nr  r   rM   rN   r   r   r   r   r   r   r0   rX   r2   r  r5   r7   Tr  r3   r   r   r  r   s      r   -test_advanced_group_identify_with_distinct_idz8TestClient.test_advanced_group_identify_with_distinct_id  s    {{11g=!T1a % 2 
 	 W'78]+];-$&0( '"&
	
 	[)+FGY-}=r   c                    | j                   }|j                  dd      \  }}|j                          | j                  |       | j	                  | j
                         | j                  |d   d   d       | j                  |d   d   d       y )N
previousIdr0   r5   alias)r%   r#  r-   r:   r;   r   r<   rA   s       r   test_basic_aliaszTestClient.test_basic_alias  sz    ||L-@ %\*=9<H\*73]Cr   c                    | j                   }|j                  dd      \  }}| j                  | j                         |j	                          | j                  |       | j                  |d   d       | j                  |d   d   d       y )Nr0   https://posthog.com/contacturlr5   $current_url)r%   pager;   r   r-   r:   r<   rA   s       r   test_basic_pagezTestClient.test_basic_page  sy    {{=6S{T% ]+];\*>:<YZr   c                 @   | j                   }t               }|j                  |d      \  }}| j                  | j                         |j                          | j                  |       | j                  |d   t        |             | j                  |d   d   d       y )Nr&  r'  r0   r5   r)  )	r%   r   r*  r;   r   r-   r:   r<   r>   )r   r%   r0   rB   rC   s        r   test_basic_page_distinct_uuidz(TestClient.test_basic_page_distinct_uuid&  s    g{{;4Q{R% ]+S-=>\*>:<YZr   c                 H   | j                   }|j                  ddddiddit        ddd	      d
      \  }}| j                  |       | j	                  |d   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   d       | j	                  |d   d   t
               | j                  t        |d   t                     | j	                  |d   d
       | j	                  |d   d       y )Nr0   r&  r   rN   r   r   r   r   r   r   r3   r   r   r5   r)  r6   r7   r8   r4   )r%   r*  r   r:   r<   r   r=   r>   rA   s       r   test_advanced_pagezTestClient.test_advanced_page0  s*   {{)!=!T1a 
 	 [)+FGY-}=\*>:<YZ\*:6@\*624DE\*>:GD
3{#3S9:Vj1]+];r   c                     | j                   }t        d      D ]  }|j                  dddi      \  }} |j                          | j	                  |j
                  j                                y Ni  r0   rM   rN   )r%   rangerP   r-   r:   queueemptyr   r%   irB   rC   s        r   
test_flushzTestClient.test_flushG  sV    tA!??=7G:LMLGS  	**,-r   c                 <   | j                   }t        d      D ]  }|j                  dddi      \  }} |j                          | j	                  |j
                  j                                |j                  D ]!  }| j                  |j                                # y r1  )
r%   r2  rP   shutdownr:   r3  r4  	consumersr;   is_alive)r   r%   r6  rB   rC   consumers         r   test_shutdownzTestClient.test_shutdownR  s~    tA!??=7G:LMLGS  	**,-((HX..01 )r   c                     t        t        d      }|j                  d      \  }}| j                  |j                         | j                  |j                  j                                | j                  |       y )NT)	sync_moder0   )r   r   rP   r;   r:  r:   r3  r4  )r   r%   rB   messages       r   test_synchronouszTestClient.test_synchronous_  s[    )T:!??=9))***,- r   c                     t        t        d      }|j                          t        d      D ]  }|j	                  d        |j	                  d      \  }}| j                  |       y )NrY   )max_queue_size
   r0   )r   r   joinr2  rP   r;   r5  s        r   test_overflowzTestClient.test_overflowg  sT    )!<rAOOM*  }5!r   c                 @    t        t        j                  d             y )Nunicode_key)r   sixur&   s    r   test_unicodezTestClient.test_unicodes  s    suu]#$r   c                     | j                   j                  dd       | j                   j                          | j                  | j                         y )Ni  zpython event)r%   r9   r-   r;   r   r&   s    r   test_numeric_distinct_idz#TestClient.test_numeric_distinct_idv  s8    D.1%r   c                     t        dd       y )Nbad_keyT)debugr   r&   s    r   
test_debugzTestClient.test_debug{  s    y%r   c                     t        t        | j                  d      }t        d      D ]  }|j	                  dddi        |j                          | j                  | j                         y )NT)r$   gziprD  r0   rM   rN   )r   r   failr2  rP   r-   r;   r   )r   r%   rR   s      r   	test_gzipzTestClient.test_gzip~  sQ    )DIIDIrAOOMGW+=> %r   c                 L    t        t         j                  dd      } fd}t        j                  d|      5 }t        d      D ]  }|j                  dd	d
i        t        j                  d        j                  |j                  d       d d d        y # 1 sw Y   y xY w)NrD  r   )r$   flush_atflush_intervalc                  B    j                  t        |d         d       y )Nr!   rD  )r<   len)argskwargsr   s     r   mock_post_fnz;TestClient.test_user_defined_flush_at.<locals>.mock_post_fn  s    S126r   r   )side_effect   r0   rM   rN   rY   r[   )r   r   rT  r   r   r2  rP   timesleepr<   r   )r   r%   r]  	mock_postrR   s   `    r   test_user_defined_flush_atz%TestClient.test_user_defined_flush_at  s    )DII[\]	7
 ZZ5<PT]2Y/AB JJqMY1115	 QPPs   ABB#c                     t        t        d      }|j                  D ]  }| j                  |j                  d         y )NrD  )r   r   r   r:  r<   r   r   r%   r<  s      r   test_user_defined_timeoutz$TestClient.test_user_defined_timeout  s5    )26((HX--r2 )r   c                 |    t        t              }|j                  D ]  }| j                  |j                  d         y )N   re  rf  s      r   test_default_timeout_15z"TestClient.test_default_timeout_15  s3    )*((HX--r2 )r   c                    t        t        | j                  d      }|j                  dd      \  }}|j	                          | j                  |       | j                  | j                         | j                  |d       y )NTr$   disabledr0   r1   rm  )r   r   r"   r9   r-   r;   r   r<   rA   s       r   test_disabledzTestClient.test_disabled  sc    )DMMDQ~~m5HI!%j)r   c                    t        t        | j                  d      }|j                  dd      }| j	                  |       |j                          |j                  dd      }| j	                  |       |j                          |j                  d      }| j	                  |       |j                          |j                  dd      }| j	                  |       |j                          |j                  d      }| j                  |d d d       |j                          | j                  |j                  j                                y )NTrl  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:   r3  r4  )r   r   r%   responses       r    test_disabled_with_feature_flagsz+TestClient.test_disabled_with_feature_flags  s   )DMMDQ**>7C(#&&()).'B(#&&(''0(#&&(225'B(#&&(44W=DQU#VW&&( 	**,-r   c                    t        t        | j                  d      }|j                  dd      \  }}|j	                          | j                  |       | j                  | j                         | j                  |d   d       d|_	        |j                  dd      \  }}|j	                          | j                  |       | j                  | j                         | j                  |d       y )NFrl  r0   r1   r2   Trm  )
r   r   r"   r9   r-   r:   r;   r   r<   rm  rA   s       r   test_enabled_to_disabledz#TestClient.test_enabled_to_disabled  s    )DMMER~~m5HI %W':;~~m5HI!%j)r   c                 4   t        t        | j                  d      }|j                  dd      \  }}|j	                          | j                  |d   d   d       |j                  dddi      \  }}|j	                          | j                  |d   d   d       y )	NTr$   r   r0   r1   r5   r   rM   rN   )r   r   r"   r9   r-   r<   rP   r   r%   rR   capture_msgidentify_msgs        r   $test_disable_geoip_default_on_eventsz/TestClient.test_disable_geoip_default_on_events  s    )DMMQUV7JK;\23CDdK //-'79KL<l34DEtLr   c                 B   t        t        | j                  d      }|j                  ddddd      \  }}|j	                          | j                  |d	   d
   d       |j                  ddddid      \  }}|j	                          | j                  d
|d	   vd       y )NFr}  r0   bd)r   cTr   r5   r   zhttp://a.comrM   rN   )r   r   r"   r  r-   r<   r*  r~  s        r   %test_disable_geoip_override_on_eventsz0TestClient.test_disable_geoip_override_on_events  s    )DMMQVWM33GW[\;\23CDdK ++m^gwEWgl+m<)l1KKTRr   c                     t        t        | j                  d      }|j                  ddd      \  }}|j	                          | j                  d|d   v       y )	NTr}  r0   r1   Fr  r   r5   )r   r   r"   r9   r-   r:   rQ   s       r   2test_disable_geoip_method_overrides_init_on_eventsz=TestClient.test_disable_geoip_method_overrides_init_on_events  sP    )DMMQUV/BRWX3(L0AABr   c           
         dddddi|_         t        t        | j                  d      }|j	                  ddd	       |j                  dd
ddi ddii d       |j                          |j                  ddd	       |j                  dd
ddi ddii d       |j                          |j                  d       |j                  dd
ddi ddii d       y )Nr   r   TFr   r}  r   some_idr  r   r   r0   r   feature_enabled_distinct_idall_flags_payloads_id)	rV   r   r   r"   rr  r   
reset_mockrt  rw  r   r   r%   s      r   $test_disable_geoip_default_on_decidez/TestClient.test_disable_geoip_default_on_decide  s    -=PTejk%
! )DMMQVWitL''&!,i8 	( 		
 	!|-JZ^_''&5,.KL 	( 		
 	!))*AB''&/,.EF 	( 		
r   zposthog.client.Pollerzposthog.client.getc                     d }||j                   j                  _        t        t        d      }dddg|_        | j                  |j                  dd             y )Nc                      t        d      )Nzhttp exception)r\    r   r   raise_effectz9TestClient.test_call_identify_fails.<locals>.raise_effect  s    ,--r   test)r   exampleF)r   r   r0   )rV   
raiseErrorr^  r   r   r   r;   rt  )r   	patch_get
patch_pollr  r%   s        r   test_call_identify_failsz#TestClient.test_call_identify_fails  sV    	. 9E	))5)FC(1U KL//	=IJr   c                    dddddi|_         t        t        d| j                  d      }|j	                  dd	d
ddddidddii       |j                  dddd	d
ddd	ddd
ddddidd       |j                          |j	                  dd	d
ddddidddii       |j                  dddd	d
ddddiddiddidd       |j                          |j                  d	i d d        |j                  dddd	i dd	ii d       y )Nr   r   TFr   zhttp://app2.posthog.com)rw   r$   r   r   r  r   r   r   x1y1r   xy)r   r   r   r   )r0   r  )r  r  r  r   r0   overridegroup_override)rV   r   r   r"   rr  r   r  rw  r  s      r   *test_default_properties_get_added_properlyz5TestClient.test_default_properties_get_added_properly"  s    -=PTejk%
! )0ITXTaTaqvw%3DE#Tl'#s4 	  	
 	''%!%3DE.7tD*0s;)+<=   	( 	
 	!%3DE,j9 "2 	  
	
 	''%!%3DE,j9(*:;)+<=   	( 	
 	!)))BRVim)n''%!,i8 	( 		
r   N)A__name__
__module____qualname__classmethodr   r   r"   r'   r+   r.   rD   rF   rI   rS   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  r  r   r$  r+  r-  r/  r7  r=  rA  rF  rK  rM  rQ  rU  rc  rg  rj  rn  ry  r{  r  r  r  r  r  r  r  r   r   r
   r
      s   * * ) )
H2EEEC8888#oJ TZZ'(5 )5( TZZ'(e@ )e@N TZZ'(L5 )L5\ TZZ'( 
 ) 
D TZZ'('
 )'
R TZZ'(5 )5(	C<.k
<<"
<<"
<<"+(+&>,>:D[[<.	.2!
"%&
&&63
3
* TZZ'(. ).4*"MSC TZZ'('
 )'
R TZZ'(TZZ$%K & )K TZZ'(@
 )@
r   r
   )r`  unittestr   r4   r   r   rI  posthog.clientr   posthog.test.test_utilsr   posthog.versionr   TestCaser
   r  r   r   <module>r     s4         
 ! 5 #U
"" U
r   