
    _j'                         S r SSKrSSKJrJr  SSKJrJr  SSKJ	r	J
r
  SSKJr   " S S\5      r " S	 S
\5      r " S S\R                  5      r\S:X  a  \R$                  " 5         gg)z:
Integration tests for agent method with mocked requests.
    N)patch	MagicMock)	BaseModelField)ListOptional)FirecrawlAppc                   h    \ rS rSr% \" SS9r\\S'   \" SSS9r\	\   \S'   \" SSS9r
\	\   \S	'   S
rg)Founder   zFull name of the founderdescriptionnameNzRole or positionrolezProfessional background
background )__name__
__module____qualname____firstlineno__r   r   str__annotations__r   r   r   __static_attributes__r       Q/home/rurouni/.local/lib/python3.13/site-packages/tests/test_agent_integration.pyr   r      s>    "<=D#=2DED(3-E %d8Q RJRr   r   c                   2    \ rS rSr% \" SS9r\\   \S'   Sr	g)FoundersSchema   zList of foundersr   foundersr   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    #0BCHd7mCr   r   c                      \ rS rSrSr\" S5      \" S5      S 5       5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r	\" S5      S	 5       r
\" S5      \" S5      S
 5       5       r\" S5      S 5       rSrg)	TestAgent   z#Integration tests for agent method.z,firecrawl.v2.utils.http_client.requests.postz+firecrawl.v2.utils.http_client.requests.getc           	         [        5       nSUl        SUl        SSSS.UR                  l        X2l        [        5       nSUl        SUl        SSSSSS	S
S.SSSS./0SSS.UR                  l        XAl        [        SS9nUR                  S[        S9nUR                  5         UR                  nSUS   ;   a  US   S   OUS   S   nS[        U5      ;   d   eUS   S   n	U	S   S:X  d   eSU	;   d   eU	S   S   S:X  d   eSU	S   S   ;   d   eUR                  5         UR                  S:X  d   eUR                  c   eg )!zTest basic agent call.T   test-agent-123
processingsuccessidstatus	completedr   zJohn DoeCEOzTech entrepreneur)r   r   r   z
Jane SmithCTOzSoftware engineer
   z2024-01-01T00:00:00Z)r(   r)   r*   datacreditsUsed	expiresAttest-api-keyapi_keyzFind the founders of Firecrawlpromptschemaurl   r   	/v2/agentjsonr6   r7   typeobject
propertiesN)r   okstatus_coder;   return_valuer	   agentr   assert_called_once	call_argsr   assert_calledr*   r/   )
selfmock_get	mock_postmock_start_responsemock_status_responseappresultpost_call_argspost_urlrequest_bodys
             r   test_agent_basicTestAgent.test_agent_basic   s   
 (k!%*-'""1
  -
 "5  ){"&+.("!'FYZ)5H[\ /2
!!. !5>23!  
 	$$&",,/4q8I/I>!$U+~^_O`abOcc(m+++ &a(0H%)IIII<'''H%f-999\(3LAAAA 	  }}+++{{&&&r   c                    [        5       nSUl        SUl        SSSS0S.UR                  l        X!l        [        SS9nUR                  S	S
/SSSSS00S.S9nUR                  nUS   S   nUS   S	S
/:X  d   eUS   S:X  d   eg)zTest agent call with URLs.Tr$   r+   rL   doner(   r*   r/   r2   r3   https://example.comzhttps://test.comzExtract informationr=   infor<   stringr<   r>   )urlsr6   r7   r9   r;   rY   r6   Nr   r?   r@   r;   rA   r	   rB   rD   )rF   rH   mock_responserK   rL   rM   rO   s          r   test_agent_with_urlsTestAgent.test_agent_with_urlsV   s     "$'!!v&+
'
 "/>2');<($Vfh=O4PQ  
 #,,%a(0F#(=?Q'RRRRH%)>>>>r   c                     [        5       nSUl        SUl        SSSS0S.UR                  l        X!l        SSS	0SS
0S.S.n[        SS9nUR                  SUS9nUR                  nUS   S   nUS   U:X  d   eg)z!Test agent call with dict schema.Tr$   r+   rL   rS   rT   r=   r<   rW   integer)r   agerX   r2   r3   zExtract person datar5   r9   r;   r7   NrZ   )rF   rH   r[   r7   rK   rL   rM   rO   s           r   test_agent_with_dict_schema%TestAgent.test_agent_with_dict_schemap   s     "$'!!v&+
'
 "/ *	*
 >2(  
 #,,%a(0H%///r   c                 d   [        5       nSUl        SUl        SSSS0S.UR                  l        X!l        SS0nS	/n[        S
S9nUR                  USUSSSSSS9nUR                  nUS   S   nUS   S:X  d   eUS   U:X  d   eUS   U:X  d   eUS   S:X  d   eUS   S:X  d   eUS   SL d   eg)z$Test agent call with all parameters.Tr$   r+   rL   rS   rT   r<   r=   rU   r2   r3   zComplete testztest-integration2   r9      )rY   r6   r7   integrationmax_creditsstrict_constrain_to_urlspoll_intervaltimeoutr;   r6   rY   r7   rf   
maxCreditsstrictConstrainToURLsNrZ   )	rF   rH   r[   r7   rY   rK   rL   rM   rO   s	            r   test_agent_with_all_params$TestAgent.test_agent_with_all_params   s    "$'!!v&+
'
 "/(#%&>2"*%)  	
 #,,%a(0H%888F#t+++H%///M*.@@@@L)R///34<<<r   c                 H   [        5       nSUl        SUl        SSSS0S.UR                  l        X!l        [        SS9nUR                  S	[        S
9nUR                  nUS   S   nSU;   d   eUS   nUS   S:X  d   eSU;   d   eSUS   ;   d   eUS   S   S   S:X  d   eg)z3Test that Pydantic schemas are properly normalized.Tr$   r+   rL   rS   rT   r2   r3   zFind foundersr5   r9   r;   r7   r<   r=   r>   r   arrayN)	r   r?   r@   r;   rA   r	   rB   r   rD   )rF   rH   r[   rK   rL   rM   rO   r7   s           r   (test_agent_pydantic_schema_normalization2TestAgent.test_agent_pydantic_schema_normalization   s     "$'!!v&+
'
 "/>2"!  
 #,,%a(0<'''h'f~)))v%%%VL1111l#J/77BBBr   c                    [        5       nSUl        SUl        SSSS.UR                  l        X2l        [        5       nSUl        SUl        SSSSS0S	.UR                  l        XAl        [        S
SS9nUR                  SS9nUR                  nSUS   ;   a  US   R                  S5      OUS   S   nS[        U5      ;   d   eUR                  n	SU	S   ;   a  U	S   R                  S5      OU	S   S   n
S[        U
5      ;   d   eg)z1Test that agent requests are sent to correct URL.Tr$   r%   r&   r'   r+   rL   rS   )r(   r)   r*   r/   r2   zhttps://api.firecrawl.dev)r4   api_urlTest promptr6   r8   r9   r   r:   z/v2/agent/test-agent-123N)
r   r?   r@   r;   rA   r	   rB   rD   getr   )rF   rG   rH   rI   rJ   rK   rL   rM   rN   get_call_argsget_urls              r   test_agent_url_construction%TestAgent.test_agent_url_construction   sA   
 (k!%*-'""1
  -
 "5  ){"&+.("!v&	2
!!. !5>;VW-0 #,,38N1<M3M>!$((/SabcSdefSgc(m+++ !**16-:J1J-"&&u-P]^_P`abPc)S\999r   c                    [        5       nSUl        SUl        SSSS0S.UR                  l        X!l        [        SS9nUR                  S	S
9nUR                  nUS   S   nSU;   d   eUS   S:X  d   eUS   S:X  d   eg)z1Test that agent requests include correct headers.Tr$   r+   rL   rS   rT   r2   r3   ru   rv   r9   headersAuthorizationzBearer test-api-keyzContent-Typezapplication/jsonNrZ   )rF   rH   r[   rK   rL   rM   r}   s          r   test_agent_headersTestAgent.test_agent_headers   s     "$'!!v&+
'
 "/>2-0 #,, #I.')))'+@@@@~&*<<<<r   r   N)r   r   r   r   __doc__r   rP   r\   ra   rm   rq   rz   r   r   r   r   r   r!   r!      s    -
9:
898' : ;8't 9:? ;?2 9:0 ;0> 9:#= ;#=J 9:C ;C8 9:
89$: : ;$:L 9:= ;=r   r!   __main__)r   unittestunittest.mockr   r   pydanticr   r   typingr   r   	firecrawlr	   r   r   TestCaser!   r   mainr   r   r   <module>r      sd     * % ! "Si SDY Dy=!! y=x zMMO r   