a
    ù!fû  ã                   @   s   d dl Z G dd„ de jƒZdS )é    Nc                   @   sŒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"Ú
TestPolicyc                 C   s   ddl m} |S )Nr   )ÚPolicy)Úgcloud.pubsub.iamr   )Úselfr   © r   úW/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/pubsub/test_iam.pyÚ_getTargetClass   s    zTestPolicy._getTargetClassc                 O   s   |   ¡ |i |¤ŽS ©N)r   )r   ÚargsÚkwr   r   r   Ú_makeOne   s    zTestPolicy._makeOnec                 C   s‚   |   ¡ }|  |jd ¡ |  |jd ¡ |  t|jƒg ¡ |  t|jƒg ¡ |  t|jƒg ¡ |  t|jƒg ¡ |  t|j	ƒg ¡ d S r	   ©
r   ÚassertEqualÚetagÚversionÚlistÚownersÚeditorsÚviewersÚ
publishersÚsubscribers©r   Úpolicyr   r   r   Útest_ctor_defaults   s    zTestPolicy.test_ctor_defaultsc                 C   sŽ   d}d}|   ||¡}|  |j|¡ |  |j|¡ |  t|jƒg ¡ |  t|jƒg ¡ |  t|jƒg ¡ |  t|jƒg ¡ |  t|j	ƒg ¡ d S )Né   ÚETAGr   )r   ÚVERSIONr   r   r   r   r   Útest_ctor_explicit%   s    zTestPolicy.test_ctor_explicitc                 C   s,   d}d|f }|   ¡ }|  | |¡|¡ d S )Núphred@example.comzuser:%s)r   r   Úuser©r   ZEMAILÚMEMBERr   r   r   r   Ú	test_user1   s    
zTestPolicy.test_userc                 C   s,   d}d|f }|   ¡ }|  | |¡|¡ d S )Nr   zserviceAccount:%s)r   r   Zservice_accountr    r   r   r   Útest_service_account7   s    
zTestPolicy.test_service_accountc                 C   s,   d}d|f }|   ¡ }|  | |¡|¡ d S )Nr   zgroup:%s)r   r   Úgroupr    r   r   r   Ú
test_group=   s    
zTestPolicy.test_groupc                 C   s,   d}d|f }|   ¡ }|  | |¡|¡ d S )Nzexample.comz	domain:%s)r   r   Údomain)r   ZDOMAINr!   r   r   r   r   Útest_domainC   s    
zTestPolicy.test_domainc                 C   s   |   ¡ }|  | ¡ d¡ d S )NZallUsers)r   r   Z	all_usersr   r   r   r   Útest_all_usersI   s    zTestPolicy.test_all_usersc                 C   s   |   ¡ }|  | ¡ d¡ d S )NZallAuthenticatedUsers)r   r   Zauthenticated_usersr   r   r   r   Útest_authenticated_usersM   s    z#TestPolicy.test_authenticated_usersc                 C   sp   ddi}|   ¡ }| |¡}|  |jd¡ |  |jd ¡ |  t|jƒg ¡ |  t|jƒg ¡ |  t|jƒg ¡ d S )Nr   ZACAB)	r   Úfrom_api_reprr   r   r   r   r   r   r   )r   ÚRESOURCEÚklassr   r   r   r   Útest_from_api_repr_only_etagQ   s    ÿ
z'TestPolicy.test_from_api_repr_only_etagc              	   C   s  ddl m}m}m}m}m} d}d}d}d}	d}
d}d}d}dd|||gd	œ|||	gd	œ||
|gd	œ||gd	œ||gd	œgd
œ}|  ¡ }| |¡}|  |j	d¡ |  |j
d¡ |  t|jƒ||g¡ |  t|jƒ||	g¡ |  t|jƒ|
|g¡ |  t|jƒ|g¡ |  t|jƒ|g¡ d S )Nr   )Ú
OWNER_ROLEÚEDITOR_ROLEÚVIEWER_ROLEÚPUBSUB_PUBLISHER_ROLEÚPUBSUB_SUBSCRIBER_ROLEúuser:phred@example.comúgroup:cloud-logs@google.comúdomain:google.comú.serviceAccount:1234-abcdef@service.example.comÚDEADBEEFr   ©ZroleÚmembers©r   r   Zbindings)r   r.   r/   r0   r1   r2   r   r*   r   r   r   Úsortedr   r   r   r   r   )r   r.   r/   r0   r1   r2   ÚOWNER1ÚOWNER2ÚEDITOR1ÚEDITOR2ÚVIEWER1ÚVIEWER2Ú	PUBLISHERÚ
SUBSCRIBERr+   r,   r   r   r   r   Útest_from_api_repr_complete]   s6    

ûý
z&TestPolicy.test_from_api_repr_completec                 C   s`   d}d}ddd||gdœgdœ}|   ¡ }|  t¡ | |¡ W d   ƒ n1 sR0    Y  d S )Nr3   r4   r7   r   Znonesuchr8   r:   )r   ÚassertRaisesÚ
ValueErrorr*   )r   ZBOGUS1ZBOGUS2r+   r,   r   r   r   Útest_from_api_repr_bad_role‚   s    ÿýz&TestPolicy.test_from_api_repr_bad_rolec                 C   s   |   ¡ }|  | ¡ i ¡ d S r	   ©r   r   Úto_api_reprr   r   r   r   Útest_to_api_repr_defaults   s    z$TestPolicy.test_to_api_repr_defaultsc                 C   s"   |   d¡}|  | ¡ ddi¡ d S )Nr7   r   rH   r   r   r   r   Útest_to_api_repr_only_etag”   s    
z%TestPolicy.test_to_api_repr_only_etagc              	   C   s   ddl m}m}m}m}m} d}d}d}d}	d}
d}d}d}dd|||gd	œ|||	gd	œ||
|gd	œ||gd	œ||gd	œgd
œ}|  dd¡}|j |¡ |j |¡ |j	 |¡ |j	 |	¡ |j
 |
¡ |j
 |¡ |j |¡ |j |¡ |  | ¡ |¡ d S )Nr   )ÚPUBSUB_ADMIN_ROLEÚPUBSUB_EDITOR_ROLEÚPUBSUB_VIEWER_ROLEr1   r2   r4   r3   r5   r6   r7   r   r8   r:   )r   rL   rM   rN   r1   r2   r   r   Úaddr   r   r   r   r   rI   )r   rL   rM   rN   r1   r2   r<   r=   r>   r?   r@   rA   rB   rC   ZEXPECTEDr   r   r   r   Útest_to_api_repr_full˜   s8    

ûýz TestPolicy.test_to_api_repr_fullN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r"   r#   r%   r'   r(   r)   r-   rD   rG   rJ   rK   rP   r   r   r   r   r      s    
%r   )Z	unittest2ZTestCaser   r   r   r   r   Ú<module>   s   