
    b                        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
Zej        d         ddddZ  G d de          Z! G 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                     d S N )abs     D/usr/lib/python3/dist-packages/samba/tests/upgradeprovisionneeddc.pydummymessager   (   s    D    SELFTEST_PREFIX/ad_dc_ntvfszetc/smb.confc                       e Zd ZdZd Zd ZdS )'UpgradeProvisionBasicLdbHelpersTestCasezISome simple tests for individual functions in the provisioning code.
    c                     t          t          d t                    }t                      }t	                      }|                    |           t          ||t                      |           d S r   )r   r   smb_conf_pathr   r   guessr	   r   )selfpathscredslps       r   test_get_ldbsz5UpgradeProvisionBasicLdbHelpersTestCase.test_get_ldbs3   sT    %}55^^B~//44444r   c                 h   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assertNotEqualspolicyid_dcntdsguid)r%   r&   r'   r(   r2   ldbsnamess          r   test_find_key_paramz;UpgradeProvisionBasicLdbHelpersTestCase.test_find_key_param:   s    %}55^^B-un&6&6;;-dhdj.3]BH H&9:::U\**0022FLLNNCCCU.555U^R00000r   N)__name__
__module____qualname____doc__r)   r9   r   r   r   r!   r!   /   s<         5 5 51 1 1 1 1r   r!   c                   d     e Zd Zd Z fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z fdZ xZS )UpgradeProvisionWithLdbTestCasec                 L    t           j                            | j        d          S )Nsam.ldb)ospathjointempdirr%   s    r   _getEmptyDbNamez/UpgradeProvisionWithLdbTestCase._getEmptyDbNameK   s    w||DL)444r   c                 n   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)superr?   setUpr   r   r#   r   r'   r   r(   r$   r&   r	   r   r7   r   r,   r-   r.   r8   r   rB   rC   rD   rE   referencedb)r%   r&   	__class__s     r   rK   z%UpgradeProvisionWithLdbTestCase.setUpN   s    -t44::<<<%}55 ]]
..
!!!
UDJ0@0@$'JJ	249=3793DdioW\^k377< <
 2GLLy113 3r   c                     t          | j        j        | j        j        dg          }|                     d|v            d S )Nzmsds-KeyVersionNumber)r   r7   r,   r8   r2   assertFalse)r%   hashAtts     r   $test_search_constructed_attrs_storedzDUpgradeProvisionWithLdbTestCase.test_search_constructed_attrs_stored\   sI    1$)-26*2C3J2KM M 	0G;<<<<<r   c                    d| j         j        z  }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   
unicodePwd   )r8   r2   r3   r   r7   r,   r/   "get_attribute_replmetadata_version)r%   dnhashs      r   +test_increment_calculated_keyversion_numberzKUpgradeProvisionWithLdbTestCase.test_increment_calculated_keyversion_numberb   s    +dj.??RXXZZ.ty}/3z/@/3	5 	5 	5 	II"JVX X	 	 	 RXXZZ.ty}/3z/@/3	5 	5 	5 	II"JVX X	 	 	 	 	r   c                    d}t          j        | j        j        d|z            }t	          | j        j        |           | j        j                            d|t           j        dg          }|                     t          |          d           |                     t          |d         d                   d|z             d S )NzDC=samba,DC=example,DC=comzCN=Guest,CN=Users,%sz(name=Guest)rW   )
expressionbasescopeattrs   r   )
ldbDnr7   r,   r
   searchSCOPE_SUBTREEr/   lenr1   )r%   r2   guestDNress       r   test_identic_renamez3UpgradeProvisionWithLdbTestCase.test_identic_renamey   s    -&(>(GHHty}g...im""n6),):4& # J JS1%%%SVD\**,BV,KLLLLLr   c                     |                                  }t          | j        j        || j        t                      | j        t                     d S r   )rG   r   r&   samdbr'   r   r(   r   )r%   dummysampaths     r   test_delta_update_basesamdbz;UpgradeProvisionWithLdbTestCase.test_delta_update_basesamdb   sL    ++--tz/#z>+;+;TW+	- 	- 	- 	- 	-r   c                    t          | j        j        | j        j        | j        j                  }t          j        |           |                     t          j
                            |                     t          | j        | j        j        | j        | j        t                      |                     t          j
                            |                     d S r   )r   r&   sysvolr8   	dnsdomainpolicyidshutilrmtreerO   rB   rC   isdirr   r7   r,   r(   r   
assertTrue)r%   dirs     r   test_update_gpo_simplez6UpgradeProvisionWithLdbTestCase.test_update_gpo_simple   s    DJ-tz/C J/1 1cs++,,,4:ty}dj$'<PPPc**+++++r   c                 v   t           j                            | j        d          }| j        j        }|| j        _        t          j        |           t          j        t           j                            || j        j                             t          j        t           j                            t           j                            || j        j                  d                     t          | j        | j
        j        | j        | j        t                     t          j        |           || j        _        d S )NtestupdategpoPolicies)rB   rC   rD   rE   r&   rm   mkdirr8   rn   r   r7   r,   r(   r   rp   rq   )r%   rC   saves      r   test_update_gpo_aclz3UpgradeProvisionWithLdbTestCase.test_update_gpo_acl   s    w||DL/::z  


dDJ$899:::
bgll41EFF(* * 	+ 	+ 	+4:ty}dj$'<PPPd 
r   c                     | j                             d          }d|                    dd          z  }t          | j        j        |          }|                     |d           d S )Nr0   DC=%s., DC=r+   )r(   getreplacer   r7   r,   r4   )r%   r0   basednoems       r   test_getOEMInfoz/UpgradeProvisionWithLdbTestCase.test_getOEMInfo   s\    G$$5==g666//S"%%%%%r   c                 Z    t          | j        j        | j        j        | j                   d S r   )r   r7   r,   r-   r8   rF   s    r   test_update_dns_accountz7UpgradeProvisionWithLdbTestCase.test_update_dns_account   s0    #DIM493D$(J	0 	0 	0 	0 	0r   c                    | j                             d          }d|                    dd          z  }t          | j        j        |          }t          | j        j        |           t          | j        j        |          }|                     t          |          t          |                     | 	                    t          j        dt          |                               d S )Nr0   r}   r~   r   z.*upgrade to.*)r(   r   r   r   r7   r,   r   r4   r1   rs   rematch)r%   r0   r   r   oem2s        r   test_updateOEMInfoz2UpgradeProvisionWithLdbTestCase.test_updateOEMInfo   s    G$$5==g666//dimV,,,$)-00SXXs4yy111!13t99==>>>>>r   c                    dD ]Z}t           j                            | j        |          }t           j                            |          rt          j        |           [t          t          |                                            d S )N)rI   zsecrets.ldbzsecrets.tdbzsecrets.tdb.bakzsecrets.ntdbrA   )	rB   rC   rD   rE   existsunlinkrJ   r?   tearDown)r%   namerC   rM   s      r   r   z(UpgradeProvisionWithLdbTestCase.tearDown   sp    k 	  	 D7<<d33Dw~~d##  	$-t44==?????r   )r:   r;   r<   rG   rK   rQ   rY   rg   rk   ru   r{   r   r   r   r   __classcell__)rM   s   @r   r?   r?   I   s        5 5 53 3 3 3 3= = =  .M M M- - -, , ,
! 
! 
!& & &0 0 0? ? ?@ @ @ @ @ @ @ @ @r   r?   )NN)#r=   rB   r   rp   sambar   samba.credentialsr   
samba.authr   samba.provisionr   r   samba.upgradehelpersr   r	   r
   r   r   r   r   r   r   r   samba.testsr   r   samba.tests.provisionr   r`   r   environr#   r!   r?   r   r   r   <module>r      s  $ 7 6 				 				        ) ) ) ) ) ) % % % % % % H H H H H H H HJ J J J J J J J J J J J J J J J J J J J J J J J 8 7 7 7 7 7 7 7 8 8 8 8 8 8 



	 	 	 	 !j):;;;]]]NN[1 1 1 1 1.? 1 1 14l@ l@ l@ l@ l@&7 l@ l@ l@ l@ l@r   