
    Sj'                         d Z ddlZddlmZmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZ  G d de      Z G d	 d
e      Z G d dej                        Zedk(  r ej$                          yy)z:
Integration tests for agent method with mocked requests.
    N)patch	MagicMock)	BaseModelField)ListOptional)FirecrawlAppc                   r    e Zd ZU  ed      Zeed<    edd      Zee   ed<    edd      Z	ee   ed<   y)	FounderzFull name of the founderdescriptionnameNzRole or positionrolezProfessional background
background)
__name__
__module____qualname__r   r   str__annotations__r   r   r        O/root/.hermes/venv/lib/python3.12/site-packages/tests/test_agent_integration.pyr   r      s>    "<=D#=2DED(3-E %d8Q RJRr   r   c                   0    e Zd ZU  ed      Zee   ed<   y)FoundersSchemazList of foundersr   foundersN)r   r   r   r   r   r   r   r   r   r   r   r   r      s    #0BCHd7mCr   r   c                       e Zd ZdZ ed       ed      d               Z ed      d        Z ed      d        Z ed      d        Z ed      d        Z	 ed       ed      d	               Z
 ed      d
        Zy)	TestAgentz#Integration tests for agent method.z,firecrawl.v2.utils.http_client.requests.postz+firecrawl.v2.utils.http_client.requests.getc           	      |   t               }d|_        d|_        dddd|j                  _        ||_        t               }d|_        d|_        dddddd	d
dddddgiddd|j                  _        ||_        t        d      }|j                  dt              }|j                          |j                  }d|d   v r|d   d   n|d   d   }dt        |      v sJ |d   d   }	|	d   dk(  sJ d|	v sJ |	d   d   dk(  sJ d|	d   d   v sJ |j                          |j                  dk(  sJ |j                  J y )!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jsonr1   r2   typeobject
propertiesN)r   okstatus_coder6   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_basicz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                    t               }d|_        d|_        ddddid|j                  _        ||_        t        d      }|j                  d	d
gdddddiid      }|j                  }|d   d   }|d   d	d
gk(  sJ |d   dk(  sJ y)zTest agent call with URLs.Tr   r&   rG   doner#   r%   r*   r-   r.   https://example.comzhttps://test.comzExtract informationr8   infor7   stringr7   r9   )urlsr1   r2   r4   r6   rS   r1   Nr   r:   r;   r6   r<   r	   r=   r?   )rA   rC   mock_responserF   rG   rH   rJ   s          r   test_agent_with_urlszTestAgent.test_agent_with_urlsV   s     "$'!!v&+
'
 "/	>2');<($Vfh=O4PQ  
 #,,%a(0F#(=?Q'RRRRH%)>>>>r   c                    t               }d|_        d|_        ddddid|j                  _        ||_        ddd	idd
idd}t        d      }|j                  d|      }|j                  }|d   d   }|d   |k(  sJ y)z!Test agent call with dict schema.Tr   r&   rG   rM   rN   r8   r7   rQ   integer)r   agerR   r-   r.   zExtract person datar0   r4   r6   r2   NrT   )rA   rC   rU   r2   rF   rG   rH   rJ   s           r   test_agent_with_dict_schemaz%TestAgent.test_agent_with_dict_schemap   s     "$'!!v&+
'
 "/	 *	*
 >2(  
 #,,%a(0H%///r   c           
      f   t               }d|_        d|_        ddddid|j                  _        ||_        ddi}d	g}t        d
      }|j                  |d|ddddd      }|j                  }|d   d   }|d   dk(  sJ |d   |k(  sJ |d   |k(  sJ |d   dk(  sJ |d   dk(  sJ |d   du sJ y)z$Test agent call with all parameters.Tr   r&   rG   rM   rN   r7   r8   rO   r-   r.   zComplete testztest-integration2   r4      )rS   r1   r2   integrationmax_creditsstrict_constrain_to_urlspoll_intervaltimeoutr6   r1   rS   r2   r^   
maxCreditsstrictConstrainToURLsNrT   )	rA   rC   rU   r2   rS   rF   rG   rH   rJ   s	            r   test_agent_with_all_paramsz$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                 F   t               }d|_        d|_        ddddid|j                  _        ||_        t        d      }|j                  d	t        
      }|j                  }|d   d   }d|v sJ |d   }|d   dk(  sJ d|v sJ d|d   v sJ |d   d   d   dk(  sJ y)z3Test that Pydantic schemas are properly normalized.Tr   r&   rG   rM   rN   r-   r.   zFind foundersr0   r4   r6   r2   r7   r8   r9   r   arrayN)	r   r:   r;   r6   r<   r	   r=   r   r?   )rA   rC   rU   rF   rG   rH   rJ   r2   s           r   (test_agent_pydantic_schema_normalizationz2TestAgent.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                    t               }d|_        d|_        dddd|j                  _        ||_        t               }d|_        d|_        dddddid	|j                  _        ||_        t        d
d      }|j                  d      }|j                  }d|d   v r|d   j                  d      n|d   d   }dt        |      v sJ |j                  }	d|	d   v r|	d   j                  d      n|	d   d   }
dt        |
      v sJ y)z1Test that agent requests are sent to correct URL.Tr   r    r!   r"   r&   rG   rM   )r#   r$   r%   r*   r-   zhttps://api.firecrawl.dev)r/   api_urlTest promptr1   r3   r4   r   r5   z/v2/agent/test-agent-123N)
r   r:   r;   r6   r<   r	   r=   r?   getr   )rA   rB   rC   rD   rE   rF   rG   rH   rI   get_call_argsget_urls              r   test_agent_url_constructionz%TestAgent.test_agent_url_construction   sE   
 (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                    t               }d|_        d|_        ddddid|j                  _        ||_        t        d      }|j                  d	
      }|j                  }|d   d   }d|v sJ |d   dk(  sJ |d   dk(  sJ y)z1Test that agent requests include correct headers.Tr   r&   rG   rM   rN   r-   r.   rk   rl   r4   headersAuthorizationzBearer test-api-keyzContent-Typezapplication/jsonNrT   )rA   rC   rU   rF   rG   rH   rr   s          r   test_agent_headerszTestAgent.test_agent_headers   s     "$'!!v&+
'
 "/	>2-0 #,, #I.')))'+@@@@~&*<<<<r   N)r   r   r   __doc__r   rK   rV   rZ   re   rh   rp   rt   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__)ru   unittestunittest.mockr   r   pydanticr   r   typingr   r   	firecrawlr	   r   r   TestCaser   r   mainr   r   r   <module>r~      sf     * % ! "Si SDY Dy=!! y=x zHMMO r   