a
    cl_h                     @   s   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dZG dd dejjZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG d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                 C   s\   |du rt  }t }| |_tj| |_tj| |_d|_d|_	t
|d|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   Ztransaction_commit)r   r   pathsZsecrets_ldb r   7/usr/lib/python3/dist-packages/samba/tests/provision.pycreate_dummy_secretsdb"   s    r   c                   @   s   e Zd ZdZdd ZdS )ProvisionTestCasezISome simple tests for individual functions in the provisioning code.
    c              	   C   s   t j| jd}t }t j| jd}||_t j||_t j||_d|_	d|_
t|d t d}zB| d|jddd	d
 W ~t | t j|rt | n$~t | t j|rt | 0 d S )Nzsecrets.ldbzsecrets.tdbr   r   r   zLSA SecretszCN=LSA SecretsZCN)ZbasednZ	attributeutf8)r   r   joinZtempdirr   r   r   r   r   r   r   r   r	   assertEqualZ	searchonedecodeunlinkexists)selfr   r   Zsecrets_tdb_pathZldbr   r   r   test_setup_secretsdb:   s*    

z&ProvisionTestCase.test_setup_secretsdbN)__name__
__module____qualname____doc__r#   r   r   r   r   r   6   s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	FindNssTestszTest findnss() function.c                 C   s   dd }|  tt|g  d S )Nc                 S   s   t d S NKeyErroryr   r   r   xR   s    z$FindNssTests.test_nothing.<locals>.x)assertRaisesr+   r   r"   r.   r   r   r   test_nothingQ   s    zFindNssTests.test_nothingc                 C   s   |  dtdd dg d S )Nblac                 S   s   dS )Nr2   r   )r.   r   r   r   <lambda>W       z)FindNssTests.test_first.<locals>.<lambda>r   r   r"   r   r   r   
test_firstV   s    zFindNssTests.test_firstc                 C   s"   dd }|  dt|ddg d S )Nc                 S   s   | dkrt dS )Nr2   har*   r,   r   r   r   r.   Z   s    z'FindNssTests.test_skip_first.<locals>.xr8   Zbloer2   r5   r0   r   r   r   test_skip_firstY   s    zFindNssTests.test_skip_firstN)r$   r%   r&   r'   r1   r7   r9   r   r   r   r   r(   N   s   r(   c                   @   sL   e 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S )Disabledc                 C   s   t | jd S r)   )NotImplementedErrortest_setup_templatesdbr6   r   r   r   r<   c   s    zDisabled.test_setup_templatesdbc                 C   s   t | jd S r)   )r;   test_setup_registryr6   r   r   r   r=   f   s    zDisabled.test_setup_registryc                 C   s   t | jd S r)   )r;   test_setup_samdb_rootdser6   r   r   r   r>   i   s    z!Disabled.test_setup_samdb_rootdsec                 C   s   t | jd S r)   )r;   test_setup_samdb_partitionsr6   r   r   r   r?   l   s    z$Disabled.test_setup_samdb_partitionsc                 C   s   t | jd S r)   )r;   test_provision_dnsr6   r   r   r   r@   o   s    zDisabled.test_provision_dnsc                 C   s   t | jd S r)   )r;   test_provision_ldapbaser6   r   r   r   rA   r   s    z Disabled.test_provision_ldapbasec                 C   s   t | jd S r)   )r;   test_provision_guessr6   r   r   r   rB   u   s    zDisabled.test_provision_guessc                 C   s   t | jd S r)   )r;   test_join_domainr6   r   r   r   rC   x   s    zDisabled.test_join_domainN)r$   r%   r&   r<   r=   r>   r?   r@   rA   rB   rC   r   r   r   r   r:   a   s   r:   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )SanitizeServerRoleTestsc                 C   s$   |  dtd |  dtd d S )Nstandalone serverzmember serverr   r   r6   r   r   r   	test_same~   s    z!SanitizeServerRoleTests.test_samec                 C   s   |  ttd d S )NZfoo)r/   
ValueErrorr   r6   r   r   r   test_invalid   s    z$SanitizeServerRoleTests.test_invalidc                 C   s4   |  dtd |  dtd |  dtd d S )NrE   ZROLE_STANDALONEZ
standalonez"active directory domain controllerdomain controllerrF   r6   r   r   r   
test_valid   s    z"SanitizeServerRoleTests.test_validN)r$   r%   r&   rG   rI   rK   r   r   r   r   rD   |   s   rD   c                   @   s   e Zd Zdd Zdd ZdS )DummyLoggerc                 C   s
   g | _ d S r)   )entriesr6   r   r   r   __init__   s    zDummyLogger.__init__c                 G   s   | j d|| f d S )NINFO)rM   append)r"   textargsr   r   r   info   s    zDummyLogger.infoN)r$   r%   r&   rN   rS   r   r   r   r   rL      s   rL   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ProvisionResultTestsc                 C   s   t  }|| |jS r)   )rL   report_loggerrM   )r"   resultZloggerr   r   r   rU      s    
z"ProvisionResultTests.report_loggerc                 C   s>   t  }d|_t |_d|j_d|j_d|j_d|_t |_	|S )NrJ   ZhostnaamZDOMEINZ	dnsdomeinzS1-1-1)
r   Zserver_roler   namesZhostnameZdomainZ	dnsdomainZ	domainsidr   r   )r"   rV   r   r   r   base_result   s    z ProvisionResultTests.base_resultc                 C   s&   |   }| |}| |g d d S )N))rO   zMOnce the above files are installed, your Samba AD server will be ready to use)rO   z(Server Role:           domain controller)rO   zHostname:              hostnaam)rO   zNetBIOS Domain:        DOMEIN)rO   z DNS Domain:            dnsdomein)rO   zDOMAIN SID:            S1-1-1)rX   rU   r   r"   rV   rM   r   r   r   test_basic_report_logger   s    
z-ProvisionResultTests.test_basic_report_loggerc                 C   s2   |   }d|_d|_| |}| |d d d S )NTZgeheim   )rO   zAdmin password:        geheim)rX   Zadminpass_generatedZ	adminpassrU   r   rY   r   r   r   test_report_logger_adminpass   s    

z1ProvisionResultTests.test_report_logger_adminpassN)r$   r%   r&   rU   rX   rZ   r\   r   r   r   r   rT      s   rT   c                   @   s   e Zd Zdd Zdd ZdS )DetermineNetbiosNameTestsc                 C   s   |  dtd d S )NZAAAAAAAAAAAAAAAZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   r   r6   r   r   r   test_limits_to_15   s    z+DetermineNetbiosNameTests.test_limits_to_15c                 C   s   |  dtd d S )NZBLABLAzbla/blar^   r6   r   r   r   test_strips_invalid   s    z-DetermineNetbiosNameTests.test_strips_invalidN)r$   r%   r&   r_   r`   r   r   r   r   r]      s   r]   )N)r'   r   Zsamba.provisionr   r   r   r   r   r   r   Zsamba.testsZsambar	   r
   r   ZtestsZTestCaseInTempDirr   r(   objectr:   rD   rL   rT   r]   r   r   r   r   <module>   s   $	
	'