+
    Žvjª;  ã                  ó  € ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIt^ RIHt ]P                  P                  R]P                  9  ;'       g    R]P                  9  RR7      t]P                  R	 R
 l4       t]P                  R R l4       tR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. lt R/ R0 lt!R1 R2 lt"R3 R4 lt#R# )5é    )ÚannotationsN)Ú	Generator©ÚClientÚMJ_APIKEY_PUBLICÚMJ_APIKEY_PRIVATEzIMJ_APIKEY_PUBLIC and MJ_APIKEY_PRIVATE environment variables must be set.)Úreasonc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnzGenerator[Client, None, None]© )Úformats   "Úa/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/tests/integration/test_client.pyÚ__annotate__r      s   € ÷ ñ Ð2ñ ó    c               #  óØ   "  € \         P                  R,          p \         P                  R,          p\        W3RR7      ;_uu_ 4       pVx € RRR4       R#   + '       g   i     R# ; i5i)zLReturns a client managed safely via context manager to prevent socket leaks.r   r   Úv3©ÚauthÚversionN)ÚosÚenvironr   )Ú
public_keyÚprivate_keyÚclients      r   Úclient_liver      sJ   é € ô —‘Ð.Õ/€JÜ—*‘*Ð0Õ1€KÜ	�jÐ.¸×	=Õ	=ÀØŠ÷ 
>×	=×	=Ò	=üs   ‚AA*ÁAÁ
A*ÁA'	Á!	A*c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r      s   € ÷ ñ Ð"?ñ r   c               #  óz   "  € \        RRR7      ;_uu_ 4       p V x € RRR4       R#   + '       g   i     R# ; i5i)z7Returns a client with deliberately invalid credentials.r   r   N)Úinvalid_publicÚinvalid_privater   )r   s    r   Úclient_live_invalid_authr"      s+   é € ô 
Ð:ÀD×	IÕ	IÈVØŠ÷ 
J×	I×	IÒ	Iüs   ‚;˜'�
;§8	²	;c               ó    € V ^8„  d   QhRRRR/# ©r   r   r   r   ÚNoner   )r   s   "r   r   r   %   s   € ÷ )ñ )¸Fð )Àtñ )r   c                ó|  € \         P                  R,          \         P                  R,          3p\        VRR7      ;_uu_ 4       pRRRRR	R
/RRRR	R/.RRRR/.RR/pVP                  P	                  VR7      pVP
                  R9   g   Q hVP
                  R8w  g   Q h RRR4       R#   + '       g   i     R# ; i)zQTest Send API v3.1 happy path using SandboxMode to prevent actual email delivery.r   r   úv3.1r   ÚMessagesÚFromÚEmailúpilot@mailjet.comÚNameúMailjet PilotÚToúpassenger1@mailjet.comzpassenger 1ÚSubjectzCI/CD Sandbox TestÚTextPartz/This is a test from the Mailjet Python Wrapper.ÚSandboxModeT©Údataé”  N©éÈ   é�  é‘  ©r   r   r   ÚsendÚcreateÚstatus_code©r   Ú
auth_tupleÚ
client_v31r4   Úresults   &    r   Ú*test_live_send_api_v3_1_sandbox_happy_pathrB   %   sÇ   € ä—*‘*Ð/Õ0´"·*±*Ð=PÕ2QÐR€Jä	�Z¨×	0Õ	0°Jàà˜WÐ&9¸6À?ÐSØ˜GÐ%=¸vÀ}ÐUÐVØÐ3ØÐ Qð	ðð ˜4ð

ˆð —‘×'Ñ'¨TÐ'Ó2ˆØ×!Ñ! _Ô4Ð4Ð4Ø×!Ñ! SÔ(Ð(Ñ(÷ 
1×	0×	0Ò	0ús   ÁAB*Â*B;	c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   :   s   € ÷ )ñ )Øð)à	ñ)r   c                óŒ  € \         P                  R,          \         P                  R,          3p\        VRR7      ;_uu_ 4       pRRRRR	R
/RRRR	R/.RRRRRRRRRRR//.RR/pVP                  P	                  VR7      pVP
                  R9   g   Q hVP
                  R8w  g   Q h RRR4       R#   + '       g   i     R# ; i)zCTest Send API v3.1 with TemplateLanguage and Variables (Issue #97).r   r   r'   r   r(   r)   r*   r+   r,   r-   r.   r/   zPassenger 1r0   zTemplate Testr1   zWelcome {{var:name}}ÚHTMLPartz<h3>Welcome {{var:name}}</h3>ÚTemplateLanguageTÚ	VariablesÚnamezJohn Doer2   r3   r5   Nr6   r:   r>   s   &    r   Ú7test_live_send_api_v3_1_template_language_and_variablesrI   :   sÝ   € ô —*‘*Ð/Õ0´"·*±*Ð=PÕ2QÐR€Jä	�Z¨×	0Õ	0°Jàà˜WÐ&9¸6À?ÐSØ˜GÐ%=¸vÀ}ÐUÐVØ˜ØÐ 6ØÐ ?Ø&¨Ø &¨*Ð!5ðð
ð ˜4ð
ˆð —‘×'Ñ'¨TÐ'Ó2ˆØ×!Ñ! _Ô4Ð4Ð4Ø×!Ñ! SÔ(Ð(Ñ(÷# 
1×	0×	0Ò	0ús   ÁA#B2Â2C	c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   T   s   € ÷ 4ñ 4¸6ð 4Àdñ 4r   c                ó¤  € \         P                  ! 4       P                  R,          pRRV 2RRRRR^/pV P                  P	                  VR	7      pVP
                  ^É8w  d$   \        P                  ! R
VP                   24       VP                  4       R,          ^ ,          R,          p RRR/RRRR/pV P                  P	                  WER7      pVP
                  R9   g   Q hV P                  P                  VR7      pVP
                  ^È8X  g   Q h V P                  P                  VR7       R#   T P                  P                  TR7       i ; i)z?End-to-End happy path test of the older v3 Email API Templates.ºNé   Nr,   zCI/CD Test Template ÚAuthorzMailjet Python WrapperÚDescriptionz+Temporary template for integration testing.ÚEditModer3   z'Could not create template for testing: ÚDataÚIDÚHeadersr0   zTest Content Subjectú	Html-partz5<html><body><h1>Hello from Python!</h1></body></html>ú	Text-partzHello from Python!©Úidr4   ©rW   N©r7   éÉ   )ÚuuidÚuuid4ÚhexÚtemplater<   r=   ÚpytestÚskipÚtextÚjsonÚtemplate_detailcontentÚgetÚdelete)r   Úunique_suffixÚtemplate_dataÚcreate_respÚtemplate_idÚcontent_dataÚcontent_respÚget_resps   &       r   Ú)test_live_email_api_v3_template_lifecyclerm   T   sV  € ä—J’J“L×$Ñ$ RÕ(€MàÐ& } oÐ6ØÐ*ØÐDØ�Að	€Mð ×&Ñ&×-Ñ-°=Ð-ÓA€Kà×Ñ #Ô%Ü�ŠÐ=¸k×>NÑ>NÐ=OÐPÔQà×"Ñ"Ó$ VÕ,¨QÕ/°Õ5€Kð4à˜	Ð#9Ð:ØÐPØÐ-ð
ˆð
 #×9Ñ9×@Ñ@Øð Aó 
ˆð ×'Ñ'¨:Ô5Ð5Ð5Ø×5Ñ5×9Ñ9¸[Ð9ÓIˆØ×#Ñ# sÔ*Ð*Ñ*ð 	×Ñ×#Ñ# {Ð#Ö3øˆ×Ñ×#Ñ# {Ð#Õ3ús   Â*A(D1 Ä1Ec               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   v   s   € ÷ (7ñ (7¸Vð (7Èñ (7r   c           
     ó„  € \         P                  R,          \         P                  R,          3p\        VRR7      ;_uu_ 4       pRR\        P                  ! 4       P
                  R,           2R^R	R
./pVP                  P                  VR7      pVP                  ^É8w  d$   \        P                  ! RVP                   24       VP                  4       R,          ^ ,          R,          p RRR/RRRRRR/pVP                  P                  WVR7      pVP                  ^É8X  g   Q hVP                  P                  VR7      pVP                  ^È8X  g   Q hVP                  P!                  VRR7      p	V	P                  ^È8X  g   Q hVP"                  P                  V/ R7      p
V
P                  ^Ì8X  g   Q hVP$                  P                  V/ R7      pVP                  ^Ì8X  g   Q h VP                  P'                  VR7        RRR4       R#   TP                  P'                  TR7       i ; i  + '       g   i     R# ; i)zTEnd-to-End test of the true v1 Content API Templates utilizing lock/unlock workflow.r   r   Úv1r   r,   zv1-template-rL   rP   ÚPurposesÚtransactionalr3   z*Could not create v1 template for testing: rQ   rR   rS   r0   zV1 Content SubjectÚHtmlPartz-<html><body><h1>V1 Content</h1></body></html>r1   z
V1 ContentÚLocaleÚen_USrV   rX   ÚP)rW   Ú	action_idN)r   r   r   r[   r\   r]   Ú	templatesr<   r=   r_   r`   ra   rb   Útemplates_contentsÚtemplates_contents_publishÚtemplates_contents_typesrd   Útemplates_contents_lockÚtemplates_contents_unlockre   )r   r?   Ú	client_v1rg   rh   ri   rj   rk   Úpublish_resprl   Ú	lock_respÚunlock_resps   &           r   Ú+test_live_content_api_v1_template_lifecycler‚   v   s   € ä—*‘*Ð/Õ0´"·*±*Ð=PÕ2QÐR€Jä	�Z¨×	.Õ	.°)à�l¤4§:¢:£<×#3Ñ#3°BÕ#7Ð"8Ð9Ø˜Ø˜Ð)ð
ˆð
  ×)Ñ)×0Ñ0°mÐ0ÓDˆà×"Ñ" cÔ)Ü�KŠKÐDÀ[×EUÑEUÐDVÐWÔXà!×&Ñ&Ó(¨Õ0°Õ3°DÕ9ˆð	7à˜IÐ';Ð<ØÐKØ˜LØ˜'ð	ˆLð %×7Ñ7×>Ñ>À+Ð>ÓaˆLØ×+Ñ+¨sÔ2Ð2Ð2à$×?Ñ?×FÑFÈ+ÐFÓVˆLØ×+Ñ+¨sÔ2Ð2Ð2à ×9Ñ9×=Ñ=ÀÐX[Ð=Ó\ˆHØ×'Ñ'¨3Ô.Ð.Ð.à!×9Ñ9×@Ñ@ÀKÐVXÐ@ÓYˆIØ×(Ñ(¨CÔ/Ð/Ð/à#×=Ñ=×DÑDÈÐZ\ÐDÓ]ˆKØ×*Ñ*¨cÔ1Ð1Ñ1ð ×Ñ×&Ñ&¨+Ð&Õ6÷I 
/Ñ	.øðH ×Ñ×&Ñ&¨+Ð&Õ6ú÷I 
/×	.Ð	.ús&   ÁB&H.Ã+C:HÇ&H.ÈH+È+H.È.H?	c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   £   s   € ÷ ,ñ ,°Vð ,Àñ ,r   c                ód   € V P                   P                  RR7      pVP                  R9   g   Q hR# )zkVerify that malicious IDs are securely URL-encoded, preventing directory traversal execution on the server.z123/../../deleterX   N©r8   r5   ©Úcontactrd   r=   ©r   rA   s   & r   Ú#test_live_path_traversal_preventionr‰   £   s0   € à× Ñ ×$Ñ$Ð(:Ð$Ó;€FØ×Ñ Ô+Ð+Ò+r   c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   ©   s   € ÷ Lñ L¸ð LÀDñ Lr   c                óÈ   € Rp\         P                  ! \        RR7      ;_uu_ 4        V P                  P	                  RV/R7       RRR4       R#   + '       g   i     R# ; i)zZVerify that the SDK intercepts HTTP Request Smuggling attempts before hitting the network.z7iOS-App
Transfer-Encoding: chunked

[Malicious Body]z!CRLF Injection detected in header)ÚmatchzX-User-Agent)ÚheadersN)r_   ÚraisesÚ
ValueErrorr‡   rd   )r   Úmalicious_headers   & r   Ú'test_live_crlf_header_injection_blockedr‘   ©   sG   € àVÐä	�Š”zÐ)L×	MÖ	MØ×Ñ×Ñ¨Ð9IÐ(JÐÔK÷ 
N×	M×	MÒ	Mús   §AÁA!	c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   ³   s   € ÷ )ñ )°Vð )Àñ )r   c                ó*  € \         P                  R,          \         P                  R,          3p\        VRR7      ;_uu_ 4       pVP                  P	                  RR/R7      pVP
                  R8X  g   Q h R	R	R	4       R	#   + '       g   i     R	# ; i)
z?Test Send API v3.1 bad path (missing mandatory Messages array).r   r   r'   r   ÚInvalidFieldTr3   r8   Nr:   )r   r?   r@   rA   s   &   r   Ú#test_live_send_api_v3_1_bad_payloadr•   ³   sn   € ä—*‘*Ð/Õ0´"·*±*Ð=PÕ2QÐR€JÜ	�Z¨×	0Õ	0°JØ—‘×'Ñ'¨n¸dÐ-CÐ'ÓDˆØ×!Ñ! SÔ(Ð(Ñ(÷ 
1×	0×	0Ò	0ús   Á2BÂB	c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   »   s   € ÷ %ñ %°6ð %¸dñ %r   c                ód   € V P                   P                  / R7      pVP                  R8X  g   Q hR# )z7Test legacy Send API v3 bad path endpoint availability.r3   r8   N)r;   r<   r=   rˆ   s   & r   Ú!test_live_send_api_v3_bad_payloadr˜   »   s/   € à×Ñ×$Ñ$¨"Ð$Ó-€FØ×Ñ Ô$Ð$Ò$r   c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   Á   s   € ÷ ,ñ ,°ð ,¸4ñ ,r   c                óh   € RpV P                   P                  VR7      pVP                  R9   g   Q hR# )zOTest Content API bad path (accessing detailcontent of a non-existent template).l   ÿJ)£rX   Nr…   )rc   rd   r=   )r   Úinvalid_template_idrA   s   &  r   Útest_live_content_api_bad_pathrœ   Á   s6   € à&ÐØ×/Ñ/×3Ñ3Ð7JÐ3ÓK€FØ×Ñ Ô+Ð+Ò+r   c               ó   € V ^8„  d   QhRR/# ©r   r   r%   r   )r   s   "r   r   r   È   s   € ÷ )ñ )¨dñ )r   c                 óÆ   € \        RRR7      ;_uu_ 4       p V P                  P                  4       pVP                  R8X  g   Q h RRR4       R#   + '       g   i     R# ; i)z?Test Content API v1 endpoints with Bearer token authentication.Úfake_test_content_token_123rp   r   r9   N)r   rx   rd   r=   )r~   rA   s     r   Ú$test_live_content_api_v1_bearer_authr¡   È   sJ   € ä	Ð2¸D×	AÕ	AÀYØ×$Ñ$×(Ñ(Ó*ˆØ×!Ñ! SÔ(Ð(Ñ(÷ 
B×	A×	AÒ	Aús   –.AÁA 	c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   Ï   s   € ÷ %ñ %°6ð %¸dñ %r   c                ót   € RRRRRR/pV P                   P                  VR7      pVP                  ^È8X  g   Q hR# )	z@Test retrieving campaign statistics to match the README example.ÚCounterSourceÚAPIKeyÚCounterTimingÚMessageÚCounterResolutionÚLifetime©ÚfiltersN)Ústatcountersrd   r=   )r   r«   rA   s   &  r   Ú!test_live_statcounters_happy_pathr­   Ï   sI   € ð 	˜Ø˜Ø˜Zð€Gð
 ×%Ñ%×)Ñ)°'Ð)Ó:€FØ×Ñ Ô$Ð$Ò$r   c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   Ú   s   € ÷ %ñ % 6ð %¨dñ %r   c                ód   € V P                   P                  ^R7      pVP                  ^È8X  g   Q hR# )zbTests a standard GET request. Passes explicit valid timeout to ensure config validation allows it.)ÚtimeoutNr†   rˆ   s   & r   Útest_get_no_paramr±   Ú   s/   € à× Ñ ×$Ñ$¨RÐ$Ó0€FØ×Ñ Ô$Ð$Ò$r   c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   à   s   € ÷ %ñ %¨ð %°Dñ %r   c                ód   € V P                   P                  / R7      pVP                  R8X  g   Q hR# )zOTests a POST request with an empty data payload. Should return 400 Bad Request.r3   r8   N)Úsenderr<   r=   rˆ   s   & r   Útest_post_with_no_paramrµ   à   s/   € à×Ñ×&Ñ&¨BÐ&Ó/€FØ×Ñ Ô$Ð$Ò$r   c               ó    € V ^8„  d   QhRRRR/# ©r   r"   r   r   r%   r   )r   s   "r   r   r   æ   s   € ÷ %ñ %Ø$ð%à	ñ%r   c                ó`   € V P                   P                  4       pVP                  R8X  g   Q hR# )zETests that invalid credentials result in a 401 Unauthorized response.r9   Nr†   )r"   rA   s   & r   Ú/test_client_initialization_with_invalid_api_keyr¹   æ   s,   € ð &×-Ñ-×1Ñ1Ó3€FØ×Ñ Ô$Ð$Ò$r   c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   î   s   € ÷ #<ñ #< fð #<°ñ #<r   c                óf  € ^ RI Hp \        P                  ! 4       P                  R,          pV P
                  P                  RRV 2/R7      pVP                  ^É8w  d$   \        P                  ! RVP                   24       VP                  4       R,          ^ ,          R,          p V! R	4      pVP                  4       '       g   \        P                  ! R
4       VP                  RR7      pV P                  P                  WFR7      pVP                  ^È8X  g   Q hVP                  4       P                  R4      pRRRVRV/p	V P                   P                  V	R7      p
V
P                  ^É8X  g   Q h V P
                  P#                  VR7       R#   T P
                  P#                  TR7       i ; i)zDEnd-to-End test for uploading CSV data and triggering an import job.)ÚPathrL   r,   zTest CSV List r3   z$Failed to create test contact list: rQ   rR   ztests/doc_tests/files/data.csvz$data.csv file not found for testing.zutf-8)ÚencodingrV   ÚMethodÚ
addnoforceÚContactsListIDÚDataIDrX   N)Úpathlibr¼   r[   r\   r]   Úcontactslistr<   r=   r_   r`   ra   rb   ÚexistsÚ	read_textÚcontactslist_csvdatard   Ú	csvimportre   )r   r¼   rf   Ú	list_respÚcontactslist_idÚcsv_pathÚcsv_dataÚupload_respÚdata_idÚimport_dataÚimport_resps   &          r   Útest_csv_import_flowrÐ   î   s‹  € åä—J’J“L×$Ñ$ RÕ(€MØ×(Ñ(×/Ñ/Ø˜ } oÐ6Ð7ð 0ó €Ið ×Ñ Ô#Ü�ŠÐ:¸9¿>¹>Ð:JÐKÔLà—n‘nÓ& vÕ.¨qÕ1°$Õ7€Oð<ÙÐ8Ó9ˆØ�‰× Ò Ü�KŠKÐ>Ô?à×%Ñ%¨wÐ%Ó7ˆØ!×6Ñ6×=Ñ=Øð >ó 
ˆð ×&Ñ&¨#Ô-Ð-Ð-Ø×"Ñ"Ó$×(Ñ(¨Ó.ˆð �lØ˜oØ�gð
ˆð
 "×+Ñ+×2Ñ2¸Ð2ÓDˆØ×&Ñ&¨#Ô-Ð-Ñ-ð 	× Ñ ×'Ñ'¨?Ð'Ö;øˆ× Ñ ×'Ñ'¨?Ð'Õ;ús   Â(F ÃB-F ÆF0c               ó   € V ^8„  d   QhRR/# rž   r   )r   s   "r   r   r     s   € ÷ 2ñ 2°tñ 2r   c            	     ó`  € ^ RI p \        P                  P                  RR4      p\        P                  P                  RR4      pW3p\	        \        P                  P                  R4      ;'       g    TRR7      ;_uu_ 4       pRpR	RR
RV P                  V4      R3/pVP                  P                  RR/VR7      pVP                  ^É8X  g   Q hVP                  4       R,          ^ ,          R,          pVP                  P                  VR7       RRR4       R#   + '       g   i     R# ; i)z=Test 8 from Canvas: REAL file upload via multipart/form-data.Nr   Ú r   ÚMJ_CONTENT_TOKENrp   r   z\iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=ÚmetadataÚfilezci_test_logo.pngz	image/pngzContent-Type)r�   ÚfilesrQ   rR   rX   )Nz.{"name": "ci_test_logo.png", "Status": "open"}zapplication/json)Úbase64r   r   rd   r   Ú	b64decodeÚdata_imagesr<   r=   rb   re   )	rØ   Úapi_keyÚ
api_secretÚauth_fallbackr~   Ú
b64_stringÚfiles_payloadrA   Úimage_ids	            r   Ú-test_live_content_api_images_multipart_uploadrá     s  € ãä�j‰j�n‰nÐ/°Ó4€GÜ—‘—‘Ð 3°RÓ8€JØÐ)€Mä	”R—Z‘Z—^‘^Ð$6Ó7×HÐH¸=ÐRV×	WÕ	WÐ[dØsˆ
àÐdØÐ'¨×)9Ñ)9¸*Ó)EÀ{ÐSð
ˆð
 ×&Ñ&×-Ñ-°~ÀtÐ6LÐTaÐ-ÓbˆØ×!Ñ! SÔ(Ð(Ð(ð —;‘;“= Õ(¨Õ+¨DÕ1ˆØ×Ñ×$Ñ$¨Ð$Ô1÷ 
X×	W×	WÒ	Wús   ÂBDÄD-	c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   +  s   € ÷ ?ñ ?°&ð ?¸Tñ ?r   c                óî  € R\         P                  ! 4       P                  R,           R2pV P                  P	                  RVRR/R7      pVP
                  ^É8X  g   Q hVP                  4       R,          ^ ,          R	,          p V P                  P                  VR
7      pVP
                  ^È8X  g   Q hVP                  4       R,          ^ ,          R,          V8X  g   Q hV P                  P                  VRR/R7      pVP
                  ^È8X  g   Q h V P                  P                  VR
7      pVP
                  R9   g   Q hR#   T P                  P                  TR
7      pTP
                  R9   g   Q hi ; i)zIIntegration test for Contact creation, retrieval, updating, and deletion.zci-test-contact-rL   z@example.comr*   ÚIsExcludedFromCampaignsÚtruer3   rQ   rR   rX   r,   zCI Test UserrV   N)r7   éÌ   r9   i•  )
r[   r\   r]   r‡   r<   r=   rb   rd   Úupdatere   )r   Ú
test_emailrh   Ú
contact_idrl   Úupdate_respÚdelete_resps   &      r   Ú test_live_contact_crud_lifecyclerì   +  sj  € à#¤D§J¢J£L×$4Ñ$4°RÕ$8Ð#9¸ÐF€Jð ×%Ñ%×,Ñ,°7¸JÐHaÐciÐ2jÐ,Ók€KØ×"Ñ" cÔ)Ð)Ð)Ø×!Ñ!Ó# FÕ+¨AÕ.¨tÕ4€Jð?à×&Ñ&×*Ñ*¨jÐ*Ó9ˆØ×#Ñ# sÔ*Ð*Ð*Ø�}‰}‹˜vÕ& qÕ)¨'Õ2°jÔ@Ð@Ð@ð "×)Ñ)×0Ñ0°JÀfÈnÐE]Ð0Ó^ˆØ×&Ñ&¨#Ô-Ð-Ñ-ð "×)Ñ)×0Ñ0°JÐ0Ó?ˆð ×&Ñ&Ð*>Ô>Ð>Ò>øð "×)Ñ)×0Ñ0°JÐ0Ó?ˆð ×&Ñ&Ð*>Ô>Ð>Ñ>ús   ÂBE Å1E4c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   E  s   € ÷ 5ñ 5°6ð 5¸dñ 5r   c           
     óL  € R\         P                  ! 4       P                  R,           2pRVRRR^RRR	R
/pV P                  P	                  VR7      pVP
                  ^É8X  g   Q hVP                  4       R,          ^ ,          R,          p RRRR/pV P                  P	                  WER7      pVP
                  R9   g   Q h V P                  P                  VR7      pVP
                  R9   g   Q hR#   T P                  P                  TR7      pTP
                  R9   g   Q hi ; i)zQIntegration test for Template shell creation, content modification, and deletion.zCI Test Template rL   r,   rN   zMailjet Python CIrP   ÚIsTextPartGenerationEnabledTrt   ru   r3   rQ   rR   rT   z0<html><body><h1>Hello from CI</h1></body></html>rU   zHello from CIrV   rX   NrY   )r7   ræ   )	r[   r\   r]   r^   r<   r=   rb   rc   re   )r   Útemplate_nameÚcreate_datarh   ri   rj   rk   rë   s   &       r   Ú!test_live_template_crud_lifecyclerò   E  s7  € à'¬¯
ª
«×(8Ñ(8¸Õ(<Ð'=Ð>€Mð 	�ØÐ%Ø�AØ% tØ�'ð€Kð ×&Ñ&×-Ñ-°;Ð-Ó?€KØ×"Ñ" cÔ)Ð)Ð)Ø×"Ñ"Ó$ VÕ,¨QÕ/°Õ5€Kð5ð ÐKØ˜ð
ˆð #×9Ñ9×@Ñ@ÀKÐ@ÓcˆØ×'Ñ'¨:Ô5Ð5Ñ5ð "×*Ñ*×1Ñ1°[Ð1ÓAˆØ×&Ñ&¨*Ô4Ð4Ò4øð "×*Ñ*×1Ñ1°[Ð1ÓAˆØ×&Ñ&¨*Ô4Ð4Ñ4ús   Â5C2 Ã21D#c               ó    € V ^8„  d   QhRRRR/# r$   r   )r   s   "r   r   r   d  s   € ÷ añ a¨fð a¸ñ ar   c                ó  € V P                   V P                  V P                  V P                  .pV FT  pVP	                  R^/R7      pVP
                  ^È8X  g   Q hRVP                  4       9   d   KA  Q RVP                   R24       h	  R# )zFVerify that basic read operations work across multiple core endpoints.Úlimitrª   rQ   z	Endpoint z did not return 'Data' payload.N)r´   ÚmessageÚcampaignÚcontactfilterrd   r=   rb   rH   )r   Úendpoints_to_testÚendpointÚresps   &   r   Útest_live_readonly_endpointsrü   d  s‹   € ð 	×ÑØ×ÑØ×ÑØ×!Ñ!ð	Ðó &ˆØ�|‰| W¨a Lˆ|Ó1ˆà×Ñ 3Ô&Ð&Ð&Ø˜Ÿ™›Ö$Ð`¨	°(·-±-°Ð@_Ð&`Ó`Ð$ó	 &r   c               ó    € V ^8„  d   QhRRRR/# r·   r   )r   s   "r   r   r   u  s   € ÷ /ñ /¸fð /Èñ /r   c                ól  € V P                   P                  R^/R7      pVP                  R8X  g   Q hVP                  P	                  4       '       d>    RVP                  9   g*   VP                  4       P                  R4      '       g   Q hR# R# R#   \         d    RTP                  9   g   Q h R# i ; i)zHVerify that invalid credentials reliably raise an HTTP 401 Unauthorized.rõ   rª   r9   ÚUnauthorizedÚErrorMessageN)r‡   rd   r=   ra   Ústriprb   r�   )r"   rû   s   & r   Útest_live_auth_failure_handlingr  u  sŸ   € à#×+Ñ+×/Ñ/¸À!¸Ð/ÓE€DØ×Ñ˜sÔ"Ð"Ð"ð ‡y�y‡�×Òð	/Ø! T§Y¡YÔ.°$·)±)³+·/±/À.×2QÒ2QÐQÐQÑ2QÑ.ñ øô ô 	/Ø! T§Y¡YÔ.Ð.Ó.ð	/ús   Á5B Â	B ÂB3Â2B3)$Ú
__future__r   r   r[   Úcollections.abcr   r_   Úmailjet_rest.clientr   ÚmarkÚskipifr   Ú
pytestmarkÚfixturer   r"   rB   rI   rm   r‚   r‰   r‘   r•   r˜   rœ   r¡   r­   r±   rµ   r¹   rÐ   rá   rì   rò   rü   r  r   r   r   Ú<module>r
     sì   ðÝ "ã 	Û Ý %ã å &ð �[‰[×ÑØ˜bŸj™jÑ(×QÐQÐ,?ÀrÇzÁzÑ,QØVð  ó €
ð ‡�ôó ðð ‡�ôó ðõ)õ*)õ44õD(7õZ,õLõ)õ%õ,õ)õ%õ%õ%õ%õ#<õL2õ.?õ45õ>a÷"/r   