Skip to main content
Glama
test_uni_token.cpython-311-pytest-7.4.0.pyc10.4 kB
� WU�g����ddlZddlmcmZddlZddlZddlZddl Z ddl m Z ddl Z ddl Z ddlmZddlmZddlmZdZd�Zejd���Zejd ���Zejd ���Zejj d ���ZdS) �N)�Path)�Web3)� ABIAnalyzer)� MCPGenerator�*0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984c��ddg}d�|D��}|r,tjdd�|������dSdS)z,Configure pytest with environment variables.�OPENAI_API_KEY� ETH_NODE_URLc�:�g|]}tj|���|��S�)�os�getenv)�.0�vars �5/Users/arjun/repos/sparkmango/tests/test_uni_token.py� <listcomp>z$pytest_configure.<locals>.<listcomp>s%��G�G�G�C�� �#���G�C�G�G�G�z(Missing required environment variables: z, N)�pytest�exit�join)�config� required_vars� missing_varss r�pytest_configurersa��&�~�6�M�G�G�=�G�G�G�L��Z�� �X�t�y�y��?V�?V�X�X�Y�Y�Y�Y�Y�Z�Zrc��tt��jjdz dz }|���st jd��t |��5}tj|��cddd��S#1swxYwYdS)zLoad the Uni token ABI.� contractsz UniToken.jsonzUniToken.json not foundN) r�__file__�parent�existsr�skip�open�json�load)�abi_path�fs r�uni_abir&s����H�~�~�$�+�k�9�O�K�H� �?�?� � �/�� �-�.�.�.� �h����1��y��|�|���������������������s�A=�=B�Bc��tjd��}|stjd��t t j|����S)zCreate a Web3 instance.r zETH_NODE_URL not set)r rrr r� HTTPProvider)�node_urls r�web3r*!sE���y��(�(�H� �,�� �*�+�+�+� ��!�(�+�+� ,� ,�,rc#�K�tt|�����|dtjd�����}t j|�����ddl}|� dt|dz ��gttjd��t|��d �tj �� ��}d }t|��D]R} tjd ��}|jd krnW�%#tjj$rt'jd��Y�OwxYw|���t-jd��dV�|���|���dS)z3Generate and start an MCP server for the Uni token.�UniTokenr )�analysis� output_dir� contract_name�openai_api_keyrN�pythonz server.pyr )�CONTRACT_ADDRESSr � PYTHONPATH)�env� zhttp://localhost:8000/docs���zServer failed to startzhttp://localhost:8000)rr�analyzer r�asyncio�run�generate� subprocess�Popen�str�UNI_TOKEN_ADDRESS�environ�range�requests�get� status_code� exceptions�ConnectionError�time�sleep� terminater�fail�wait) r&�tmp_pathr*� generatorr<�server_process�max_wait�_�responses r� mcp_serverrR)s�������W�%�%�-�-�/�/�� ��y�!1�2�2� ���I� �K� �"�"�$�$�%�%�%������%�%� �3�x�+�-�.�.�/� 1��I�n�5�5��h�-�-� � ��j�  �&���N��H� �8�_�_� .� .�� ��|�$A�B�B�H��#�s�*�*���+���"�2� � � � �J�q�M�M�M�M�M� ���� � � �"�"�"�� �,�-�-�-� "�"�"�"��������������s�"D�(D/�.D/c��� K�|�d��}|j�t|d���}|j�|�����}d}||k}|s�tjd|fd||f��dtj ��vstj |��rtj |��ndtj |��d�z}tj d ��d zd |iz} ttj| �����d x}}t!j|�d �dd|iddid����} | j}d} || k} | s�tjd| fd|| f��dtj ��vstj | ��rtj | ��ndtj |��tj | ��d�z} tj d| j�d| j����dzd| iz} ttj| �����d x}x} } | ���}d}||v}|s�tjd|fd||f��tj |��dtj ��vstj |��rtj |��ndd �z}tj d!��d zd |iz} ttj| �����d x}}d"}||v}|s�tjd|fd||f��tj |��dtj ��vstj |��rtj |��ndd �z}tj d#��d zd |iz} ttj| �����d x}}|d"d}d} || u}|s�tjd$|fd%|| f��tj |��tj | ��d&�z}tj d'��d(zd)|iz}ttj|�����d x}x}} t+|d��}||k}|s�tjd|fd*||f��d+tj ��vstj |��rtj |��nd+dtj ��vstj |��rtj |��ndd,�z}tj d-|�d.|����d/zd0|iz}ttj|�����d }t-d1|�d|����d S)2zTest the balanceOf function.�*0x47173B170C64d16393a52e6C480b3Ad8c302ba1e�abi)�addressrUr)�>)z%(py0)s > %(py3)s�direct_balance)�py0�py3zTest address has no UNI balancez >assert %(py5)s�py5Nz/mcp� balanceOf�account�testT)�method�params�context)r"r6)�==)z3%(py2)s {%(py2)s = %(py0)s.status_code } == %(py5)srQ)rY�py2r[zServer returned z: z >assert %(py7)s�py7�result)�in)z%(py1)s in %(py3)s)�py1rZzResponse missing 'result' fieldraz Response missing 'context' field)�is)z%(py1)s is %(py4)s)rg�py4zContext not preservedz >assert %(py6)s�py6)z%(py0)s == %(py2)s� mcp_balance)rYrcz MCP balance z != direct balance z >assert %(py4)srizUni token balance for )�to_checksum_address�eth�contractr?� functionsr\�call� @pytest_ar�_call_reprcompare� @py_builtins�locals�_should_repr_global_name� _saferepr�_format_assertmsg�AssertionError�_format_explanationrB�postrD�textr"�int�print)rRr*r&� test_addressrnrX� @py_assert2� @py_assert1� @py_format4� @py_format6rQ� @py_assert4� @py_assert3� @py_format8re� @py_assert0� @py_format5� @py_format7rk� @py_format3s r�test_balance_ofr�Vss�����+�+�,X�Y�Y�L��x� � �!� �E�N�!���H��'�1�1�,�?�?�D�D�F�F�N�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@��}� ����!��<�����  � � � � �H�c�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b� �]�]�_�_�F�A�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E��f�X�&�'�'�K�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�i� � @�<� @� @�;� @� @�A�A�A�A�Ar)�builtinsrs�_pytest.assertion.rewrite� assertion�rewriterqrr r"r9�pathlibrrBrGr*r�mcp_server.abi_analyzerr�mcp_server.mcp_generatorrr?r�fixturer&rR�markr�r rr�<module>r�s@��������������� � � � � � � � � � � � ��������������� � � � �������/�/�/�/�/�/�1�1�1�1�1�1�A��Z�Z�Z����������-�-���-���*�*���*�X���)B�)B���)B�)B�)Br

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ArjunBhuptani/sparkmango'

If you have feedback or need assistance with the MCP directory API, please join our Discord server