
    \j
)                     (   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ d dl d dlmZ d d	lmZmZmZmZmZm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 Z.d Z/d  Z0d! Z1d" Z2y#)$    )LDClientConfigContext)DefaultEventProcessor)InMemoryFeatureStore)EventInputCustomEventInputEvaluationEventInputIdentify)NullEventProcessor)FEATURES)*)MockUpdateProcessor)contextmake_clientmake_ldd_clientmake_offline_clientunreachable_uriuserc                 r    | j                   j                  j                  d      }g | j                   _        |S Nr   )_event_processor_eventspop)ces     F/root/env/lib/python3.12/site-packages/testing/test_ldclient_events.pyget_first_eventr      s1    	""&&q)A!#AH    c                 f    t        | j                  j                        }g | j                  _        |S N)lenr   r   )r   ns     r   count_eventsr#      s+    A&&'A!#AHr   c                  |    t               5 } t        | j                  t              sJ 	 d d d        y # 1 sw Y   y xY wr    )r   
isinstancer   r   clients    r   /test_client_has_null_event_processor_if_offliner(      s:    		 G&&113EFFFG G G   2;c                      t        dt        t        d      } t        |       5 }t	        |j
                  t              sJ 	 d d d        y # 1 sw Y   y xY w)NsecretF)sdk_keybase_uriupdate_processor_classsend_events)config)r   r   r   r   r%   r   r   )r0   r'   s     r   7test_client_has_null_event_processor_if_send_events_offr1      sP    H-@eUF		  GF&113EFFFG G Gs   AAc                  |    t               5 } t        | j                  t              sJ 	 d d d        y # 1 sw Y   y xY wr    )r   r%   r   r   r&   s    r   2test_client_has_normal_event_processor_in_ldd_moder3   %   s:    		 Jf&113HIIIJ J Jr)   c                      t               5 } | j                  t               t        |       }t	        |t
              sJ |j                  t        k(  sJ 	 d d d        y # 1 sw Y   y xY wr    )r   identifyr   r   r%   r
   r'   r   s     r   test_identifyr7   *   sW    	 $& F#!/000yyG###	$ $ $   AAA&c                      t               5 } | j                  t               t        |       }t	        |t
              sJ |j                  t        k(  sJ 	 d d d        y # 1 sw Y   y xY wr    )r   r5   r   r   r%   r
   r   r6   s     r   test_identify_with_user_dictr:   2   sW    	 $&F#!/000yyG###	$ $ $r8   c                      t               5 } | j                  d        t        |       dk(  sJ 	 d d d        y # 1 sw Y   y xY wr   r   r5   r#   r&   s    r   test_identify_no_userr=   :   s=    	 )&F#q((() ) )s	   "7A c                      t               5 } | j                  ddi       t        |       dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nnamenokeyr   r<   r&   s    r   test_identify_no_user_keyrA   @   sB    	 )&&'+,F#q((() ) )s	   $9Ac                      t               5 } | j                  t        j                  d             t	        |       dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N r   )r   r5   r   creater#   r&   s    r   test_identify_invalid_contextrE   F   sF    	 )&r*+F#q((() ) )s   5A

Ac                  .   t               5 } | j                  dt               t        |       }t	        |t
              sJ |j                  dk(  sJ |j                  t        k(  sJ |j                  J |j                  J 	 d d d        y # 1 sw Y   y xY wNmy_event	r   trackr   r   r%   r   keydatametric_valuer6   s     r   
test_trackrN   L   s    	 &&Z)F#!-...uu
"""yyG###vv~~~~%%%& & &   A6BBc                  .   t               5 } | j                  dt               t        |       }t	        |t
              sJ |j                  dk(  sJ |j                  t        k(  sJ |j                  J |j                  J 	 d d d        y # 1 sw Y   y xY wrG   )
r   rJ   r   r   r%   r   rK   r   rL   rM   r6   s     r   test_track_with_user_dictrQ   W   s    	 &&Z&F#!-...uu
"""yyG###vv~~~~%%%& & &rO   c                  6   t               5 } | j                  dt        d       t        |       }t	        |t
              sJ |j                  dk(  sJ |j                  t        k(  sJ |j                  dk(  sJ |j                  J 	 d d d        y # 1 sw Y   y xY w)NrH   *   rI   r6   s     r   test_track_with_datarT   b   s    	 &&Z"-F#!-...uu
"""yyG###vv||~~%%%& & &s   A:BBc                  >   t               5 } | j                  dt        dd       t        |       }t	        |t
              sJ |j                  dk(  sJ |j                  t        k(  sJ |j                  dk(  sJ |j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NrH   rS   g      ?rI   r6   s     r   test_track_with_metric_valuerV   m   s    	 %&Z"c2F#!-...uu
"""yyG###vv||~~$$$% % %s   A>BBc                      t               5 } | j                  dd        t        |       dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NrH   r   )r   rJ   r#   r&   s    r   test_track_no_contextrX   x   s?    	 )&Z&F#q((() ) )s	   #8Ac                      t               5 } | j                  dt        j                  d             t	        |       dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NrH   rC   r   )r   rJ   r   rD   r#   r&   s    r   test_track_invalid_contextrZ   ~   sH    	 )&Z!34F#q((() ) )s   6AAc                     t        dd      j                  d      j                         } t               }|j	                  t
        | j                  | j                         ii       t        |      5 }d|j                  | j                  t        d      k(  sJ t        |      }t        |t              sJ |j                  | j                  k(  ri|j                  | k(  rZ|j                  t        k(  rG|j                  dk(  r8|j                  dk(  r)|j                   |j"                  dk(  r|j                  du sJ 	 d d d        y # 1 sw Y   y xY wNfeature.keyvalueTdefaultr_   r   )build_off_flag_with_valuetrack_eventsbuildr   initr   rK   to_json_dictr   	variationr   r   r%   r	   flagr^   reasondefault_valuefeaturestorer'   r   s       r   test_event_for_existing_featurerm      s   'w?LLTRXXZG "E	JJ7;;(<(<(>?@A	U	 $v&**7;;*SSSSF#!1222$FFgII GGwKK1HHOOy(NNd"	$ # #$ $ $s   0C	EEc                     t        dd      j                  d      j                         } t               }|j	                  t
        | j                  | j                         ii       t        |      5 }d|j                  | j                  t        d      j                  k(  sJ t        |      }t        |t              sJ |j                  | j                  k(  rn|j                  | k(  r_|j                  t        k(  rL|j                  dk(  r=|j                   dk(  r.|j"                  ddik(  r|j$                  dk(  r|j                  du sJ 	 d d d        y # 1 sw Y   y xY w)	Nr]   r^   Tr_   r`   r   kindOFF)ra   rb   rc   r   rd   r   rK   re   r   variation_detailr   r^   r   r%   r	   rg   rf   rh   ri   rj   s       r   +test_event_for_existing_feature_with_reasonrr      s)   'w?LLTRXXZG "E	JJ7;;(<(<(>?@A	U	 $v&11'++wPY1Z`````F#!1222$FFgII GGwKK1HH'OOy(NNd"	$ # #$ $ $s   0CEEc                     t        d      j                  d      j                  d      j                  d      j	                  t               j                  d      j                  d      j                  d      j                  t        d ddt        d               j                               j                         } t               }|j                  t        | j                   | j#                         ii       t%        |      }d|j                  | j                   t&        d	
      k(  sJ t)        |      }t+        |t,              sJ |j                   | j                   k(  rp|j.                  | k(  ra|j&                  t&        k(  rN|j0                  dk(  r?|j                  dk(  r0|j2                  ddddk(  r|j4                  d	k(  r|j                  du sJ y )Nr]   d   Tr^   r   rule_idrK   inr_   r`   
RULE_MATCH)ro   	ruleIndexruleId)FlagBuilderversionon
variationsrulesFlagRuleBuilderrf   idrb   clausesmake_clauser   rc   r   rd   r   rK   re   r   r   r   r%   r	   rg   r^   rh   ri   rj   s       r   1test_event_for_existing_feature_with_tracked_ruler      sz   -(00588>II'R	''*--i8EEdKT5$UDE


 
  !"E	JJ7;;(<(<(>?@AFf&&w{{GY&OOOOAa-...EEW[[ 	'			W	7	q	liQQ	9$	$   	r   c                  v   t        d      j                  d      j                  d      j                  d      j	                  t               j                  d      j                  d      j                  t        d ddt        d               j                               j                         } t               }|j                  t        | j                  | j!                         ii       t#        |      }d|j                  | j                  t$        d	
      k(  sJ t'        |      }t)        |t*              sJ |j                  | j                  k(  ri|j,                  | k(  rZ|j$                  t$        k(  rG|j.                  dk(  r8|j                  dk(  r)|j0                  |j2                  d	k(  r|j4                  du sJ y )Nr]   rt   Tr^   r   ru   rK   rv   r_   r`   F)rz   r{   r|   r}   r~   r   rf   r   r   r   r   rc   r   rd   r   rK   re   r   r   r   r%   r	   rg   r^   rh   ri   rb   rj   s       r   3test_event_for_existing_feature_with_untracked_ruler      sf   -(00588>II'R	''*--i8T5$UDE


 
  !"E	JJ7;;(<(<(>?@AFf&&w{{GY&OOOOAa-...EEW[[ 	'			W	7	q		9$	%!   	 r   c                     t        d      j                  d      j                  d      j                  d      j	                  d      j                  d      j                         } t               }|j                  t        | j                  | j                         ii       t        |      }d|j                  | j                  t        d      k(  sJ t        |      }t!        |t"              sJ |j                  | j                  k(  rn|j$                  | k(  r_|j                  t        k(  rL|j&                  dk(  r=|j                  dk(  r.|j(                  dd	ik(  r|j*                  dk(  r|j,                  du sJ y )
Nr]   rt   Tr^   r   r_   r`   ro   FALLTHROUGH)rz   r{   r|   r}   fallthrough_variationtrack_events_fallthroughrc   r   rd   r   rK   re   r   rf   r   r   r%   r	   rg   r^   rh   ri   rb   rj   s       r   8test_event_for_existing_feature_with_tracked_fallthroughr      s;   -(00588>II'R		q	!":":4"@	  !"E	JJ7;;(<(<(>?@AFf&&w{{GY&OOOOAa-...EEW[[ 	'			W	7	q	fm--	9$	$   	r   c                     t        d      j                  d      j                  d      j                  d      j	                  d      j                         } t               }|j                  t        | j                  | j                         ii       t        |      }|j                  | j                  t        d      }d|j                  k(  sJ t        |      }t!        |t"              sJ |j                  | j                  k(  rn|j$                  | k(  r_|j                  t        k(  rL|j                  dk(  r=|j&                  dk(  r.|j(                  dd	ik(  r|j*                  dk(  r|j,                  d
u sJ y )Nr]   rt   Tr^   r   r_   r`   ro   r   F)rz   r{   r|   r}   r   rc   r   rd   r   rK   re   r   rq   r   r^   r   r%   r	   rg   rf   rh   ri   rb   )rk   rl   r'   detailr   s        r   :test_event_for_existing_feature_with_untracked_fallthroughr      s9   -(00588>II'R		q	!	  !"E	JJ7;;(<(<(>?@AF$$W[['9$MFfll"""Aa-...EEW[[ 	'			W	7	q	fm--	9$	%!   	 r   c                     t               } | j                  t        i i       t        |       5 }d|j	                  dt
        d      k(  sJ t        |      }t        |t              sJ |j                  dk(  rc|j                  W|j
                  t
        k(  rD|j                  dk(  r5|j                  )|j                  |j                  dk(  r|j                  du sJ 	 d d d        y # 1 sw Y   y xY w)Nr_   r]   r`   F)r   rd   r   r   rf   r   r   r%   r	   rK   rg   r^   rh   ri   rb   )rl   r'   r   s      r   test_event_for_unknown_featurer     s     "E	JJ"~	U	 %vF,,]GY,WWWWF#!1222&FFNII GGy KKHHOOy(NNe#	% $ $% % %s   B/C&&C/c                  t   t        dd      j                  d      j                         } t               }|j	                  t
        | j                  | j                         ii       t        |      5 }d|j                  | j                  d d      k(  sJ t        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY wr\   )ra   rb   rc   r   rd   r   rK   re   r   rf   r#   )rk   rl   r'   s      r   2test_no_event_for_existing_feature_with_no_contextr     s    'w?LLTRXXZG "E	JJ7;;(<(<(>?@A	U	 )vF,,W[[$	,RRRRF#q((() ) )s   04B..B7c                     t        dd      j                  d      j                         } t               }|j	                  t
        | j                  | j                         ii       t        |      5 }t        j                  d      }d|j                  d|d      k(  sJ t        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr]   r^   TrC   r_   r`   r   )ra   rb   rc   r   rd   r   rK   re   r   r   rD   rf   r#   )rk   rl   r'   bad_contexts       r   7test_no_event_for_existing_feature_with_invalid_contextr     s    'w?LLTRXXZG "E	JJ7;;(<(<(>?@A	U	 )vnnR(F,,]KQZ,[[[[F#q((() ) )s   0?B99CN)3ldclient.clientr   r   r   $ldclient.impl.events.event_processorr   ldclient.feature_storer   ldclient.impl.events.typesr   r	   r
   ldclient.impl.stubsr   ldclient.versioned_data_kindr   testing.builderstesting.stub_utilr   testing.test_ldclientr   r   r   r   r   r   r   r#   r(   r1   r3   r7   r:   r=   rA   rE   rN   rQ   rT   rV   rX   rZ   rm   rr   r   r   r   r   r   r   r    r   r   <module>r      s    5 5 F 7 a a 2 1  1 s sG
GJ
$$)))&&&%))$$$$ 0!0 (!*%"))r   