
    bh                     .   d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
Zddl
mZmZ ddZ G d dej        j                  Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )zTests for samba.provision.    N)ProvisionNamesProvisionPathsProvisionResultdetermine_netbios_namesanitize_server_rolesetup_secretsdbfindnss)env_loadparmTestCasec                 H   |t                      }t                      }| |_        t          j                            |           |_        t          j                            |           |_        d|_        d|_	        t          |d|          }|                                 |S )zCreate a dummy secrets database for use in tests.

    :param path: Path to store the secrets db
    :param lp: Optional loadparm context. A simple one will
        be generated if not specified.
    N	no.keytabno.dns.keytablp)r
   r   secretsospathdirnameprivate_dirbinddns_dirkeytab
dns_keytabr   transaction_commit)r   r   pathssecrets_ldbs       7/usr/lib/python3/dist-packages/samba/tests/provision.pycreate_dummy_secretsdbr   "   s     
z^^EEM--E--EEL&E!%"555K""$$$    c                       e Zd ZdZd ZdS )ProvisionTestCasezISome simple tests for individual functions in the provisioning code.
    c                 Z   t           j                            | j        d          }t	                      }t           j                            | j        d          }||_        t           j                            |          |_        t           j                            |          |_        d|_	        d|_
        t          |d t                                }	 |                     d|                    dd	                              d
                     ~t          j        |           t           j                            |          rt          j        |           d S d S # ~t          j        |           t           j                            |          rt          j        |           w w xY w)Nzsecrets.ldbzsecrets.tdbr   r   r   zLSA SecretszCN=LSA SecretsCN)basedn	attributeutf8)r   r   jointempdirr   r   r   r   r   r   r   r   r
   assertEqual	searchonedecodeunlinkexists)selfr   r   secrets_tdb_pathldbs        r   test_setup_secretsdbz&ProvisionTestCase.test_setup_secretsdb:   sk   w||DL-88  7<<mDDGOOD11GOOD11"*eTlnn===	,]!mm3CtmTT[[\bcce e e IdOOOw~~.// ,	*+++++, , IdOOOw~~.// ,	*++++,s   >E AF*N)__name__
__module____qualname____doc__r0    r   r   r    r    6   s-         , , , , ,r   r    c                   $    e Zd ZdZd Zd Zd ZdS )FindNssTestszTest findnss() function.c                 P    d }|                      t          t          |g            d S )Nc                     t           NKeyErrorys    r   xz$FindNssTests.test_nothing.<locals>.xR   s    Nr   )assertRaisesr<   r	   r-   r?   s     r   test_nothingzFindNssTests.test_nothingQ   s1    	 	 	(GQ33333r   c                 R    |                      dt          d dg                     d S )Nblac                     dS )NrD   r5   )r?   s    r   <lambda>z)FindNssTests.test_first.<locals>.<lambda>W   s    % r   r(   r	   r-   s    r   
test_firstzFindNssTests.test_firstV   s,    % A ABBBBBr   c                 X    d }|                      dt          |ddg                     d S )Nc                      | dk    rt           dS )NrD   har;   r=   s    r   r?   z'FindNssTests.test_skip_first.<locals>.xZ   s    Ezz4r   rL   bloerD   rG   rA   s     r   test_skip_firstzFindNssTests.test_skip_firstY   s=    	 	 	 	wq65/::;;;;;r   N)r1   r2   r3   r4   rB   rI   rN   r5   r   r   r7   r7   N   sJ        ""4 4 4
C C C< < < < <r   r7   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
Disabledc                 *    t          | j                  r:   )NotImplementedErrortest_setup_templatesdbrH   s    r   rS   zDisabled.test_setup_templatesdbc   s    !$"=>>>r   c                 *    t          | j                  r:   )rR   test_setup_registryrH   s    r   rU   zDisabled.test_setup_registryf   s    !$":;;;r   c                 *    t          | j                  r:   )rR   test_setup_samdb_rootdserH   s    r   rW   z!Disabled.test_setup_samdb_rootdsei   s    !$"?@@@r   c                 *    t          | j                  r:   )rR   test_setup_samdb_partitionsrH   s    r   rY   z$Disabled.test_setup_samdb_partitionsl   s    !$"BCCCr   c                 *    t          | j                  r:   )rR   test_provision_dnsrH   s    r   r[   zDisabled.test_provision_dnso   s    !$"9:::r   c                 *    t          | j                  r:   )rR   test_provision_ldapbaserH   s    r   r]   z Disabled.test_provision_ldapbaser   s    !$">???r   c                 *    t          | j                  r:   )rR   test_provision_guessrH   s    r   r_   zDisabled.test_provision_guessu   s    !$";<<<r   c                 *    t          | j                  r:   )rR   test_join_domainrH   s    r   ra   zDisabled.test_join_domainx   s    !$"7888r   N)r1   r2   r3   rS   rU   rW   rY   r[   r]   r_   ra   r5   r   r   rP   rP   a   s        ? ? ?< < <A A AD D D; ; ;@ @ @= = =9 9 9 9 9r   rP   c                        e Zd Zd Zd Zd ZdS )SanitizeServerRoleTestsc                     |                      dt          d                     |                      dt          d                     d S )Nstandalone serverzmember serverr(   r   rH   s    r   	test_samez!SanitizeServerRoleTests.test_same~   s`    ,./BCC	E 	E 	E.??	A 	A 	A 	A 	Ar   c                 H    |                      t          t          d           d S )Nfoo)r@   
ValueErrorr   rH   s    r   test_invalidz$SanitizeServerRoleTests.test_invalid   s!    *&:EBBBBBr   c                     |                      dt          d                     |                      dt          d                     |                      dt          d                     d S )Nre   ROLE_STANDALONE
standalonez"active directory domain controllerdomain controllerrf   rH   s    r   
test_validz"SanitizeServerRoleTests.test_valid   s     !233	5 	5 	5 	 ..	0 	0 	0 	0 !455	7 	7 	7 	7 	7r   N)r1   r2   r3   rg   rk   rp   r5   r   r   rc   rc   |   sG        A A AC C C	7 	7 	7 	7 	7r   rc   c                       e Zd Zd Zd ZdS )DummyLoggerc                     g | _         d S r:   )entriesrH   s    r   __init__zDummyLogger.__init__   s    r   c                 D    | j                             d||z  f           d S )NINFO)rt   append)r-   textargss      r   infozDummyLogger.info   s'    VTD[122222r   N)r1   r2   r3   ru   r{   r5   r   r   rr   rr      s2          3 3 3 3 3r   rr   c                   &    e Zd Zd Zd Zd Zd ZdS )ProvisionResultTestsc                 V    t                      }|                    |           |j        S r:   )rr   report_loggerrt   )r-   resultloggers      r   r   z"ProvisionResultTests.report_logger   s'    V$$$~r   c                     t                      }d|_        t                      |_        d|j        _        d|j        _        d|j        _        d|_        t                      |_	        |S )Nro   hostnaamDOMEIN	dnsdomeinzS1-1-1)
r   server_roler   nameshostnamedomain	dnsdomain	domainsidr   r   )r-   r   s     r   base_resultz ProvisionResultTests.base_result   sZ     ""0%'' *&!,#%''r   c                     |                                  }|                     |          }|                     |g d           d S )N))rw   zMOnce the above files are installed, your Samba AD server will be ready to use)rw   z(Server Role:           domain controller)rw   zHostname:              hostnaam)rw   zNetBIOS Domain:        DOMEIN)rw   z DNS Domain:            dnsdomein)rw   zDOMAIN SID:            S1-1-1)r   r   r(   r-   r   rt   s      r   test_basic_report_loggerz-ProvisionResultTests.test_basic_report_logger   sY    !!##$$V,, #7 #7 #7 	8 	8 	8 	8 	8r   c                     |                                  }d|_        d|_        |                     |          }|                     |d         d           d S )NTgeheim   )rw   zAdmin password:        geheim)r   adminpass_generated	adminpassr   r(   r   s      r   test_report_logger_adminpassz1ProvisionResultTests.test_report_logger_adminpass   sf    !!##%)"#$$V,,C	E 	E 	E 	E 	Er   N)r1   r2   r3   r   r   r   r   r5   r   r   r}   r}      sU          
	 	 	
8 
8 
8E E E E Er   r}   c                       e Zd Zd Zd ZdS )DetermineNetbiosNameTestsc                 L    |                      dt          d                     d S )NAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar(   r   rH   s    r   test_limits_to_15z+DetermineNetbiosNameTests.test_limits_to_15   s'    #9(#C#CDDDDDr   c                 L    |                      dt          d                     d S )NBLABLAzbla/blar   rH   s    r   test_strips_invalidz-DetermineNetbiosNameTests.test_strips_invalid   s'    #9)#D#DEEEEEr   N)r1   r2   r3   r   r   r5   r   r   r   r      s:        E E EF F F F Fr   r   r:   )r4   r   samba.provisionr   r   r   r   r   r   r	   samba.testssambar
   r   r   testsTestCaseInTempDirr    r7   objectrP   rc   rr   r}   r   r5   r   r   <module>r      s  $ !   				                      . . . . . . . .   (, , , , ,5 , , ,0< < < < <8 < < <&9 9 9 9 9v 9 9 967 7 7 7 7h 7 7 7.3 3 3 3 3& 3 3 3$E $E $E $E $E8 $E $E $ENF F F F F F F F F Fr   