
    afP6                     0   d dl Z d dlZd dlmZ d dlZd dlmZ de j        v r#e j        d         rd dlmZ  ej	                     nd dlZ ej
                     d dlmZ d dlmZ erd dlmZmZ d d	lmZmZmZmZmZmZmZmZmZ  ee d
           G d dej                              Z ee d
           G d dej                              Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z"dS )    N)a2b_hex)skipIfUSE_TWISTED)unittest)HAS_XBR)InvalidPayload)pack_ethadrunpack_ethadr)	FbsType	FbsObject
FbsService
FbsRPCCallFbsRepository	FbsSchemaFbsFieldFbsEnumFbsEnumValuez#package autobahn[xbr] not installedc                       e Zd ZdZd ZdS )TestPackEthAdrzE
    Test :func:`pack_ethadr` and :func:`unpack_ethadr` helpers.
    c                    d}t          |dd                    }d}dD ]}||fD ]}t          ||          }|r|                     |t                     t	          d          D ]o}|                     d                    |          |           |                     t          |d                    |                             t          k               pn|                     |t                     |                     t          |          d           t	          d          D ]3}|                     t          ||                   t          k               4dD ]}}t          ||          }	|r2|                     |	t                     |                     |	|           n1|                     |	t                     |                     |	|           |d	z  }~|                     |d
           d S )N*0xecdb40C2B34f3bA162C413CC53BA3ca99ff8A047   r   )FTreturn_dict   zw{})
return_str      )r   r	   assertIsInstancedictrangeassertInformat
assertTruetypeintlistassertEquallenr
   strbytes)
selforiginal_value_stroriginal_value_bincntr   original_valuepacked_valueir   unpacked_values
             X/var/www/html/env/lib/python3.11/site-packages/autobahn/xbr/test/test_xbr_schema_wamp.pytest_roundtripzTestPackEthAdr.test_roundtrip   s   I$%7%;<<  ) 	 	K $67I"J  *>{SSS 	F)),==="1XX T Tell1oo|DDD\%,,q//-J(K(Ks(RSSSST )),===$$S%6%6:::"1XX F F\!_(=(=(DEEEE #0 	 	J%2<J%W%W%WN! M--ncBBB((9KLLLL--neDDD((9KLLL1HCC	4 	a         N)__name__
__module____qualname____doc__r5    r6   r4   r   r      s-         %! %! %! %! %!r6   r   c                       e Zd ZdZd ZdS )TestFbsBasez;
    FlatBuffers tests base class, loads test schemas.
    c                     t          d          | _        g | _        dD ]^}t          j        dd                    |                    }| j                            |           | j                            |           _d S )Nautobahn)z	wamp.bfbsztestsvc1.bfbszxbr/test/catalog/schema/{})r   repoarchivespkg_resourcesresource_filenamer#   loadappend)r,   fbs_filearchives      r4   setUpzTestFbsBase.setUpM   s    !*--	6 	* 	*H#5jB^BeBefnBoBoppGINN7###M  ))))	* 	*r6   N)r7   r8   r9   r:   rH   r;   r6   r4   r=   r=   G   s-         * * * * *r6   r=   c                       e Zd ZdZd Zd ZdS )TestFbsRepositoryzM
    Test :class:`FbsRepository` schema loading and verify loaded types.
    c                 ^   |                      d| j        j                   |                     | j        j        d         t                     |                      d| j        j                   |                     | j        j        d         t                     |                      d| j        j                   |                     | j        j        d         t                     |                      d| j        j                   |                     | j        j        d         t                     d S )N	uint160_tztestsvc1.TestRequestztestsvc1.TestResponsetestsvc1.ITestService1)r"   r@   objsr   r   servicesr   r,   s    r4   test_create_from_archivez*TestFbsRepository.test_create_from_archive[   s    k49>222din[99EEE,din===din-CDiPPP-ty~>>>din-DEyQQQ.	0BCCCdi01IJJWWWWWr6   c                    t          j        dd          }| j        j        |         }|j        d         j        d         }|j        |j        j                 |j        |j	        j                 fD ]}|j
        D ]}|j        j        t          j        k    r|j                            d          sJ |j        |j        j                 }|j        sJ |j        D ]f}|dk    r^d|j        v r7|j                            d          d         }d	                    ||          }	n|}	|j        |	         }
t-          |
           gǌd S )
Nr?   z%xbr/test/catalog/schema/testsvc1.bfbsrM   run_something1_typeNONE.r   z{}.{})rB   rC   r@   schemasrO   callsrN   requestnameresponsefields_by_idr%   basetyper   UTypeendswithenums_by_idindexis_unionvaluessplitr#   print)r,   	schema_fnschemacall	call_typefieldcall_type_enumunion_type_value	namespaceunion_type_qn
union_types              r4   test_loaded_schemaz$TestFbsRepository.test_loaded_schemae   s`   !3J@ghh	 !I-i8 "?+CDJK[\ !+dl&78&+dmFX:YZ 	. 	.I #/ . .:&'-77 :..w77777 /5.@AQ.RN)2222 -;,A 
. 
.(+v55"n&999,:,?,E,Ec,J,J1,M	07yJZ0[0[0@)/])CJ!*---+.		. 	.r6   N)r7   r8   r9   r:   rQ   rp   r;   r6   r4   rJ   rJ   V   s?         X X X$. $. $. $. $.r6   rJ   c                       e Zd ZdZd Zd ZdS )TestFbsValidateUint160z+
    Test struct uint160_t validation.
    c                 X   d}g d|||||gt          d          t          d          dddddd|||||dt          dd          t          dd          g}	 |D ]}| j                            d	|           d S # t          $ r$}|                     d
d|            Y d }~d S d }~ww xY w)Nl    )r   r   r   r   r   *0x0000000000000000000000000000000000000000r   r   w0w1w2w3w4Tr   rL   F*Inventory.validate() raised an exception: r	   r@   validate_obj	Exceptionr$   )r,   element_maxvalid_valuesvalueexcs        r4   test_validate_obj_uint160_validz6TestFbsValidateUint160.test_validate_obj_uint160_valid   s   !OO+{KMDEEDEEAQaq99kK_jkkDRVWWWDRVWWW

	W% ; ;	&&{E::::; ; 	W 	W 	WOOE#UPS#U#UVVVVVVVVV	Ws    A; ;
B)B$$B)c                     dg dfi dfg ddfg ddfg ddfg ddfd	d	d d	d	d
dfd	d	d	d	dd
dfd	d	d	d	ddfd	d	d	d	d	d	ddfg}|D ]-\  }}|                      t          || j        j        d|           .d S )NNinvalid typemissing argument)r   r   Nr   r   r   )r   r   r   r   bogus)r   r   r   r   )r   r   r   r   r   r   unexpected argumentr   ru   r   )rv   rw   rx   ry   )rv   rw   rx   ry   rz   w5rL   assertRaisesRegexr   r@   r}   r,   testsr   expected_regexs       r4   !test_validate_obj_uint160_invalidz8TestFbsValidateUint160.test_validate_obj_uint160_invalid   s   "#$#$0"""N3\\-.!67Qd!1==~NQaq@@.QQaq113EFQaqCCEZ[
 &+ 	O 	O!E>"">>#'9#9;O O O O	O 	Or6   N)r7   r8   r9   r:   r   r   r;   r6   r4   rr   rr      sD         W W W&O O O O Or6   rr   c                       e Zd Zd Zd ZdS )TestFbsValidateEthAddressc           	      B   dddddddidt          d          idt          d          idt          dd          idt          dd          ifD ]N}	 | j                            d|           # t          $ r#}|                     d	d
|            Y d }~Gd }~ww xY wd S )Nr   r   ru   rt   r   Tr   
EthAddressFr{   r|   )r,   r   r   s      r4   "test_validate_obj_EthAddress_validz<TestFbsValidateEthAddress.test_validate_obj_EthAddress_valid   s     QaqCCDk"NOOPk"NOOPk"N\`aaabk"N\`aaab
 
	[ 
	[E[	&&|U;;;; [ [ ['YTW'Y'YZZZZZZZZ[
	[ 
	[s   A//
B9BBc                     dt          d          idfdd idfdi idfdg idfg}|D ]-\  }}|                     t          || j        j        d|           .d S )Ninvalid_keyr   r   r   r   r   r   )r	   r   r   r@   r}   r   s       r4   $test_validate_obj_EthAddress_invalidz>TestFbsValidateEthAddress.test_validate_obj_EthAddress_invalid   s    
 [)UVVWYnot_n-r]./r]./
 &+ 	P 	P!E>"">>#'9#9<P P P P	P 	Pr6   N)r7   r8   r9   r   r   r;   r6   r4   r   r      s:        [ [ [P P P P Pr6   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestFbsValidateKeyValuec                     	 | j                             dddgi            d S # t          $ r$}|                     dd|            Y d }~d S d }~ww xY w)NKeyValuefoo23argskwargsFr{   r@   validater~   r$   r,   r   s     r4   test_validate_KeyValue_validz4TestFbsValidateKeyValue.test_validate_KeyValue_valid   s    	WIzbIIIII 	W 	W 	WOOE#UPS#U#UVVVVVVVVV	Ws   # 
AAAc           	         |                      t          d| j        j        dg i            |                      t          d| j        j        ddgi            |                      t          d| j        j        dg di            |                      t          d| j        j        dddgddi           |                      t          d	| j        j        ddd
gi            d S )Nzmissing positional argumentr   r   zunexpected positional arguments)r   r   
unexpectedzunexpected keyword argumentsr   unexpected_kwargr      )r   r   r@   r   rP   s    r4   test_validate_KeyValue_invalidz6TestFbsValidateKeyValue.test_validate_KeyValue_invalid   s	   ~/LdiN`)2r	3 	3 	3 	~/LdiN`)E7B	8 	8 	8 	~/PRVR[Rd)+F+F+F	L 	L 	L 	~/MtyOa)E4=;Mt:T	V 	V 	V 	~~ty?Q)E2;	< 	< 	< 	< 	<r6   c                    i }	 | j                             d|           n0# t          $ r#}|                     dd|            Y d }~nd }~ww xY wdg i}t	          d          D ]F}|d                             d                    |          d                    |          d           G	 | j                             d|           d S # t          $ r$}|                     dd|            Y d }~d S d }~ww xY w)	N	KeyValuesFr{   r   
   zkey{}zvalue{})keyr   )r@   r}   r~   r$   r!   rE   r#   )r,   valid_valuer   r2   s       r4   test_validate_KeyValues_validz5TestFbsValidateKeyValue.test_validate_KeyValues_valid  sU   	WI"";<<<< 	W 	W 	WOOE#UPS#U#UVVVVVVVV	W
 R
 r 	b 	bA ''q0A0AIL\L\]^L_L_(`(`aaaa	WI"";<<<<< 	W 	W 	WOOE#UPS#U#UVVVVVVVVV	Ws,     
AAA+C 
C6C11C6c                     dg dfddidfdd idfdi idfg}|D ]-\  }}|                      t          || j        j        d|           .d S )Nr   r   r   	somethingr   r   r   r   r   s       r4   test_validate_KeyValues_invalidz7TestFbsValidateKeyValue.test_validate_KeyValues_invalid  s    " [)+@At_n-r]N+
 &+ 	O 	O!E>"">>#'9#9;O O O O	O 	Or6   N)r7   r8   r9   r   r   r   r   r;   r6   r4   r   r      s[        W W W< < < W W W(
O 
O 
O 
O 
Or6   r   c                       e Zd Zd Zd ZdS )TestFbsValidateVoidc                     	 | j                             d g i            | j                             dg i            d S # t          $ r$}|                     dd|            Y d }~d S d }~ww xY w)Nr   VoidFr{   r   r   s     r4   test_validate_Void_validz,TestFbsValidateVoid.test_validate_Void_valid+  s    	WIt"R888IvBr::::: 	W 	W 	WOOE#UPS#U#UVVVVVVVVV	Ws   :> 
A,A''A,c           	      $   t          d          }|                     t          d| j        j        ddgi            |                     t          d| j        j        di gi            |                     t          d| j        j        dd gi            |                     t          d| j        j        dd|igi            |                     t          d| j        j        dg dd i           |                     t          d| j        j        dg ddi           d S )Nr   zunexpected positional argumentr   r   r   zunexpected keyword argumentr   )r	   r   r   r@   r   )r,   	valid_adrs     r4   test_validate_Void_invalidz.TestFbsValidateVoid.test_validate_Void_invalid2  sS    LMM	~/OQUQZQc%tR	1 	1 	1 	~/OQUQZQc%tR	1 	1 	1 	~/OQUQZQc%vr	3 	3 	3 	~/OQUQZQc%)(<'=r	C 	C 	C 	~/LdiN`%r,>+E	G 	G 	G 	~/LdiN`%r,>+C	E 	E 	E 	E 	Er6   N)r7   r8   r9   r   r   r;   r6   r4   r   r   )  s:        W W WE E E E Er6   r   )#osrB   binasciir   txaior   r   environtwisted.trialuse_twisteduse_asyncioautobahn.xbrr   autobahn.wamp.exceptionr   autobahn.xbr._utilr	   r
   r   r   r   r   r   r   r   r   r   TestCaser   r=   rJ   rr   r   r   r   r;   r6   r4   <module>r      s   				                 BJ2:m#<&&&&&&EOOOE             2 2 2 2 2 2
 ========                      G:;;*! *! *! *! *!X& *! *! <;*!Z G:;;* * * * *(# * * <;*3. 3. 3. 3. 3. 3. 3. 3.\*O *O *O *O *O[ *O *O *OZP P P P P P P P>6O 6O 6O 6O 6Ok 6O 6O 6OrE E E E E+ E E E E Er6   