a
    W×aü  ã                   @   sx   d dl Zd dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlZd dlZG dd	„ d	ejjƒZdS )
é    N)ÚStringIO)Ú
get_string)Úcmd_sambatool)ÚCredentials)Úsystem_session)ÚSamDBc                       s8   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Z‡  ZS )
ÚSambaDnsUpdateTestsz'Blackbox test case for samba_dnsupdate.c                    sV   t j d¡| _tt| ƒ ¡  z|  d¡}|  d|v |¡ W n t jj	yP   Y n0 d S )NZDNS_SERVER_IPúsamba_dnsupdate --verboses   Looking for DNS entry)
ÚsambaÚtestsZenv_get_var_valueÚ	server_ipÚsuperr   ÚsetUpÚcheck_outputÚ
assertTrueÚBlackboxProcessError)ÚselfÚout©Ú	__class__© úF/usr/lib/python3/dist-packages/samba/tests/blackbox/samba_dnsupdate.pyr   !   s    
zSambaDnsUpdateTests.setUpc              
   C   sZ   z|   d¡}W n6 tjjyD } z|  d| ¡ W Y d }~n
d }~0 0 |  d|v |¡ d S )Nr	   ú!Error calling samba_dnsupdate: %só   No DNS updates needed)r   r
   r   r   Úfailr   )r   r   Úer   r   r   Útest_samba_dnsupate_no_change*   s
    $z1SambaDnsUpdateTests.test_samba_dnsupate_no_changec              
   C   s*  z.|   d¡}|  d|v |¡ |  d|v |¡ W n tjjyD   Y n0 z|   d¡}W n6 tjjyŠ } z|  d| ¡ W Y d }~n
d }~0 0 |  d|v |¡ z|   d| j ¡}W n6 tjjyæ } z|  d| ¡ W Y d }~n
d }~0 0 |  d|v |¡ |  d|v |¡ |   d¡}|  d|v || ¡ d S )	Nz/samba_dnsupdate --verbose --current-ip=10.0.0.1s    DNS updates ands    DNS deletes neededz>samba_dnsupdate --verbose --use-nsupdate --current-ip=10.0.0.1r   r   z=samba_dnsupdate --verbose --use-samba-tool --rpc-server-ip=%sr	   )r   r   r
   r   r   r   r   )r   r   r   Zrpc_outr   r   r   Útest_samba_dnsupate_set_ip1   s&    
$$
z.SambaDnsUpdateTests.test_samba_dnsupate_set_ipc           
      C   sž  d}t j| }tƒ |_tƒ |_d}| d| d|¡ | d| d|¡}|d urX|  d¡ tj 	¡ | _
tƒ | _| j | j
¡ tƒ | _| j
 d¡}|d }t ||¡ t| j| j| j
d	| _t ¡ }t | jd
 | j ¡ ¡¡|_t d || j ¡ ¡tjd¡|d< d |¡}t|  |¡ƒ}	|  |  ¡ |	v |	¡ | j !|¡ t ||¡ t|  |¡ƒ}	|  d|	v |	¡ |  "|  ¡ |	v |	¡ | d| d|¡}|d urš|  d¡ d S )NZsitesZABCDEFGHIJKLMNOPQRSTUVWXYZzsamba-tool %sÚremoveZcreatezError creating new siteZdns_update_cacheZ_tmp)Zsession_infoZcredentialsÚlpz@CN=DEFAULTIPSITELINK,CN=IP,CN=Inter-Site Transports,CN=Sites,{0}zCN={0},CN=Sites,{1}ZsiteListz(samba_dnsupdate --verbose --use-file={0}zNo DNS updates neededzError deleting site)#r   Zsubcommandsr   ZoutfZerrfZ_runr   r
   r   Zenv_loadparmr   r   ZcredsZguessr   ZsessionZprivate_pathÚshutilZcopyfiler   ZsamdbÚldbZMessageZDnÚformatZget_config_basednZdnZMessageElementZFLAG_MOD_ADDr   r   ZassertFalseÚlowerZmodifyr   )
r   ÚnameÚcmdZ	site_nameÚresultZuc_fnZtmp_ucÚmZdns_cr   r   r   r   Útest_add_new_uncovered_siteI   sR    

þþþý

z/SambaDnsUpdateTests.test_add_new_uncovered_site)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r(   Ú__classcell__r   r   r   r   r      s
   	r   )Zsamba.testsr
   Zsamba.compatr   r   Zsamba.netcmd.mainr   Zsamba.credentialsr   Z
samba.authr   Zsamba.samdbr   r!   r    r   ZBlackboxTestCaser   r   r   r   r   Ú<module>   s   