
    bt1                     >    d dl Z d dlZd dlmZ  G d de          ZdS )    N)SambaToolCmdTestc                   t     e Zd ZdZg ZdZ fdZ fdZd Zd Z	d Z
d Zd	 Zd
 Zd Zi fdZd Zd Z xZS )OUCmdTestCasez#Tests for samba-tool ou subcommandsNc           	         t          t          |                                            |                     ddt          j        d         z  dt          j        d         dt          j        d                   | _        g | _        | j                            | 	                    dd	i                     | j                            | 	                    dd
i                     | j                            | 	                    ddi                     | j                            | 	                    ddi                     | j        D ]}| 
                    |          \  }}}|                     |||           |                     |dd           | j                            d|d         z            }|                     d|z  |           |                     |d                   }|                     |           |                     d|                    d          z  |d                    |                     d|                    d          z  |d                    d S )Nz-Hz	ldap://%s	DC_SERVERz-UDC_USERNAMEz%DC_PASSWORDnametestou1testou2testou3testou4 $There shouldn't be any error messageOU=%sAdded ou "%s"%sdescription)superr   setUpgetSamDBosenvironsamdbousappend	_randomOU
_create_ouassertCmdSuccessassertEqualnormalize_dn_in_domainassertIn_find_ouassertIsNotNoneget)selfouresultouterr
full_ou_dnfound	__class__s          ;/usr/lib/python3/dist-packages/samba/tests/samba_tool/ou.pyr   zOUCmdTestCase.setUp    s-   mT""((***]]4rz+7N)N)N13M1J1J1JBJWdLeLe#fh h
	':;;<<<	':;;<<<	':;;<<<	':;;<<< ( 	1 	1B!%!4!4VS#!!&#s333S"&LMMM::7RZ;OPPJMM/J6<<<MM"V*--E  '''TEIIf$5$55r&zBBBTEIIm$<$<< /1 1 1 1	1 	1    c           	      *   t          t          |                                            | j        D ]b}|                     |d                   rE|                     ddd|d         z            \  }}}|                     |||d|d         z             cd S )Nr
   r'   deleter   Failed to delete ou '%s')r   r   tearDownr   r#   	runsubcmdr   )r&   r'   r(   r)   r*   r-   s        r.   r3   zOUCmdTestCase.tearDown;   s    mT""++---( 	O 	OB}}RZ(( O%)^^D(4;bj4H&J &J"c%%fc3&@2f:&MO O O		O 	Or/   c           	      0   | j         D ]G}|                     |          \  }}}|                     |d           |                     d|           H| j         D ]}|                     ddd|d         z            \  }}}|                     |||d|d         z             |                     |d                   }|                     |d|d         z             | j         D ]}|                     dd	d|d         z  d
|d         z            \  }}}|                     |||           |                     |dd           | j	        
                    d|d         z            }|                     d|z  |           |                     |d                   }|                     d|                    d          z  d|d         z             | j         D ]}| j	        
                    d|d         z            }|                     ddt          |                    \  }}}|                     |||d|d         z             |                     |d                   }|                     |d|d         z             | j         D ]}| j	        
                    d|d         z            }|                     dd	t          |          d
|d         z            \  }}}|                     |||           |                     |dd           | j	        
                    d|d         z            }|                     d|z  |           |                     |d                   }|                     d|                    d          z  d|d         z             dS )z3This tests the "ou create" and "ou delete" commandszSucceeded to add existing ouzalready existsr'   r1   r   r
   r2   zDeleted ou '%s' still existsadd--description=%sr   r   r   r   r   N)r   r   assertCmdFailr"   r4   r   r#   assertIsNoner    r   r!   r%   str)r&   r'   r(   r)   r*   r,   r+   s          r.   
test_newouzOUCmdTestCase.test_newouE   s     ( 	1 	1B!%!4!4VS#v'EFFFMM*C0000 ( 	K 	KB!%h026
A; "< "<VS#!!&#s"<r&z"IK K KMM"V*--Ee<r&zIK K K K ( 	1 	1B!%eWr&z1"R%66"8 "8VS# !!&#s333S"&LMMM::7RZ;OPPJMM/J6<<<MM"V*--ETEIIdOO3"RZ/1 1 1 1 ( 	K 	KB::7RZ;OPPJ!%hJ!P!PVS#!!&#s"<r&z"IK K KMM"V*--Ee<r&zIK K K K ( 	1 	1B::7RZ;OPPJ!%eS__"R%66"8 "8VS# !!&#s333S"&LMMM::7RZ;OPPJMM/J6<<<MM"V*--ETEIIdOO3"RZ/1 1 1 1	1 	1r/   c                    |                      dd          \  }}}|                     |||d           d}| j                            | j                                        t
          j        |dg          }|                     t          |          dk    d           |D ]@}|	                    dd	          }| 
                    |t          |          d
|z            }Ad S )Nr'   listError running list (objectClass=organizationalUnit)r
   basescope
expressionattrsr   no ous found in samdbidxou '%s' not found)r4   r   r   search	domain_dnldbSCOPE_SUBTREE
assertTruelenr%   assertMatchr:   )	r&   r(   r)   r*   search_filteroulistouobjr
   r,   s	            r.   	test_listzOUCmdTestCase.test_list   s    !^^D&99cfc30DEEE:""
(<(<(>(>),):.;*0 # 3 3
 	Fa)@AAA 	A 	AE99V9++D$$S#d))%84%?A AEE	A 	Ar/   c                    t          | j                                                  }|                     ddd|          \  }}}|                     |||d           d}| j                            |t          j        |dg          }|                     t          |          dk    d	           |D ]@}|
                    dd
          }|                     |t          |          d|z            }	Ad S )Nr'   r=   z-br>   r?   r
   r@   r   rE   rF   rH   )r:   r   rJ   r4   r   rI   rK   rL   rM   rN   r%   rO   )
r&   base_dnr(   r)   r*   rP   rQ   rR   r
   r,   s
             r.   test_list_base_dnzOUCmdTestCase.test_list_base_dn   s   dj**,,--!^^D&$HHcfc30DEEE:""),):.;*0 # 3 3
 	Fa)@AAA 	A 	AE99V9++D$$S#d))%84%?A AEE	A 	Ar/   c           	          | j         D ]}d}|d         |z   }|                     ddd|d         z  d|z            \  }}}|                     |||d|d         z             |                     |d                   }|                     |d|d         z             |                     |          }|                     |d|z             |                     ddd|z  d|d         z            \  }}}|                     |||d|z             d S )	N
RenameTestr
   r'   renamer   zFailed to rename ou '%s'zRenamed ou '%s' still existszRenamed ou '%s' does not exist)r   r4   r   r#   r9   r$   )r&   r'   ousuffix	newounamer(   r)   r*   r,   s           r.   test_renamezOUCmdTestCase.test_rename   sr   ( 	J 	JB#H6
X-I!%h07"V*0D07)0C"E "EVS# !!&#s"<r&z"IK K KMM"V*--Ee<r&zIK K KMM),,E  !AI!MO O O "&h07)0C07"V*0D"F "FVS# !!&#s"<y"HJ J J J%	J 	Jr/   c                    |                      ddi          }|                     |          \  }}}|                     |||           | j        D ]}|                     |d                                       d          }|                     ddd|d         z  d|d         z            \  }}}|                     |||d|d         z             |                     |dd	           | j        	                    d|d         z            }| 
                    d
|z  |           |                     |d                   }|                     |                    d          |d|d         z             t          j        | j        d|d         d|d         d| j                                                  }	|                     |                    d          |	d|d         z             |                     ddd|	z  d|                                z            \  }}}|                     |||d|d         z             |                     ddd|d         z            \  }}}|                     |||d|d         z             d S )Nr
   parentOUdnr'   mover   zFailed to move ou '%s'r   r   zMoved ou "%s"z+Moved ou '%s' still exists with the same dnzOU=z,OU=,zMoved ou '%s' does not existr   r1   r2   )r   r   r   r   r#   r%   r4   r    r   r!   r"   assertNotEqualsrK   DnrJ   parent)
r&   parentour(   r)   r*   r'   olddnr+   r,   newexpecteddns
             r.   	test_movezOUCmdTestCase.test_move   s   >>6:"677!__X66cfc3///( 	I 	IBMM"V*--11$77E!%f07"V*0D07(6:J0J"L "LVS# !!&#s":RZ"GI I IS"&LMMM::7RZ;OPPJMM/J6<<<MM"V*--E  4%!N!#F",- - -  F4::$&vJJJ0@0@0@$(J$8$8$:$:$:$<= =M UYYt__m< j)* * * "&f04}0D04u||~~0E"G "GVS# !!&#s":RZ"GI I I I "^^D(,3hv6F,FH Hcfc388F;KK	M 	M 	M 	M 	Mr/   c                    |                      ddd| j                                        z  d          \  }}}|                     |||d           |                     |dd           | j                            | j                                        t          j        g           }|                     t          |          d	k    d
           |D ]3}| 
                    |t          |j                  d|j        z            }4d S )Nr'   listobjectsr   	--full-dnzFailed to list ou's objectsr   r   )rA   rB   rD   r   zno objects foundobject '%s' not found)r4   r   rJ   r   r    rI   rK   SCOPE_ONELEVELrM   rN   rO   r:   r_   )r&   r(   r)   r*   objlistobjr,   s          r.   test_listobjectszOUCmdTestCase.test_listobjects   s   !^^D-,04:3G3G3I3I,I,79 9c 	fc3;	= 	= 	=b"HIII*##)=)=)?)?*-*<*, $ . . 	Gq(*<=== 	G 	GC$$S#cf++%<sv%EG GEE	G 	Gr/   c                    |                      ddd          \  }}}|                     |||d           |                     |dd           d}| j                            | j                                        t          j        |g           }|                     t          |          d	k    d
           |D ]3}| 
                    |t          |j                  d|j        z            }4d S )Nr'   r=   rk   zFailed to list ousr   r   r?   r@   r   zno ou objects foundrl   )r4   r   r    r   rI   rJ   rK   rL   rM   rN   rO   r:   r_   )r&   r(   r)   r*   filterrn   ro   r,   s           r.   test_list_full_dnzOUCmdTestCase.test_list_full_dn   s   !^^D&,79 9cfc32	4 	4 	4b"HIII3*##)=)=)?)?*-*;/5*, $ . . 	Gq(*?@@@ 	G 	GC$$S#cf++%<sv%EG GEE	G 	Gr/   c                     |                                  |                      d          d}|                    |           |S )zRcreate an ou with random attribute values, you can specify base
        attributesd   )count)r
   r   )
randomNameupdate)r&   rA   r'   s      r.   r   zOUCmdTestCase._randomOU  sD    
 OO%%???55
 
 			$	r/   c                 V    |                      ddd|d         z  d|d         z            S )Nr'   r6   r   r
   r7   r   )r4   )r&   r'   s     r.   r   zOUCmdTestCase._create_ou  s7    ~~dE7RZ+?02m3DDF F 	Fr/   c                     dt          j        |          ddd| j                                        d}| j                            | j                                        t           j        |          }|r|d         S d S )Nz(&(name=z)(objectCategory=z1CN=Organizational-Unit,CN=Schema,CN=Configurationra   z)))rA   rB   rC   r   )rK   binary_encoder   rJ   rI   rL   )r&   r
   rP   rQ   s       r.   r#   zOUCmdTestCase._find_ou  s     +D1111MMM*..00002 ""
(<(<(>(>),):.; # = =  	!94r/   )__name__
__module____qualname____doc__r   r   r   r3   r;   rS   rV   r\   rh   rp   rs   r   r   r#   __classcell__)r-   s   @r.   r   r      s       --
CE1 1 1 1 16O O O O O;1 ;1 ;1zA A A$A A A&J J J,&M &M &MPG G G"G G G$   	 	 	 	F F F      r/   r   )r   rK   samba.tests.samba_tool.baser   r    r/   r.   <module>r      sj   , 
			 



 8 8 8 8 8 8G G G G G$ G G G G Gr/   