a
    cl_                     @   s   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZ dd	lmZ ddlZdd
dZdejd ddf Z G dd deZ!G dd deZ"dS )z0Tests for samba.upgradeprovision that need a DC.    N)param)Credentials)system_session)getpolicypathfind_provision_key_parameters)
	get_pathsget_ldbsidentic_renameupdateOEMInfo
getOEMInfo
update_gpodelta_update_basesamdbupdate_dns_account_passwordsearch_constructed_attrs_stored&increment_calculated_keyversion_number)env_loadparmTestCaseInTempDir)create_dummy_secretsdbc                 C   s   d S N )abr   r   D/usr/lib/python3/dist-packages/samba/tests/upgradeprovisionneeddc.pydummymessage(   s    r   z%s/%s/%sZSELFTEST_PREFIXZad_dc_ntvfszetc/smb.confc                   @   s    e Zd ZdZdd Zdd ZdS )'UpgradeProvisionBasicLdbHelpersTestCasezISome simple tests for individual functions in the provisioning code.
    c                 C   s6   t td t}t }t }|| t||t | d S r   )r   r   smb_conf_pathr   r   guessr   r   )selfpathscredslpr   r   r   test_get_ldbs3   s
    
z5UpgradeProvisionBasicLdbHelpersTestCase.test_get_ldbsc                 C   s   t td t}t }t }|| d}t||t |}t|j	|j
|j|t|}| |jd | t|j |  | |jd  | |jd d S )Nzdc=samba,dc=example,dc=comzSAMBA.EXAMPLE.COM )r   r   r   r   r   r   r   r   r   samsecretsidmapassertEqualrealmstrrootdnlowerassertNotEqualsZpolicyid_dcZntdsguid)r   r   r   r    r)   ldbsnamesr   r   r   test_find_key_param:   s    
z;UpgradeProvisionBasicLdbHelpersTestCase.test_find_key_paramN)__name__
__module____qualname____doc__r!   r.   r   r   r   r   r   /   s   r   c                       sx   e Zd Zdd Z f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 fddZ  ZS )UpgradeProvisionWithLdbTestCasec                 C   s   t j| jdS )Nsam.ldb)ospathjointempdirr   r   r   r   _getEmptyDbNameK   s    z/UpgradeProvisionWithLdbTestCase._getEmptyDbNamec                    s   t t|   ttd t}t | _t | _	| j
| j	 || _t|| jt | j	| _t| jj| jj| jj|t| j	| _ttj| jd| _d S )Nref.ldb)superr3   setUpr   r   r   r   r   r   r    r   r   r   r   r,   r   r#   r$   r%   r-   r   r5   r6   r7   r8   Zreferencedb)r   r   	__class__r   r   r=   N   s    z%UpgradeProvisionWithLdbTestCase.setUpc                 C   s(   t | jj| jjdg}| d|v  d S )Nzmsds-KeyVersionNumber)r   r,   r#   r-   r)   assertFalse)r   ZhashAttr   r   r   $test_search_constructed_attrs_stored\   s
    zDUpgradeProvisionWithLdbTestCase.test_search_constructed_attrs_storedc                 C   s   d| j j }i }d|| < t| jj| j j| | | jj|dd d|| < t| jj| j j| | | jj|dd d S )NzCN=Administrator,CN=Users,%s   Z
unicodePwd   )r-   r)   r*   r   r,   r#   r&   Z"get_attribute_replmetadata_version)r   dnhashr   r   r   +test_increment_calculated_keyversion_numberb   s,    zKUpgradeProvisionWithLdbTestCase.test_increment_calculated_keyversion_numberc                 C   sp   d}t | jjd| }t| jj| | jjjd|t jdgd}| t|d | t	|d d d|  d S )NzDC=samba,DC=example,DC=comzCN=Guest,CN=Users,%sz(name=Guest)rD   )Z
expressionbaseZscopeattrs   r   )
ldbZDnr,   r#   r	   searchZSCOPE_SUBTREEr&   lenr(   )r   r)   ZguestDNresr   r   r   test_identic_renamey   s    z3UpgradeProvisionWithLdbTestCase.test_identic_renamec                 C   s(   |   }t| jj|| jt | jt d S r   )r:   r   r   Zsamdbr   r   r    r   )r   Zdummysampathr   r   r   test_delta_update_basesamdb   s
    
z;UpgradeProvisionWithLdbTestCase.test_delta_update_basesamdbc                 C   sd   t | jj| jj| jj}t| | t	j
| t| j| jj| j| jt | t	j
| d S r   )r   r   sysvolr-   	dnsdomainZpolicyidshutilrmtreer@   r5   r6   isdirr   r,   r#   r    r   
assertTrue)r   dirr   r   r   test_update_gpo_simple   s    
z6UpgradeProvisionWithLdbTestCase.test_update_gpo_simplec                 C   s   t j| jd}| jj}|| j_t | t t j|| jj t t jt j|| jjd t	| j| j
j| j| jt t| || j_d S )NZtestupdategpoZPolicies)r5   r6   r7   r8   r   rP   mkdirr-   rQ   r   r,   r#   r    r   rR   rS   )r   r6   Zsaver   r   r   test_update_gpo_acl   s    

z3UpgradeProvisionWithLdbTestCase.test_update_gpo_aclc                 C   s:   | j d}d|dd }t| jj|}| |d d S )Nr'   DC=%s., DC=r"   )r    getreplacer   r,   r#   r+   )r   r'   basednoemr   r   r   test_getOEMInfo   s    z/UpgradeProvisionWithLdbTestCase.test_getOEMInfoc                 C   s   t | jj| jj| j d S r   )r   r,   r#   r$   r-   r9   r   r   r   test_update_dns_account   s    z7UpgradeProvisionWithLdbTestCase.test_update_dns_accountc                 C   st   | j d}d|dd }t| jj|}t| jj| t| jj|}| t|t| | 	t
dt| d S )Nr'   rZ   r[   r\   z.*upgrade to.*)r    r]   r^   r   r,   r#   r
   r+   r(   rU   rematch)r   r'   r_   r`   Zoem2r   r   r   test_updateOEMInfo   s    z2UpgradeProvisionWithLdbTestCase.test_updateOEMInfoc                    sB   dD ]*}t j| j|}t j|rt | qtt|   d S )N)r;   zsecrets.ldbzsecrets.tdbzsecrets.tdb.bakzsecrets.ntdbr4   )	r5   r6   r7   r8   existsunlinkr<   r3   tearDown)r   namer6   r>   r   r   rh      s
    z(UpgradeProvisionWithLdbTestCase.tearDown)r/   r0   r1   r:   r=   rA   rF   rN   rO   rW   rY   ra   rb   re   rh   __classcell__r   r   r>   r   r3   I   s   
	r3   )NN)#r2   r5   rc   rR   Zsambar   Zsamba.credentialsr   Z
samba.authr   Zsamba.provisionr   r   Zsamba.upgradehelpersr   r   r	   r
   r   r   r   r   r   r   Zsamba.testsr   r   Zsamba.tests.provisionr   rJ   r   environr   r   r3   r   r   r   r   <module>   s   0
