a
    ù!f1  ã                   @   sN   d dl Z G dd„ de jƒZG dd„ deƒ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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.S )/ÚTestChangesÚprojectzexample.comZchangeset_idc                 C   s   ddl m} |S )Nr   )ÚChanges)Zgcloud.dns.changesr   )Úselfr   © r   úX/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/dns/test_changes.pyÚ_getTargetClass   s    zTestChanges._getTargetClassc                 O   s   |   ¡ |i |¤ŽS ©N)r   )r   ÚargsÚkwr   r   r   Ú_makeOne   s    zTestChanges._makeOnec                 C   s,   ddl m} ddl m} |ƒ j|d| _d S )Nr   )ÚUTC)Ú_NOW)Útzinfo)Úgcloud._helpersr   r   ÚreplaceÚWHEN)r   r   r   r   r   r   Ú_setUpConstants   s    zTestChanges._setUpConstantsc              
   C   sF   ddl m} || jƒ}d| j|dddddgd	œgddd
dgd	œgdœS )Nr   )Ú_datetime_to_rfc3339z
dns#changeÚdoneútest.example.comÚCNAMEZ3600úwww.example.com)ÚnameÚtypeÚttlÚrrdatasZ86400úother.example.com)ÚkindÚidÚ	startTimeÚstatusÚ	additionsÚ	deletions)r   r   r   ÚCHANGES_NAME)r   r   Zwhen_strr   r   r   Ú_makeResource#   s&    
ýÿýÿõzTestChanges._makeResourcec           
      C   sx  ddl m} |  |j|d ¡ ||d ƒ}|  |j|¡ |  |j|d ¡ | dd¡}|  t|jƒt|ƒ¡ t	|j|ƒD ]d\}}|  |j|d ¡ |  |j
|d	 ¡ |  |jt|d
 ƒ¡ |  |j|d ¡ |  |j|u ¡ qx| dd¡}	|  t|jƒt|	ƒ¡ t	|j|	ƒD ]f\}}|  |j|d ¡ |  |j
|d	 ¡ |  |jt|d
 ƒ¡ |  |j|d ¡ |  |j|u ¡ qd S )Nr   )Ú_rfc3339_to_datetimer   r    r!   r"   r   r   r   r   r   r#   )r   r&   ÚassertEqualr   Ústartedr!   ÚgetÚlenr"   ÚzipZrecord_typer   Úintr   Ú
assertTrueÚzoner#   )
r   ÚchangesÚresourcer.   r&   r(   Zr_additionsÚfoundÚexpectedZr_deletionsr   r   r   Ú_verifyResourceProperties9   s*    z%TestChanges._verifyResourcePropertiesc                 C   sr   t ƒ }|  |¡}|  |j|u ¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  t|j	ƒg ¡ |  t|j
ƒg ¡ d S r	   )Ú_Zoner   r-   r.   r'   r   r!   r(   Úlistr"   r#   ©r   r.   r/   r   r   r   Ú	test_ctorR   s    
zTestChanges.test_ctorc                 C   sJ   |   ¡  |  ¡ }|d= |d= tƒ }|  ¡ }|j||d}|  |||¡ d S )Nr"   r#   ©r.   ©r   r%   r4   r   Zfrom_api_reprr3   ©r   ÚRESOURCEr.   Úklassr/   r   r   r   Ú.test_from_api_repr_missing_additions_deletions^   s    z:TestChanges.test_from_api_repr_missing_additions_deletionsc                 C   s>   |   ¡  |  ¡ }tƒ }|  ¡ }|j||d}|  |||¡ d S )Nr8   r9   r:   r   r   r   Útest_from_api_reprj   s    zTestChanges.test_from_api_reprc                 C   sD   t ƒ }|  |¡}|  t¡ d|_W d   ƒ n1 s60    Y  d S )Ni90  )r4   r   ÚassertRaisesÚ
ValueErrorr   r6   r   r   r   Útest_name_setter_bad_valuet   s    
z&TestChanges.test_name_setter_bad_valuec                 C   s(   t ƒ }|  |¡}d|_|  |jd¡ d S )NÚNAME)r4   r   r   r'   r6   r   r   r   Útest_name_setterz   s    
zTestChanges.test_name_setterc                 C   sJ   t ƒ }|  |¡}|  t¡ | tƒ ¡ W d   ƒ n1 s<0    Y  d S r	   )r4   r   r?   r@   Úadd_record_setÚobjectr6   r   r   r   Ú!test_add_record_set_invalid_value€   s    
z-TestChanges.test_add_record_set_invalid_valuec                 C   sP   ddl m} tƒ }|  |¡}|ddddg|ƒ}| |¡ |  t|jƒ|g¡ d S ©Nr   ©ÚResourceRecordSetr   r   é  r   )Úgcloud.dns.resource_record_setrI   r4   r   rD   r'   r5   r"   ©r   rI   r.   r/   Zrrsr   r   r   Útest_add_record_set‡   s    
ÿ
zTestChanges.test_add_record_setc                 C   sJ   t ƒ }|  |¡}|  t¡ | tƒ ¡ W d   ƒ n1 s<0    Y  d S r	   )r4   r   r?   r@   Údelete_record_setrE   r6   r   r   r   Ú$test_delete_record_set_invalid_value   s    
z0TestChanges.test_delete_record_set_invalid_valuec                 C   sP   ddl m} tƒ }|  |¡}|ddddg|ƒ}| |¡ |  t|jƒ|g¡ d S rG   )rK   rI   r4   r   rN   r'   r5   r#   rL   r   r   r   Útest_delete_record_set—   s    
ÿ
z"TestChanges.test_delete_record_setc                 C   s€   |   ¡  |  ¡ }t|ƒ}t| j|d}t|ƒ}|  |¡}|  t¡ | 	¡  W d   ƒ n1 s`0    Y  |  
t|jƒd¡ d S )N©r   Ú
connectionr   )r   r%   Ú_ConnectionÚ_ClientÚPROJECTr4   r   r?   r@   Úcreater'   r*   Ú
_requested)r   r;   ÚconnÚclientr.   r/   r   r   r   Ú%test_create_wo_additions_or_deletions    s    
&z1TestChanges.test_create_wo_additions_or_deletionsc           
      C   s   ddl m} |  ¡  |  ¡ }d| j| jf }t|ƒ}t| j|d}t|ƒ}|  	|¡}| 
|ddddg|ƒ¡ | |ddd	d
g|ƒ¡ | ¡  |  t|jƒd¡ |jd }|  |d d¡ |  |d d| ¡ |d |d dœ}	|  |d |	¡ |  |||¡ d S )Nr   rH   ú#projects/%s/managedZones/%s/changesrQ   r   r   rJ   r   é€Q r   é   ÚmethodÚPOSTÚpathú/%sr"   r#   ©r"   r#   Údata©rK   rI   r   r%   rU   Ú	ZONE_NAMErS   rT   r4   r   rD   rN   rV   r'   r*   rW   r3   )
r   rI   r;   ÚPATHrX   rY   r.   r/   ÚreqÚSENTr   r   r   Útest_create_w_bound_client­   s4    ÿ
ÿÿ
þz&TestChanges.test_create_w_bound_clientc                 C   s*  ddl m} |  ¡  |  ¡ }d| j| jf }tƒ }t| j|d}t|ƒ}t| j|d}t|ƒ}|  	|¡}	|	 
|ddddg|ƒ¡ |	 |ddd	d
g|ƒ¡ |	j|d |  t|jƒd¡ |  t|jƒd¡ |jd }
|  |
d d¡ |  |
d d| ¡ |d |d dœ}|  |
d |¡ |  |	||¡ d S )Nr   rH   r[   rQ   r   r   rJ   r   r\   r   ©rY   r]   r^   r_   r`   ra   r"   r#   rb   rc   rd   )r   rI   r;   rf   Úconn1Úclient1Úconn2Úclient2r.   r/   rg   rh   r   r   r   Útest_create_w_alternate_clientÉ   s:    ÿ
ÿÿ
þz*TestChanges.test_create_w_alternate_clientc                 C   s°   d| j | j| jf }|  ¡  tƒ }t| j |d}t|ƒ}|  |¡}| j|_|  	| 
¡ ¡ |  t|jƒd¡ |jd }|  |d d¡ |  |d d| ¡ |  |d	 d
di¡ d S )Nú&projects/%s/managedZones/%s/changes/%srQ   r]   r   r^   ÚGETr`   ra   Úquery_paramsÚfieldsr   )rU   re   r$   r   rS   rT   r4   r   r   ZassertFalseÚexistsr'   r*   rW   )r   rf   rX   rY   r.   r/   rg   r   r   r   Útest_exists_miss_w_bound_clientè   s    ÿ

z+TestChanges.test_exists_miss_w_bound_clientc           	      C   sÔ   d| j | j| jf }tƒ }t| j |d}ti ƒ}t| j |d}t|ƒ}|  |¡}| j|_|  |j	|d¡ |  
t|jƒd¡ |  
t|jƒd¡ |jd }|  
|d d¡ |  
|d d	| ¡ |  
|d
 ddi¡ d S )Nrp   rQ   rj   r   r]   r^   rq   r`   ra   rr   rs   r   )rU   re   r$   rS   rT   r4   r   r   r-   rt   r'   r*   rW   )	r   rf   rk   rl   rm   rn   r.   r/   rg   r   r   r   Ú"test_exists_hit_w_alternate_clientú   s"    ÿ

z.TestChanges.test_exists_hit_w_alternate_clientc                 C   s®   d| j | j| jf }|  ¡  |  ¡ }t|ƒ}t| j |d}t|ƒ}|  |¡}| j|_	| 
¡  |  t|jƒd¡ |jd }|  |d d¡ |  |d d| ¡ |  |||¡ d S )	Nrp   rQ   r]   r   r^   rq   r`   ra   ©rU   re   r$   r   r%   rS   rT   r4   r   r   Úreloadr'   r*   rW   r3   )r   rf   r;   rX   rY   r.   r/   rg   r   r   r   Útest_reload_w_bound_client  s     ÿ

z&TestChanges.test_reload_w_bound_clientc           
      C   sØ   d| j | j| jf }|  ¡  |  ¡ }tƒ }t| j |d}t|ƒ}t| j |d}t|ƒ}|  |¡}| j|_	|j
|d |  t|jƒd¡ |  t|jƒd¡ |jd }	|  |	d d¡ |  |	d d	| ¡ |  |||¡ d S )
Nrp   rQ   rj   r   r]   r^   rq   r`   ra   rw   )
r   rf   r;   rk   rl   rm   rn   r.   r/   rg   r   r   r   Útest_reload_w_alternate_client!  s&    ÿ

z*TestChanges.test_reload_w_alternate_clientN)Ú__name__Ú
__module__Ú__qualname__rU   re   r$   r   r   r   r%   r3   r7   r=   r>   rA   rC   rF   rM   rO   rP   rZ   ri   ro   ru   rv   ry   rz   r   r   r   r   r      s0   
		r   c                   @   s    e Zd Zdejejfdd„ZdS )r4   Nc                 C   s   || _ || _|| _d S r	   )Z_clientr   r   )r   rY   r   r   r   r   r   Ú__init__:  s    z_Zone.__init__)r{   r|   r}   r   rU   re   r~   r   r   r   r   r4   8  s   ÿr4   c                   @   s   e Zd Zddd„ZdS )rT   r   Nc                 C   s   || _ || _d S r	   rQ   )r   r   rR   r   r   r   r~   C  s    z_Client.__init__)r   N)r{   r|   r}   r~   r   r   r   r   rT   A  s   rT   c                   @   s   e Zd Zdd„ Zdd„ ZdS )rS   c                 G   s   || _ g | _d S r	   )Ú
_responsesrW   )r   Ú	responsesr   r   r   r~   J  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   )ÚNotFoundr]   Zmiss)Zgcloud.exceptionsr   rW   Úappendr   )r   r   r   Úresponser   r   r   Úapi_requestN  s     z_Connection.api_requestN)r{   r|   r}   r~   r„   r   r   r   r   rS   H  s   rS   )Z	unittest2ZTestCaser   rE   r4   rT   rS   r   r   r   r   Ú<module>   s     (	