B
    ืEf>&  ใ               @   s   d dl mZmZ d dlmZ d dlT d dlmZ G dd dZG dd dZ	d	d
 Z
dd Zdd Zdd Zdd Zedkre  dS )้    )ฺuuid4ฺUUID)ฺUnion)ฺ*)ฺsessionc               @   sX   e Zd Zdeeeeeef edddZedd Z	edd Z
ed	d
 Zdd ZdS )ฺRPCResponseN)ฺcallidฺjsonrpcฺmetaฺresultฺerrorc             C   s&   t || _|| _|| _|| _|| _d S )N)r   r   r	   r
   r   r   )ฺselfr   r	   r
   r   r   ฉ r   ๚./cmf/test.pyฺ__init__   s
    
zRPCResponse.__init__c             C   s
   | j d kS )N)r   )r   r   r   r   ฺok   s    zRPCResponse.okc             C   s
   | j d S )Nฺcode)r   )r   r   r   r   ฺ
error_code   s    zRPCResponse.error_codec             C   s
   | j d S )Nฺmessage)r   )r   r   r   r   ฺerror_message   s    zRPCResponse.error_messagec             C   s   t |  d| j d| j dS )N๚(z, z) )ฺtyper   r   )r   r   r   r   ฺ__str__"   s    zRPCResponse.__str__)NNN)ฺ__name__ฺ
__module__ฺ__qualname__ฺstrฺdictr   ฺlistr   ฺpropertyr   r   r   r   r   r   r   r   r      s      r   c               @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )ฺRPCc             C   s0   t  | _d| _d| _d| _d| _d| _d| _d S )Nzhttp://127.0.0.1:8080/api/ztest@test.testZ@0b9b9cab4b8df6d271d797b5632d18534820d6381567d9235dd93838385cd81eZ 7e86075f22e775b3580f3e8def9915c3z+79998887766)r   ฺsฺurlฺloginฺpasswordฺhashฺsaltฺphone)r   r   r   r   r   '   s    zRPC.__init__c             C   s>   | j jd| j| j| j| jdd}|jr2td ntd d S )Nz!http://127.0.0.1:8080/auth/signup)r#   r%   r&   r'   )ฺdatau%   ะ ะตะณะธัััะฐัะธั ััะฟะตัะฝะฐul   ะ ะตะณะธัััะฐัะธั ะฝะต ััะฟะตัะฝะฐ (ัะบะพัะตะต ะฒัะตะณะพ ัะถะต ะทะฐัะตะณะตัััะธัะพะฒะฐะฝั))r!   ฺpostr#   r%   r&   r'   r   ฺprint)r   ฺrr   r   r   ฺsignup0   s    
z
RPC.signupc             C   sb   | j jdd| jddj}tj | j| j|ก}| j jd| j|dd}|j	rVt
d nt
d d S )	Nz!http://127.0.0.1:8080/auth/signinZget_server_challenge)ฺactionr#   )ฺparams)r#   ฺchallenge_resp)r(   u   ะัะพะด ััะฟะตัะตะฝu   ะัะพะด ะฝะต ััะฟะตัะตะฝ)r!   ฺgetr#   ฺtextZmodelsZCmfAuthZtest_gen_server_challenge_respr$   r)   r   r*   )r   Zserver_challenger/   r+   r   r   r   ฺsignin?   s    
z
RPC.signinNc             C   sD   t t d|||d}| jj| j|d}|jdks6ttf | ก S )NZstub)r   Zaccess_tokenฺmethodr.   ฺfields)ฺjson้ศ   )	r   r   r!   r)   r"   Zstatus_codeฺAssertionErrorr   r5   )r   r3   r.   r4   Zpayloadr   r   r   r   ฺcallR   s    zRPC.call)NN)r   r   r   r   r,   r2   r8   r   r   r   r   r    &   s   	r    c             C   sj  | j dddid}|jstd|jd ks.t| j dd|jd id}|jsPtd|jd ksbt|jd |jd kszt| j dddid}|jst| j d	|jd
|jd id}|jsพt| j dd|jd id}|jsเt|jd
 |jd ks๘t|jd d |jd kst| j d	|jd
d id}|js:t| j dd|jd id}|js^t|jd
 d ksrt|jd d kst| j d	|jdd|jd iid}|jsดt| j dd|jd id}	|	jsุt|	jd d |jd ks๖t| j d	|jdd id}
|
jst| j dd|jd id}|js>t|jd
 d ksRt|jd d ksftd S )NzCmfGroup.createฺnamez
test group)r.   zCmfGroup.getฺidzCmfRole.createz	test rolezCmfGroup.updateฺhead_idฺhead)r8   r   r7   r   )ฺrpcฺr1ฺr2ฺr3ฺr4ฺr5ฺr6ฺr7ฺr8ฺr9ฺr10ฺr11r   r   r   ฺtest_relationship_field_   sD    




rI   c             C   sj  | j dddid}|jstd|jd ks.t| j dd|jd id}|jsPtd|jd ksbt|jd |jd kszt| j dddid}|jst| j d	|jd
|jd id}|jsพt| j dd|jd id}|jsเt|jd
 |jd ks๘t|jd d |jd kst| j d	|jd
d id}|js:t| j dd|jd id}|js^t|jd
 d ksrt|jd d kst| j d	|jdd|jd iid}|jsดt| j dd|jd id}	|	jsุt|	jd d |jd ks๖t| j d	|jdd id}
|
jst| j dd|jd id}|js>t|jd d ksRt|jd d ksftd S )NzCmfGroup.creater9   z
test group)r.   zCmfGroup.getr:   zCmfRole.createz	test rolezCmfGroup.updateZtree_parent_idZtree_parentr;   r<   )r8   r   r7   r   )r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r   r   r   ฺtest_generic_relationship_field   sF    




rJ   c             C   sุ  | j dddid}|jstt|jd dks2t| j dddid}|jsNtt|jd dksdt| j dddid}|jst| j dddid}|jst| j d	|jdd
|jd
 igid}|jsสt| j dd
|jd
 id}|js์tt|jd dkst|jd d d
 |jd
 ks&t| j d	|jdd
|jd
 igid}|jsVt| j dd
|jd
 id}|jsztt|jd dkst|jd d d
 |jd
 ksดt| j d	|jdd
|jd
 id
|jd
 igid}	|	js๐t| j dd
|jd
 id}
|
jstt|
jd dks,t|jd
 dd |
jd D ksPt|jd
 dd |
jd D kstt| j d	|jdg id}|jst| j dd
|jd
 id}|jsผtt|jd dksิtd S )NzCmfRole.creater9   z	test role)r.   Zpersonsr   zCmfPerson.createz	test userzCmfRole.updater:   zCmfRole.get้   ้   c             S   s   g | ]}|d  qS )r:   r   )ฺ.0ฺir   r   r   ๚
<listcomp>๘   s    z"test_m2m_field.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r:   r   )rM   rN   r   r   r   rO   ๙   s    )r8   r   r7   ฺlenr   )r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   ฺr12r   r   r   ฺtest_m2m_fieldฦ   sN    



 

" "&$$rR   c             C   sุ  | j dddid}|jstt|jd dks2t| j dddid}|jsNtt|jd dksdt| j dddid}|jst| j dddid}|jst| j d	|jdd
|jd
 igid}|jsสt| j dd
|jd
 id}|js์tt|jd dkst|jd d d
 |jd
 ks&t| j d	|jdd
|jd
 igid}|jsVt| j dd
|jd
 id}|jsztt|jd dkst|jd d d
 |jd
 ksดt| j d	|jdd
|jd
 id
|jd
 igid}	|	js๐t| j dd
|jd
 id}
|
jstt|
jd dks,t|jd
 dd |
jd D ksPt|jd
 dd |
jd D kstt| j d	|jdg id}|jst| j dd
|jd
 id}|jsผtt|jd dksิtd S )NzCmfGroup.creater9   z
test group)r.   ฺmembersr   zCmfPerson.createz	test userzCmfGroup.updater:   zCmfGroup.getrK   rL   c             S   s   g | ]}|d  qS )r:   r   )rM   rN   r   r   r   rO   7  s    z#test_gm2m_field.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r:   r   )rM   rN   r   r   r   rO   8  s    )r8   r   r7   rP   r   )r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rQ   r   r   r   ฺtest_gm2m_field  sR    





""&$$rT   c              C   sB   t  } |  ก  |  ก  t|  t|  t|  t|  td d S )Nr   )r    r,   r2   rT   rR   rJ   rI   r*   )r=   r   r   r   ฺtestB  s    rU   ฺ__main__N)Zuuidr   r   ฺtypingr   Zcmf.includeZrequestsr   r   r    rI   rJ   rR   rT   rU   r   r   r   r   r   ฺ<module>   s   934=?