a
    ù!fgi  ã                   @   s>   d dl Z G dd„ de jƒZG dd„ deƒZG dd„ deƒZdS )é    Nc                   @   s  e Zd ZdZdZd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%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Z d9d:„ Z!d;d<„ Z"d=d>„ Z#d?d@„ Z$dAdB„ Z%dCdD„ Z&dES )FÚTestManagedZoneÚprojectz	zone-namezZONE DESCRIPTIONztest.example.comc                 C   s   ddl m} |S )Nr   )ÚManagedZone)Zgcloud.dns.zoner   )Úselfr   © r   úU/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/dns/test_zone.pyÚ_getTargetClass   s    zTestManagedZone._getTargetClassc                 O   s   |   ¡ |i |¤ŽS ©N)r   )r   ÚargsÚkwr   r   r   Ú_makeOne   s    zTestManagedZone._makeOnec           
   
   C   sn   dd l }ddlm} d}d}d}d}d}d}d}	d	|||||||	f | _|j |||||||	|d
| _d| _d S )Nr   )ÚUTCiß  é   é   é   é5   ip  z!%d-%02d-%02dT%02d:%02d:%02d.%06dZ)Útzinfoé90  )ÚdatetimeÚgcloud._helpersr   ÚWHEN_STRÚWHENÚZONE_ID)
r   r   r   ÚyearÚmonthÚdayÚhourÚminuteÚsecondsÚmicrosr   r   r   Ú_setUpConstants   s     ÿÿzTestManagedZone._setUpConstantsc                 C   s(   |   ¡  | j| j| j| j| jddgdœS )Nzns-cloud1.googledomains.comzns-cloud2.googledomains.com)ÚnameÚdnsNameÚdescriptionÚidÚcreationTimeÚnameServers)r    Ú	ZONE_NAMEÚDNS_NAMEÚDESCRIPTIONr   r   )r   r   r   r   Ú_makeResource1   s    þúzTestManagedZone._makeResourcec                 C   sj   |   |j| d¡¡ d|v r.|   |j| j¡ n|   |jd ¡ d|v rX|   |j|d ¡ n|   |jd ¡ d S )Nr$   r%   r&   )ÚassertEqualÚzone_idÚgetÚcreatedr   Zname_servers©r   ÚzoneÚresourcer   r   r   Ú!_verifyReadonlyResourceProperties?   s    z1TestManagedZone._verifyReadonlyResourcePropertiesc                 C   st   |   ||¡ |  |j| d¡¡ |  |j| d¡¡ |  |j| d¡¡ |  |j| d¡¡ |  |j| d¡¡ d S )Nr!   r"   r#   r$   ÚnameServerSet)r2   r+   r!   r-   Údns_namer#   r,   Úname_server_setr/   r   r   r   Ú_verifyResourcePropertiesM   s    z)TestManagedZone._verifyResourcePropertiesc                 C   sÈ   |   | j¡}|  |j| j¡ |  |jd ¡ |  |jd u ¡ |  t¡ |j	}W d   ƒ n1 s`0    Y  |  t¡ |j
}W d   ƒ n1 s0    Y  |  |jd ¡ |  |jd ¡ |  |jd ¡ d S r	   )r   r'   r+   r!   r4   Ú
assertTrueÚ_clientÚassertRaisesÚAttributeErrorr   Úpathr,   r.   r#   )r   r0   Ú_r   r   r   Útest_ctor_defaultsW   s    $$z"TestManagedZone.test_ctor_defaultsc                 C   s¦   t | jƒ}|  | j| j|¡}|  |j| j¡ |  |j| j¡ |  |j	|u ¡ |  |j
|j
¡ |  |jd| j| jf ¡ |  |jd ¡ |  |jd ¡ |  |j| j¡ d S )Nú/projects/%s/managedZones/%s©Ú_ClientÚPROJECTr   r'   r(   r+   r!   r4   r7   r8   r   r;   r,   r.   r#   ©r   Úclientr0   r   r   r   Útest_ctor_wo_descriptiong   s    
þz(TestManagedZone.test_ctor_wo_descriptionc                 C   sª   d}t | jƒ}|  | j| j||¡}|  |j| j¡ |  |j| j¡ |  |j	|u ¡ |  |j
|j
¡ |  |jd| j| jf ¡ |  |jd ¡ |  |jd ¡ |  |j|¡ d S )Nr)   r>   r?   )r   r)   rC   r0   r   r   r   Útest_ctor_explicitu   s     
ÿþz"TestManagedZone.test_ctor_explicitc                 C   sZ   |   ¡  t| jƒ}i }|  ¡ }|  t¡ |j||d W d   ƒ n1 sL0    Y  d S ©N©rC   )r    r@   rA   r   r9   ÚKeyErrorÚfrom_api_repr)r   rC   ÚRESOURCEÚklassr   r   r   Ú#test_from_api_repr_missing_identity…   s    
z3TestManagedZone.test_from_api_repr_missing_identityc                 C   sV   |   ¡  t| jƒ}| j| jdœ}|  ¡ }|j||d}|  |j|u ¡ |  	||¡ d S )N)r!   r"   rG   )
r    r@   rA   r'   r(   r   rI   r7   r8   r6   ©r   rC   rJ   rK   r0   r   r   r   Útest_from_api_repr_bare   s    
þz'TestManagedZone.test_from_api_repr_barec                 C   sP   |   ¡  t| jƒ}|  ¡ }|  ¡ }|j||d}|  |j|u ¡ |  ||¡ d S rF   )	r    r@   rA   r*   r   rI   r7   r8   r6   rM   r   r   r   Útest_from_api_repr_w_properties™   s    
z/TestManagedZone.test_from_api_repr_w_propertiesc                 C   sP   t | jƒ}|  | j| j|¡}|  t¡ d|_W d   ƒ n1 sB0    Y  d S ©Nr   )r@   rA   r   r'   r(   r9   Ú
ValueErrorr#   rB   r   r   r   Ú!test_description_setter_bad_value¢   s    
z1TestManagedZone.test_description_setter_bad_valuec                 C   s4   t | jƒ}|  | j| j|¡}d|_|  |jd¡ d S )Nr)   )r@   rA   r   r'   r(   r#   r+   rB   r   r   r   Útest_description_setter¨   s    
z'TestManagedZone.test_description_setterc                 C   sP   t | jƒ}|  | j| j|¡}|  t¡ d|_W d   ƒ n1 sB0    Y  d S rP   )r@   rA   r   r'   r(   r9   rQ   r5   rB   r   r   r   Ú%test_name_server_set_setter_bad_value®   s    
z5TestManagedZone.test_name_server_set_setter_bad_valuec                 C   s4   t | jƒ}|  | j| j|¡}d|_|  |jd¡ d S )NÚNAME_SERVER_SET)r@   rA   r   r'   r(   r5   r+   rB   r   r   r   Útest_name_server_set_setter´   s    
z+TestManagedZone.test_name_server_set_setterc           	      C   s¦   ddl m} d}d}d}dg}t| jƒ}|  | j| j|¡}| ||||¡}|  t	||ƒ¡ |  
|j|¡ |  
|j|¡ |  
|j|¡ |  
|j|¡ |  |j|u ¡ d S )Nr   ©ÚResourceRecordSetzother.example.comÚCNAMEi  úwww.example.com)Úgcloud.dns.resource_record_setrX   r@   rA   r   r'   r(   Zresource_record_setr7   Ú
isinstancer+   r!   Úrecord_typeÚttlÚrrdatasr0   )	r   rX   ZRRS_NAMEZRRS_TYPEZTTLZRRDATASrC   r0   Zrrsr   r   r   Útest_resource_record_setº   s    
z(TestManagedZone.test_resource_record_setc                 C   sT   ddl m} t| jƒ}|  | j| j|¡}| ¡ }|  t	||ƒ¡ |  |j
|u ¡ d S )Nr   ©ÚChanges)Úgcloud.dns.changesrb   r@   rA   r   r'   r(   Úchangesr7   r\   r0   )r   rb   rC   r0   rd   r   r   r   Útest_changesÊ   s    
zTestManagedZone.test_changesc                 C   s´   d| j  }|  ¡ }t|ƒ}t| j |d}|  | j| j|¡}| ¡  |  t	|j
ƒd¡ |j
d }|  |d d¡ |  |d d| ¡ | j| j| jd	œ}|  |d
 |¡ |  ||¡ d S )Núprojects/%s/managedZones©r   Ú
connectioné   r   ÚmethodÚPOSTr;   ú/%s©r!   r"   r#   Údata)rA   r*   Ú_Connectionr@   r   r'   r(   Úcreater+   ÚlenÚ
_requestedr6   ©r   ÚPATHrJ   ÚconnrC   r0   ÚreqÚSENTr   r   r   Útest_create_w_bound_clientÒ   s     

ýz*TestManagedZone.test_create_w_bound_clientc                 C   s  d| j  }d}d}|  ¡ }||d< ||d< tƒ }t| j |d}t|ƒ}t| j |d}|  | j| j|¡}	||	_||	_|	j	|d |  
t|jƒd¡ |  
t|jƒd	¡ |jd }
|  
|
d
 d¡ |  
|
d d| ¡ | j| j||dœ}|  
|
d |¡ |  |	|¡ d S )Nrf   r)   rU   r3   r#   rg   rG   r   ri   rj   rk   r;   rl   )r!   r"   r3   r#   rn   )rA   r*   ro   r@   r   r'   r(   r5   r#   rp   r+   rq   rr   r6   )r   rt   r)   rU   rJ   Úconn1Úclient1Úconn2Úclient2r0   rv   rw   r   r   r   Útest_create_w_alternate_clientç   s4    

üz.TestManagedZone.test_create_w_alternate_clientc                    sÞ   ddl m‰  d| j }g ‰‡ ‡fdd„}tƒ }||_t| j|d}| j| j|d}|  ˆ ¡ | 	¡  W d   ƒ n1 sz0    Y  |  
tˆƒd¡ ˆd }|  
|d	 d
¡ |  
|d d| ¡ d| ji}|  
|d |¡ d S )Nr   )Ú
BadRequestrf   c                     s   ˆ  | ¡ ˆ dƒ‚d S )Nzmissing dns_name / description)Úappend)r   ©r~   rr   r   r   Ú_api_request  s    
zLTestManagedZone.test_create_wo_dns_name_or_description.<locals>._api_requestrg   rG   ri   rj   rk   r;   rl   r!   rn   )Úgcloud.exceptionsr~   rA   ro   Úapi_requestr@   r   r'   r9   rp   r+   rq   )r   rt   r   ru   rC   r0   rv   rw   r   r€   r   Ú&test_create_wo_dns_name_or_description  s"    
&ÿz6TestManagedZone.test_create_wo_dns_name_or_descriptionc                 C   sÎ   d| j f }|  ¡ }|d= |d= |d= d | _t|ƒ}t| j |d}|  | j| j|¡}| ¡  |  	t
|jƒd¡ |jd }|  	|d d	¡ |  	|d
 d| ¡ | j| j| jdœ}|  	|d |¡ |  ||¡ d S )Nrf   r%   r$   r&   rg   ri   r   rj   rk   r;   rl   rm   rn   )rA   r*   r   ro   r@   r   r'   r(   rp   r+   rq   rr   r6   rs   r   r   r   Ú'test_create_w_missing_output_properties!  s(    
ýz7TestManagedZone.test_create_w_missing_output_propertiesc                 C   sœ   d| j | jf }tƒ }t| j |d}|  | j| j|¡}|  | ¡ ¡ |  t	|j
ƒd¡ |j
d }|  |d d¡ |  |d d| ¡ |  |d	 d
di¡ d S )Núprojects/%s/managedZones/%srg   ri   r   rj   ÚGETr;   rl   Úquery_paramsÚfieldsr$   )rA   r'   ro   r@   r   r(   ZassertFalseÚexistsr+   rq   rr   ©r   rt   ru   rC   r0   rv   r   r   r   Útest_exists_miss_w_bound_client<  s    
z/TestManagedZone.test_exists_miss_w_bound_clientc                 C   sÈ   d| j | jf }tƒ }t| j |d}ti ƒ}t| j |d}|  | j| j|¡}|  |j|d¡ |  t	|j
ƒd¡ |  t	|j
ƒd¡ |j
d }|  |d d¡ |  |d d	| ¡ |  |d
 ddi¡ d S )Nr†   rg   rG   r   ri   rj   r‡   r;   rl   rˆ   r‰   r$   )rA   r'   ro   r@   r   r(   r7   rŠ   r+   rq   rr   ©r   rt   ry   rz   r{   r|   r0   rv   r   r   r   Ú"test_exists_hit_w_alternate_clientJ  s    
z2TestManagedZone.test_exists_hit_w_alternate_clientc                 C   s¦   d| j | jf }|  ¡ }t|ƒ}t| j |d}| j| j|d}| ¡  |  |j| j	¡ |  t
|jƒd¡ |jd }|  |d d¡ |  |d d	| ¡ |  ||¡ d S )
Nr†   rg   rG   ri   r   rj   r‡   r;   rl   )rA   r'   r*   ro   r@   r   Úreloadr+   r4   r(   rq   rr   r6   )r   rt   rJ   ru   rC   r0   rv   r   r   r   Útest_reload_w_bound_client[  s    
z*TestManagedZone.test_reload_w_bound_clientc           	      C   sÂ   d| j | jf }|  ¡ }tƒ }t| j |d}t|ƒ}t| j |d}|  | j| j|¡}|j|d |  t	|j
ƒd¡ |  t	|j
ƒd¡ |j
d }|  |d d¡ |  |d d	| ¡ |  ||¡ d S )
Nr†   rg   rG   r   ri   rj   r‡   r;   rl   )rA   r'   r*   ro   r@   r   r(   r   r+   rq   rr   r6   )	r   rt   rJ   ry   rz   r{   r|   r0   rv   r   r   r   Útest_reload_w_alternate_clientl  s    
z.TestManagedZone.test_reload_w_alternate_clientc                 C   s„   d| j | jf }ti ƒ}t| j |d}|  | j| j|¡}| ¡  |  t|j	ƒd¡ |j	d }|  |d d¡ |  |d d| ¡ d S )	Nr†   rg   ri   r   rj   ÚDELETEr;   rl   ©
rA   r'   ro   r@   r   r(   Údeleter+   rq   rr   r‹   r   r   r   Útest_delete_w_bound_client~  s    
z*TestManagedZone.test_delete_w_bound_clientc                 C   s®   d| j | jf }tƒ }t| j |d}ti ƒ}t| j |d}|  | j| j|¡}|j|d |  t|j	ƒd¡ |  t|j	ƒd¡ |j	d }|  |d d¡ |  |d d	| ¡ d S )
Nr†   rg   rG   r   ri   rj   r’   r;   rl   r“   r   r   r   r   Útest_delete_w_alternate_client‹  s    
z.TestManagedZone.test_delete_w_alternate_clientc                 C   sz  ddl m} d| j| jf }d}d}d}d}dg}d	}d
}	d}
dg}|d||||dœd||	|
|dœgdœ}t|ƒ}t| j|d}|  | j| j|¡}| ¡ \}}|  	t
|ƒt
|d ƒ¡ t||d ƒD ]d\}}|  t||ƒ¡ |  	|j|d ¡ |  	|j|d ¡ |  	|jt|d ƒ¡ |  	|j|d ¡ qÄ|  	||¡ |  	t
|jƒd¡ |jd }|  	|d d¡ |  	|d d| ¡ d S )Nr   rW   ú"projects/%s/managedZones/%s/rrsetsÚTOKENrZ   ÚAÚ86400ú123.45.67.89úalias.example.comrY   Ú3600údns#resourceRecordSet©Úkindr!   Útyper^   r_   )ÚnextPageTokenÚrrsetsrg   r£   r!   r¡   r^   r_   ri   rj   r‡   r;   rl   ©r[   rX   rA   r'   ro   r@   r   r(   Zlist_resource_record_setsr+   rq   Úzipr7   r\   r!   r]   r^   Úintr_   rr   )r   rX   rt   r˜   ÚNAME_1ÚTYPE_1ÚTTL_1Ú	RRDATAS_1ÚNAME_2ÚTYPE_2ÚTTL_2Ú	RRDATAS_2ÚDATAru   rC   r0   r£   ÚtokenÚfoundÚexpectedrv   r   r   r   Ú'test_list_resource_record_sets_defaults›  sX    ÿüüúþ
z7TestManagedZone.test_list_resource_record_sets_defaultsc                 C   s¼  ddl m} d| j| jf }d}d}d}d}dg}d	}d
}	d}
dg}dd||||dœd||	|
|dœgi}tƒ }t| j|d}t|ƒ}t| j|d}|  | j| j|¡}|jd||d\}}|  	t
|ƒt
|d ƒ¡ t||d ƒD ]d\}}|  t||ƒ¡ |  	|j|d ¡ |  	|j|d ¡ |  	|jt|d ƒ¡ |  	|j|d ¡ qÞ|  	|d ¡ |  	t
|jƒd¡ |  	t
|jƒd¡ |jd }|  	|d d¡ |  	|d d| ¡ |  	|d d|dœ¡ d S )Nr   rW   r—   r˜   rZ   r™   rš   r›   rœ   rY   r   r£   rž   rŸ   rg   é   ©Zmax_resultsZ
page_tokenrC   r!   r¡   r^   r_   ri   rj   r‡   r;   rl   rˆ   ©Z
maxResultsZ	pageTokenr¤   )r   rX   rt   r˜   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   ry   rz   r{   r|   r0   r£   r°   r±   r²   rv   r   r   r   Ú'test_list_resource_record_sets_explicitË  sh    ÿüüúÿÿ


ÿz7TestManagedZone.test_list_resource_record_sets_explicitc                 C   sº  ddl m} ddlm} ddlm} |  ¡  d| j| jf }d}d}d}d	}d
g}	d}
d}d}dg}d}|d|d|| j	ƒd||||	dœgd|
|||dœgdœgdœ}t
|ƒ}t| j|d}|  | j| j|¡}| ¡ \}}|  t|ƒt|d ƒ¡ t||d ƒD ]h\}}|  t||ƒ¡ |  |j|¡ |  |jd¡ |  |j| j	¡ |  t|jƒt|d ƒ¡ t|j|d ƒD ]f\}}|  t||ƒ¡ |  |j|d ¡ |  |j|d ¡ |  |jt|d ƒ¡ |  |j|d ¡ qn|  t|jƒt|d ƒ¡ t|j|d ƒD ]f\}}|  t||ƒ¡ |  |j|d ¡ |  |j|d ¡ |  |jt|d ƒ¡ |  |j|d ¡ q qþ|  ||¡ |  t|jƒd¡ |jd }|  |d d¡ |  |d  d!| ¡ d S )"Nr   ©Ú_datetime_to_rfc3339ra   rW   ú#projects/%s/managedZones/%s/changesr˜   rZ   r™   rš   r›   rœ   rY   r   Úchangeset_idú
dns#changeÚpendingrž   rŸ   ©r    r$   ÚstatusZ	startTimeÚ	additionsÚ	deletions)r¢   rd   rg   rd   rÀ   r!   r¡   r^   r_   rÁ   ri   rj   r‡   r;   rl   ©r   r¹   rc   rb   r[   rX   r    rA   r'   r   ro   r@   r   r(   Zlist_changesr+   rq   r¥   r7   r\   r!   r¿   ÚstartedrÀ   r]   r^   r¦   r_   rÁ   rr   )r   r¹   rb   rX   rt   r˜   r§   r¨   r©   rª   r«   r¬   r­   r®   ÚCHANGES_NAMEr¯   ru   rC   r0   rd   r°   r±   r²   Úfound_rrÚexpected_rrrv   r   r   r   Útest_list_changes_defaults   sŽ    ÿüÿüÿõþÿÿ
z*TestManagedZone.test_list_changes_defaultsc                 C   sþ  ddl m} ddlm} ddlm} |  ¡  d| j| jf }d}d}d}d	}d
g}	d}
d}d}dg}d}dd|d|| j	ƒd||||	dœgd|
|||dœgdœgi}t
ƒ }t| j|d}t
|ƒ}t| j|d}|  | j| j|¡}|jd||d\}}|  t|ƒt|d ƒ¡ t||d ƒD ]j\}}|  t||ƒ¡ |  |j|¡ |  |jd¡ |  |j| j	¡ |  t|jƒt|d ƒ¡ t|j|d ƒD ]f\}}|  t||ƒ¡ |  |j|d ¡ |  |j|d ¡ |  |jt|d ƒ¡ |  |j|d ¡ qˆ|  t|jƒt|d ƒ¡ t|j|d ƒD ]f\}}|  t||ƒ¡ |  |j|d ¡ |  |j|d ¡ |  |jt|d ƒ¡ |  |j|d ¡ qq|  |d ¡ |  t|jƒd¡ |  t|jƒd¡ |jd }|  |d d ¡ |  |d! d"| ¡ |  |d# d|d$œ¡ d S )%Nr   r¸   ra   rW   rº   r˜   rZ   r™   rš   r›   rœ   rY   r   r»   rd   r¼   r½   rž   rŸ   r¾   rg   r´   rµ   rÀ   r!   r¡   r^   r_   rÁ   ri   rj   r‡   r;   rl   rˆ   r¶   rÂ   )r   r¹   rb   rX   rt   r˜   r§   r¨   r©   rª   r«   r¬   r­   r®   rÄ   r¯   ry   rz   r{   r|   r0   rd   r°   r±   r²   rÅ   rÆ   rv   r   r   r   Útest_list_changes_explicitL  sž    ÿüÿüÿõÿÿ
ÿÿ

ÿz*TestManagedZone.test_list_changes_explicitN)'Ú__name__Ú
__module__Ú__qualname__rA   r'   r)   r(   r   r   r    r*   r2   r6   r=   rD   rE   rL   rN   rO   rR   rS   rT   rV   r`   re   rx   r}   r„   r…   rŒ   rŽ   r   r‘   r•   r–   r³   r·   rÇ   rÈ   r   r   r   r   r      sH   
	05Lr   c                   @   s   e Zd Zddd„ZdS )r@   r   Nc                 C   s   || _ || _d S r	   rg   )r   r   rh   r   r   r   Ú__init__   s    z_Client.__init__)r   N)rÉ   rÊ   rË   rÌ   r   r   r   r   r@   ž  s   r@   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ro   c                 G   s   || _ g | _d S r	   )Ú
_responsesrr   )r   Ú	responsesr   r   r   rÌ   §  s    z_Connection.__init__c                 K   sV   ddl m} | j |¡ z | jd | jdd …  }| _W n   |dƒ‚Y n0 |S d S )Nr   )ÚNotFoundri   Zmiss)r‚   rÏ   rr   r   rÍ   )r   r   rÏ   Úresponser   r   r   rƒ   «  s     z_Connection.api_requestN)rÉ   rÊ   rË   rÌ   rƒ   r   r   r   r   ro   ¥  s   ro   )Z	unittest2ZTestCaser   Úobjectr@   ro   r   r   r   r   Ú<module>   s        