
    hP6                        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j6                               Z ee d
       G d dej6                               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"y)    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y)TestPackEthAdrzE
    Test :func:`pack_ethadr` and :func:`unpack_ethadr` helpers.
    c                 *   d}t        |dd        }d}dD ]i  }||fD ]^  }t        ||      }|r{| j                  |t               t	        d      D ]V  }| j                  dj                  |      |       | j                  t        |dj                  |               t        k(         X ne| j                  |t               | j                  t        |      d       t	        d      D ]&  }| j                  t        ||         t        k(         ( dD ]g  }t        ||      }	|r)| j                  |	t               | j                  |	|       n(| j                  |	t               | j                  |	|       |d	z  }i a l | j                  |d
       y )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
             b/var/www/Befach/backend/env/lib/python3.12/site-packages/autobahn/xbr/test/test_xbr_schema_wamp.pytest_roundtripzTestPackEthAdr.test_roundtrip   sn   I$%7%;<  )K $67I"J*>{S)),="1Xell1o|D\%,,q/-J(Ks(RS & )),=$$S%6:"1X\!_(=(DE & #0J%2<J%WN!--ncB((9KL--neD((9KL1HC #0 #K ): 	a     N)__name__
__module____qualname____doc__r5    r6   r4   r   r      s    %!r6   r   c                       e Zd ZdZd Zy)TestFbsBasez;
    FlatBuffers tests base class, loads test schemas.
    c                     t        d      | _        g | _        dD ]]  }t        j                  ddj                  |            }| j                  j                  |       | j                  j                  |       _ y )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`    !*-	6H#55jB^BeBefnBopGIINN7#MM  ) 7r6   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y)TestFbsRepositoryzM
    Test :class:`FbsRepository` schema loading and verify loaded types.
    c                    | j                  d| j                  j                         | j                  | j                  j                  d   t               | j                  d| j                  j                         | j                  | j                  j                  d   t               | j                  d| j                  j                         | j                  | j                  j                  d   t               | j                  d| j                  j
                         | j                  | j                  j
                  d   t               y )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    k499>>2diinn[99E,diinn=diinn-CDiP-tyy~~>diinn-DEyQ.		0B0BCdii001IJJ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(  s+|j                  j                  d      sJ |j                   |j                  j"                     }|j$                  sJ |j&                  D ]c  }|dk7  s	d|j                  v r1|j                  j)                  d      d   }d	j+                  ||      }	n|}	|j                  |	   }
t-        |
       e   y )
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\   !33J@gh	 !II--i8 "??+CDJJK[\ !++dll&7&78&++dmmFXFX:YZI #//::&&'--7 ::..w777 /5.@.@AQAQ.RN)2222 -;,A,A(+v5"n&9&99,:,?,?,E,Ec,J1,M	07yJZ0[0@)/])CJ!*- -B 0	 [r6   N)r7   r8   r9   r:   rQ   rp   r;   r6   r4   rJ   rJ   V   s    X$.r6   rJ   c                       e Zd ZdZd Zd Zy)TestFbsValidateUint160z+
    Test struct uint160_t validation.
    c                 0   d}g d|||||gt        d      t        d      dddddd|||||dt        dd      t        dd      g}	 |D ]  }| j                  j                  d	|         y # t        $ r}| j	                  d
d|        Y d }~y 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    !+{KMDEDEAQaq9kK_jkDRVWDRVW

	W%		&&{E: & 	WOOE%OPSu#UVV	Ws   	#A- -	B6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 ]2  \  }}| j                  t        || j                  j                  d|       4 y )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13EFQaqCEZ[
 &+!E>"">>#'99#9#9;O &+r6   N)r7   r8   r9   r:   r   r   r;   r6   r4   rr   rr      s    W&Or6   rr   c                       e Zd Zd Zd Zy)TestFbsValidateEthAddressc           	         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 ]  }	 | j                  j                  d|       ! y # t        $ r}| j	                  d	d
|        Y d }~Fd }~ww xY w)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Dk"NOPk"NOPk"N\`abk"N\`ab
E[		&&|U;
  [)STWSX'YZZ[s   A##	B,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 ]2  \  }}| j                  t        || j                  j                  d|       4 y )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   sz    
 [)UVWYnot_n-r]./r]./
 &+!E>"">>#'99#9#9<P &+r6   N)r7   r8   r9   r   r   r;   r6   r4   r   r      s    [Pr6   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestFbsValidateKeyValuec                     	 | j                   j                  dddgi        y # t        $ r}| j                  dd|        Y d }~y 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   sQ    	WIIzbI 	WOOE%OPSu#UVV	Ws    # 	AAAc           	         | j                  t        d| j                  j                  dg i        | j                  t        d| j                  j                  ddgi        | j                  t        d| j                  j                  dg di        | j                  t        d| j                  j                  dddgddi       | j                  t        d	| j                  j                  ddd
gi        y )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    ~/LdiiN`N`)2r	3 	~/LdiiN`N`)E7B	8 	~/PRVR[R[RdRd)+F	L 	~/MtyyOaOa)E4=;Mt:T	V 	~~tyy?Q?Q)E2;	<r6   c                    i }	 | j                   j                  d|       dg i}t	        d      D ]7  }|d   j                  dj                  |      dj                  |      d       9 	 | j                   j                  d|       y # t        $ r}| j                  dd|        Y d }~d }~ww xY w# t        $ r}| j                  dd|        Y d }~y 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  s    	WII"";< R
 rA ''q0AIL\L\]^L_(`a 	WII"";<  	WOOE%OPSu#UVV	W  	WOOE%OPSu#UVV	Ws/   B *B2 	B/B**B/2	C;CCc                     dg dfddidfdd idfdi idfg}|D ]2  \  }}| j                  t        || j                  j                  d|       4 y )Nr   r   r   	somethingr   r   r   r   r   s       r4   test_validate_KeyValues_invalidz7TestFbsValidateKeyValue.test_validate_KeyValues_invalid  so    " [)+@At_n-r]N+
 &+!E>"">>#'99#9#9;O &+r6   N)r7   r8   r9   r   r   r   r   r;   r6   r4   r   r      s    W< W(
Or6   r   c                       e Zd Zd Zd Zy)TestFbsValidateVoidc                     	 | j                   j                  d g i        | j                   j                  dg i        y # t        $ r}| j                  dd|        Y d }~y d }~ww xY w)Nr   VoidFr{   r   r   s     r4   test_validate_Void_validz,TestFbsValidateVoid.test_validate_Void_valid+  sf    	WIIt"R8IIvBr: 	WOOE%OPSu#UVV	Ws   <? 	A'A""A'c           	      V   t        d      }| j                  t        d| j                  j                  ddgi        | j                  t        d| j                  j                  di gi        | j                  t        d| j                  j                  dd gi        | j                  t        d| j                  j                  dd|igi        | j                  t        d| j                  j                  dg dd i       | j                  t        d| j                  j                  dg ddi       y )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  s$    LM	~/OQUQZQZQcQc%tR	1 	~/OQUQZQZQcQc%tR	1 	~/OQUQZQZQcQc%vr	3 	~/OQUQZQZQcQc%)(<'=r	C 	~/LdiiN`N`%r,>+E	G 	~/LdiiN`N`%r,>+C	Er6   N)r7   r8   r9   r   r   r;   r6   r4   r   r   )  s    W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   	    BJJ2::m#<&EE   2
=   G:;*!X&& *! <*!Z G:;*(## * <*3. 3.\*O[ *OZP P>6Ok 6OrE+ Er6   