
    b                         d Z ddlZddlZddlmZmZ ddlmZmZ ddlm	Z	m
Z
 ddlZddlZddlmZ ddlmZ d Zd	 Z G d
 de	          Z G d de          Z G d de          ZdS )zFTests for the samba3sam LDB module, which maps Samba3 LDAP to AD LDAP.    N)SCOPE_DEFAULT
SCOPE_BASE)Ldbsubstitute_var)TestCaseInTempDirenv_loadparm)system_session)
attrgetterc                 Z   ddg}|D ]e}t           j                            t           j                            t                    |          }t           j                            |          r nft          t           j                            ||           d                                          S )Nz../../../../../testdata/samba3z../../../../testdata/samba3r)ospathjoindirname__file__existsopenread)filenamepathspdatadirs       7/usr/lib/python3/dist-packages/samba/tests/samba3sam.pyread_datafiler   !   s    -*,E  ',,rwx88!<<7>>'"" 	E	Wh//55::<<<    c                 $    t          |           d S N)print)ltexts     r   	ldb_debugr!   +   s    	$KKKKKr   c                   8     e Zd ZdZd Z fdZ fdZd Z xZS )MapBaseTestCasez!Base test case for mapping tests.c                      |j         d|j        d|j        z   d            |j         ddd            |j         dd|j        z  d|j        z  gd	d
gdd           d S )Nz@MAP=samba3samsambaDomainName=TESTS,)dnz@FROMz@TOz@MODULESzrootdse,dsdb_paged_results,server_sort,asq,samldb,password_hash,operational,objectguid,rdn_name,samba3sam,samba3sid,show_deleted_ignore,dsdb_flags_ignore,partition)r&   z@LISTz
@PARTITIONz%sz@ATTRIBUTESz
@INDEXLISTz*:)r&   	partitionreplicateEntriesmodules)addbasednbasedn_casefold)selfldbs3s4s       r   setup_moduleszMapBaseTestCase.setup_modules2   s    ')029<> > 	? 	? 	? 	z @A A 	B 	B 	B 	|#r'9:#r'9:<&3\%B 	" " 	# 	# 	# 	# 	#r   c                 T   t                      | _        | j                            dd           | j                            dd           t          t          |                                            d }d }t          j                            | j	        d          | _
        d| j
        z   | _        | j	         G fdd	          } |d
|| j                  | _         |d|| j                  | _        | j                                         | j                                         d S )N	workgroupTESTSznetbios namec                     |d| S )Nz,sambaDomainName=TESTS, r+   rdns     r   make_dnz&MapBaseTestCase.setUp.<locals>.make_dnF   s    47CC@@r   c                     |d| S )N,r6   r7   s     r   	make_s4dnz(MapBaseTestCase.setUp.<locals>.make_s4dnI   s    !cc66**r   zsam.ldbtdb://c                   B    e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	S )
%MapBaseTestCase.setUp.<locals>.TargetzQSimple helper class that contains data for a specific SAM
            connection.c                    t          |t                                | _        | j                            dd           || _        t          j        | j        |                                          | _        d| j        i| _	        t          j                            d| j        z            | _        d| j        z   | _        || _        d S )Nlpsession_infoskip_allocate_sidstrueBASEDNz%s.ldbr=   )r   r	   db
set_opaquer+   r.   Dnget_casefoldr,   	substvarsr   r   r   fileurl_dn)r-   r+   r&   rB   tempdirs       r   __init__z.MapBaseTestCase.setUp.<locals>.Target.__init__U   s    .2B2BCCC""#7@@@$'*vdgv'>'>'K'K'M'M$"*DK!8GLL(T=Q2QRR	#di/r   c                 8    |                      | j        |          S r   )rN   r+   )r-   r8   s     r   r&   z(MapBaseTestCase.setUp.<locals>.Target.dn_   s    xxS111r   c                 @    | j                             | j                  S r   )rG   connectrM   )r-   s    r   rS   z-MapBaseTestCase.setUp.<locals>.Target.connectb   s    wtx000r   c                 J    |                      t          |                     d S r   )add_ldifr   )r-   r   s     r   
setup_dataz0MapBaseTestCase.setUp.<locals>.Target.setup_datae   s"    mD1122222r   c                 ,    t          || j                  S r   )r   rK   )r-   r    s     r   substz+MapBaseTestCase.setUp.<locals>.Target.substh   s    %dDN;;;r   c                 `    | j                             |                     |                     d S r   )rG   rU   rX   r-   ldifs     r   rU   z.MapBaseTestCase.setUp.<locals>.Target.add_ldifk   s*      D!1!122222r   c                 `    | j                             |                     |                     d S r   )rG   modify_ldifrX   rZ   s     r   r]   z1MapBaseTestCase.setUp.<locals>.Target.modify_ldifn   s*    ##DJJt$4$455555r   N)__name__
__module____qualname____doc__rP   r&   rS   rV   rX   rU   r]   )rO   s   r   Targetr?   Q   s             2 2 21 1 13 3 3< < <3 3 36 6 6 6 6r   rb   zdc=vernstok,dc=nlzcn=Samba3Sam)r   rB   setsuperr#   setUpr   r   r   rO   ldbfileldburlsamba4samba3rS   )r-   r9   r<   rb   rO   	__class__s       @r   re   zMapBaseTestCase.setUp@   s:   ..K)))NG,,,ot$$**,,,	A 	A 	A	+ 	+ 	+ w||DL)<<-,	6 	6 	6 	6 	6 	6 	6 	6 	6 	6@ f0)TWEEf^Wdg>>r   c                    t          j        | j                   t          j        | j        j                   t          j        | j        j                   d| j        z  }t           j                            |d          }t           j                            |          r(t          j        |           t          j	        |           t          t          |                                            d S )Nz%s.dzmetadata.tdb)r   unlinkrf   ri   rL   rh   r   r   r   rmdirrd   r#   tearDown)r-   pdirmdatarj   s      r   rn   zMapBaseTestCase.tearDownw   s    
	$,
	$+"###
	$+"###$T>227>>%   	IeHTNNNot$$--/////r   c                     t           j                            t           j        j        j        |d                   }t           j        j                            |          }|                     ||           d S )Nr   )sambandr
ndr_unpackdcerpcsecuritydom_sidassertEqual)r-   r    ndr_sidsid_obj1sid_obj2s        r   assertSidEqualszMapBaseTestCase.assertSidEquals   s^    9''(=(E(/
4 4<(00668,,,,,r   )	r^   r_   r`   ra   r1   re   rn   r|   __classcell__rj   s   @r   r#   r#   /   sv        ++# # #5 5 5 5 5n	0 	0 	0 	0 	0- - - - - - -r   r#   c                   B     e Zd Z fdZd Zd Zd Zd Zd Zd Z	 xZ
S )Samba3SamTestCasec                 >   t          t          |                                            t          | j        | j        t                                } |j        dd           | j        	                    d           t          d          } |j        | j                            |                     |                     || j        | j                   ~t          | j        | j        t                                | _        | j                            dd           d S )NrA   rD   rE   zsamba3.ldifprovision_samba3sam.ldif)rd   r   re   r   rg   rB   r	   rH   ri   rV   r   rU   rh   rX   r1   r.   r-   r.   r[   rj   s      r   re   zSamba3SamTestCase.setUp   s    &&,,...$+$'8H8HIII+V444}---788T[&&t,,---3T[999t{tw^=M=MNNN0&99999r   c                     | j                             d          }|                     t          |          d           |                     t	          |d         d                   d           dS )z"Looking up by non-mapped attributez(cn=Administrator)
expression   r   cnAdministratorNr.   searchrx   lenstrr-   msgs     r   test_search_non_mappedz(Samba3SamTestCase.test_search_non_mapped   s`    hoo)=o>>S1%%%SVD\**O<<<<<r   c                     | j                             d          }|                     t          |          d           |                     t	          |d         d                   d           dS )zLooking up by mapped attributez(name=Backup Operators)r   r   r   namezBackup OperatorsNr   r   s     r   test_search_mappedz$Samba3SamTestCase.test_search_mapped   sa    hoo)BoCCS1%%%SVF^,,.@AAAAAr   c                     | j                             d          }|                     t          |          d           dS )z+Looking up by old name of renamed attributez(displayName=Backup Operators)r   r   N)r.   r   rx   r   r   s     r   test_old_name_of_renamedz*Samba3SamTestCase.test_old_name_of_renamed   s:    hoo)IoJJS1%%%%%r   c                    | j                             d          }|                     t          |          d           |                     t	          |d         j                  d           |                     d|d         v            |                     d|d         d                    t          |d         d                   }|                     |t          d	g                     d
S )z&Looking up mapped entry containing SIDz(cn=Replicator)r   r   r   z)cn=Replicator,ou=Groups,dc=vernstok,dc=nl	objectSid.S-1-5-21-4231626423-2410014848-2360679739-1052objectClasss   groupN)	r.   r   rx   r   r   r&   
assertTruer|   rc   )r-   r   ocs      r   test_mapped_containing_sidz,Samba3SamTestCase.test_mapped_containing_sid   s    hoo):o;;S1%%%SVYE	G 	G 	Gs1v-...M VK0	2 	2 	2Q&''S(__-----r   c                     | j                             d          }|                     t          d |D                       t          ddg                     dS )zLooking up by objectClassz'(|(objectClass=user)(cn=Administrator))r   c                 6    g | ]}t          |j                  S r6   )r   r&   ).0ms     r   
<listcomp>z=Samba3SamTestCase.test_search_by_objclass.<locals>.<listcomp>   s     555Ac!$ii555r   z1unixName=Administrator,ou=Users,dc=vernstok,dc=nlz*unixName=nobody,ou=Users,dc=vernstok,dc=nlN)r.   r   rx   rc   r   s     r   test_search_by_objclassz)Samba3SamTestCase.test_search_by_objclass   ss    hoo)RoSS5555566RKM N N	O 	O 	O 	O 	Or   c                 "   | j                             dddddd           | j                             ddt          g d	          }|                     t          |          d
           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           | j                             dddddd           | j                             dg d          }|                     t          |          d
           |                     t          |d         d                   d           |                     t          |d         d                   d           | j                             dg d          }|                     t          |          d
           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           | j                             dg d          }|                     t          |          d
           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           | j        j                            d          }| 	                    t          |          d
k               |                     t          |d         d                   d            |                     t          |d         d!                   d           | j         
                    d"           | j                             d          }| 	                    t          |          d
k               |                     t          |d         d                   d           |                     t          |d         d#                   d$           | j         
                    d%           | j                             d          }| 	                    t          |          d
k               |                     t          |d         d#                   d           | j         
                    d&           | j                             d          }| 	                    t          |          d
k               | 	                    d#|d         v           | j                             dd'           | j                             d(          }|                     t          |          d
           |                     t          |d         j                  d'           | j                             d'           | j                             d(          }|                     t          |          d           d S ))Nzcn=FoobarBlieFooTRUE)r&   fooblahr   showInAdvancedViewOnlyz(cn=Foo))r   r   r   r   r   basescopeattrsr   r   r   r   r   z%cn=Niemand,cn=Users,dc=vernstok,dc=nluserbingeheimNiemand)r&   r   unixNamesambaUnicodePwdr   z(unixName=bin))r   r   r&   r   r   r   r   r   z)(&(unixName=bin)(sambaUnicodePwd=geheim))r   z)(|(unixName=bin)(sambaUnicodePwd=geheim))z(cn=Niemand)r   sambaSIDz.S-1-5-21-4231626423-2410014848-2360679739-2001displayNameza
dn: cn=Niemand,cn=Users,dc=vernstok,dc=nl
changetype: modify
add: description
description: Blah
descriptionBlahze
dn: cn=Niemand,cn=Users,dc=vernstok,dc=nl
changetype: modify
replace: description
description: Blie
zR
dn: cn=Niemand,cn=Users,dc=vernstok,dc=nl
changetype: modify
delete: description
z&cn=Niemand2,cn=Users,dc=vernstok,dc=nlz(cn=Niemand2))r.   r*   r   r   rx   r   r   ri   rG   r   r]   renamer&   deleter   s     r   test_s3sam_modifyz#Samba3SamTestCase.test_s3sam_modify   s   &,. . 	/ 	/ 	/ hoo($.$S$S$S  U U 	S1%%%SV$<=>>GGGSVE]++U333SVF^,,f555 	C%+"')1%	' ' 	( 	( 	( hoo)9$O$O$O  Q QS1%%%SVD\**I666SV$5677BBB hoo)T$O$O$O  Q QS1%%%SVD\**I666SVJ/00%888SV$5677BBB hoo)T$O$O$O  Q Q 	S1%%%SVD\**I666SVJ/00%888SV$5677BBB kn##~#>>CA&&&SVJ/00J	L 	L 	LSVM233Y??? 	  	 	 	 hooo88CA&&&SVD\**I666SVM233V<<< 	  	 	 	 hooo88CA&&&SVM233V<<< 	  	 	 	 hooo88CA&&&SV3444 	?@	B 	B 	B hooo99S1%%%SVYB	D 	D 	D 	@AAA hooo99S1%%%%%r   )r^   r_   r`   re   r   r   r   r   r   r   r}   r~   s   @r   r   r      s        
: 
: 
: 
: 
:= = =B B B& & &

. 
. 
.O O Ot& t& t& t& t& t& t&r   r   c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )MapTestCasec                 
   t          t          |                                            t          | j        | j        t                                } |j        dd           t          d          } |j	        | j
                            |                     |                     || j        | j
                   ~t          | j        | j        t                                | _        | j                            dd           d S )NrA   rD   rE   r   )rd   r   re   r   rg   rB   r	   rH   r   rU   rh   rX   r1   ri   r.   r   s      r   re   zMapTestCase.setUp4  s    k4  &&((($+$'8H8HIII+V444788T[&&t,,---3T[999t{tw^=M=MNNN0&99999r   c                 j     j         j                            d j         j        z   ddgdddd            j                            d j                            d	          z   d
z               j                            d j                            d          z   dz               j                             j                            d          ddddddddd	            j                             j                            d          ddddddddd	            j         j                             j                             d          ddddddddd	            j         j                             j                             d          ddddddd            j         j                             j                             d          ddddddd            j                            d          } j                            |t          d d!g"          } 
                    t          |          d#            
                    t          |d$         j                  |                                d |d$         v            
                    t          |d$         d!                   d            j                             d          } j         j                            |t          g d%"          } 
                    t          |          d#            
                    t          |d$         j                  |                                d |d$         v                                d!|d$         v            
                    t          |d$         d&                   d            j                            d          } j                            |t          d d!g"          } 
                    t          |          d#            
                    t          |d$         j                  |            
                    t          |d$         d                    d            
                    t          |d$         d!                   d            j                             d          } j         j                            |t          g d%"          } 
                    t          |          d#            
                    t          |d$         j                  |                                d |d$         v                                d!|d$         v            
                    t          |d$         d&                   d            j                            d't          d d!g(          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                      
                    t          |d$         d                    d            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            j                            d,t          d d!g(          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            j                            d-t          d d!g(          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            j                            d.d/t          g d01          } 
                    t          |          d2           t          |t!          d*          +          } 
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d                                d|d#         d3                                         d3|d#         v             
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d                                d|d$         d3                                         d3|d$         v             j                            d4g d56          } 
                    t          |          d#            
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d$         d7                   d8            j                            d9d d!g6          } 
                    t          |          d$           g d:} j                            d;|6          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d$         d<         d$                   d=            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            
                    t          |d#         d<         d$                   d=            j                            d>|6          } 
                    t          |          d?           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d$         d<         d$                   d=            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t%          |d#         d<                   t%          d@g                      
                    t          |d)         j                   j                            d                      
                    t          |d)         d                    d            
                    t          |d)         d!                   d            
                    t          |d)         d<         d$                   d=            j                            dAd d!g6          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                      
                    t          |d$         d                    d            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            j                            dBd d!g6          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            j                            dCd d!g6          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                      
                    t          |d$         d                    d            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d           d d!g} j                            dD|6          } 
                    t          |          d$            j                            dE|6          } 
                    t          |          d$            j                            dFd d!g6          } 
                    t          |          d)           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                      
                    t          |d$         d                    d            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            j                            dGd d!g6          } 
                    t          |          d?           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v             
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v             
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                      
                    t          |d)         d                    d            
                    t          |d)         d!                   d            j                            dHd d!g6          } 
                    t          |          d?           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v             
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                      
                    t          |d)         d                    d            
                    t          |d)         d!                   d            j                            dId d!g6          } 
                    t          |          d$            j                            dJd d!g6          } 
                    t          |          dK           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                                          d |d)         v            
                    t          |d)         d!                   d            
                    t          |d?         j                   j                            d                      
                    t          |d?         d                    d            
                    t          |d?         d!                   d            j                            dLd d!g6          } 
                    t          |          d2           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            j                            dMd d!g6          } 
                    t          |          dK           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                                          d |d)         v            
                    t          |d)         d!                   d            
                    t          |d?         j                   j                            d                      
                    t          |d?         d                    d            
                    t          |d?         d!                   d            j                            dNd d!g6          } 
                    t          |          dK           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                      
                    t          |d)         d                    d            
                    t          |d)         d!                   d            
                    t          |d?         j                   j                            d                      
                    t          |d?         d                    d            
                    t          |d?         d!                   d            j                            dOd d!g6          } 
                    t          |          dK           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                                          d |d)         v            
                    t          |d)         d!                   d            
                    t          |d?         j                   j                            d                      
                    t          |d?         d                    d            
                    t          |d?         d!                   d            j                            dPd d!g6          }t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                                          d |d)         v            
                    t          |d)         d!                   d            
                    t          |d?         j                   j                            d                      
                    t          |d?         d                    d            
                    t          |d?         d!                   d            j                            dQd d!g6          } 
                    t          |          dR           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                      
                    t          |d#         d                    d            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                      
                    t          |d)         d                    d            
                    t          |d)         d!                   d            j                            dSd d!g6          } 
                    t          |          dR           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                      
                    t          |d)         d                    d            
                    t          |d)         d!                   d            j                            dTd d!g6          } 
                    t          |          dU           t          |t!          d*          +          } 
                    t          |d$         j                   j                            d                                          d |d$         v            
                    t          |d$         d!                   d            
                    t          |d#         j                   j                            d                                          d |d#         v            
                    t          |d#         d!                   d            
                    t          |d)         j                   j                            d                                          d |d)         v            
                    t          |d)         d!                   d            
                    t          |d?         j                   j                            d                      
                    t          |d?         d                    d            
                    t          |d?         d!                   d            
                    t          |d2         j                   j                            d                      
                    t          |d2         d                    d            
                    t          |d2         d!                   d            fdVdWD             }|D ]} j                            |           d/S )Xz$Running search tests on mapped data.r%   sambaDomaintopz)S-1-5-21-4231626423-2410014848-23606797392000r4   )r&   objectclassr   sambaNextRidsambaDomainName
dn: zcn=Domain Usersz^
objectClass: group
cn: Domain Users
objectSid: S-1-5-21-4231626423-2410014848-2360679739-513
zcn=Xz
objectClass: user
cn: X
codePage: x
revision: x
dnsHostName: x
nextRid: y
lastLogon: x
description: x
objectSid: S-1-5-21-4231626423-2410014848-2360679739-1052
zcn=YYxy)	r&   r   r   codePagerevisiondnsHostNamenextRid	lastLogonr   zcn=ZZzzcn=AposixAccountAr   z-S-1-5-21-4231626423-2410014848-2360679739-512)	r&   r   r   r   sambaBadPasswordCountsambaLogonTimer   r   sambaPrimaryGroupSIDzcn=BB)r&   r   r   r   r   r   r   zcn=CCr   r   r   r   r   r   )r   r   r   r   z(revision=x)r   r   r      r&   )keyz(description=y)z(badPwdCount=x)z(objectSid=*)N)r   r   r   r      r   z(primaryGroupID=512))r   r   primaryGroupIDr   r   512z(sambaBadPasswordCount=*))r   r   r   z(objectClass=user)r   r   z$(|(objectClass=user)(badPwdCount=x))   s   topz(&(codePage=x)(revision=x))z(&(lastLogon=x)(description=x))z(&(codePage=x)(description=x))z(&(codePage=x)(nextRid=x))z(&(revision=x)(lastLogon=z))z(|(revision=x)(dnsHostName=x))z(|(badPwdCount=x)(lastLogon=x))z(|(revision=x)(lastLogon=y))z(|(codePage=y)(nextRid=z))z(!(revision=x))   z(!(description=x))z(!(&(codePage=x)(revision=x)))z"(!(&(lastLogon=x)(description=x)))z!(!(&(codePage=x)(description=x)))z!(!(|(revision=x)(dnsHostName=x)))z"(!(|(badPwdCount=x)(lastLogon=x)))   z(!(|(revision=x)(lastLogon=y)))zP(|(&(revision=x)(dnsHostName=x))(!(&(description=x)(nextRid=y)))(badPwdCount=y))   c                 J    g | ]}j                             d |z             S )zcn=%s)rh   r&   )r   nr-   s     r   r   z/MapTestCase.test_map_search.<locals>.<listcomp>(  s+    SSSqt{~~gk**SSSr   )r   r   r   Xr   r   )ri   rG   r*   r+   r.   rU   rh   r&   r   r   rx   r   r   r   r   sortedr
   r|   rc   assertFalser   )r-   r&   resr   dnss   `    r   test_map_searchzMapTestCase.test_map_search?  s,   *T[-??)51C"&
 
 	 	 	 	 
+..*
+
+,/ 	 	 	 	 
+..
 
 !
$ 	 	 	 	+..(( 	  	  		! 		! 		! 	+..(( 	  	  		! 		! 		! 	+..(()%(!H$S	U 	U 		V 		V 		V 	+..(( %(!    	! 	! 	! 	+..(( %(!    	! 	! 	! [^^F##hoob
%2K$@  B BS1%%%SVY,,,SV3444SVK0113777 [^^F##kn##Bj*X*X*X $ Z ZS1%%%SVY,,,SV34443q61222SV$4566<<< [^^F##hoob
%2K$@  B BS1%%%SVY,,,SVM233S999SVK0113777 [^^F##kn##Bj*X*X*X $ Z ZS1%%%SVY,,,SV34443q61222SV$4566<<<
 hoo}%2K$@  B BS1%%%Sj..///SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo):$1-9U  W WS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo):-%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777 hoot=  aJ  aJ  aJo  K  KS1%%%Sj..///SVY)?)?@@@SVM233S999SVK0113777M VK0	2 	2 	2s1v-...SVY)?)?@@@SV3444SVK0113777M VK0	2 	2 	2s1v-...
 hoo)?$R$R$R  T TS1%%%SVY)?)?@@@SV3444SVK0113777SV$4566>>> hoo)D%2K$@  B BS1%%% <;;hoo)=UoKKS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVM21566???SVY)?)?@@@SVM233S999SVK0113777SVM21566??? hoo)O$)  + +S1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVM21566???SVY)?)?@@@SV3444SVK0113777SVM233S&]]CCCSVY)?)?@@@SVM233S999SVK0113777SVM21566???
 hoo)F%2K$@  B BS1%%%Sj..///SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)J%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)I%2K$@  B BS1%%%Sj..///SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 ,hoo)E$)  + +S1%%%hoo)G$)  + +S1%%% hoo)I%2K$@  B BS1%%%Sj..///SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)J%2K$@  B BS1%%%Sj..///SVY)?)?@@@#a&0111SVK0113777SVY)?)?@@@#a&0111SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)G%2K$@  B BS1%%%Sj..///SVY)?)?@@@#a&0111SVK0113777SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)E%2K$@  B BS1%%% hoo):%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)=%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)I%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)M%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)L%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)L%2K$@  B BSj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)M%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo)J%2K$@  B BS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777 hoo){  ER  T_  D`o  a  aS1%%%Sj..///SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SV3444SVK0113777SVY)?)?@@@SVM233S999SVK0113777SVY)?)?@@@SVM233S999SVK0113777 TSSS4RSSS 	  	 BHOOB	  	 r   c                    d}| j                             |ddddd           g d}| j                             |t          |          }|                     t          |          d           |                     t          |d	         j                  |           |                     t          |d	         d
                   d           |                     t          |d	         d                   d           |                     t          |d	         d                   d           | j        j	                            dt          |          }|                     t          |          d	           | j        j	                            dt          |          }|                     t          |          d	           d|z   dz   }| j                             |           | j                             |t          |          }|                     t          |          d           |                     t          |d	         j                  |           |                     t          |d	         d
                   d           |                     t          |d	         d                   d           |                     t          |d	         d                   d
           d}| j                             ||           | j                             |t          |          }|                     t          |          d           |                     t          |d	         j                  |           |                     t          |d	         d
                   d           |                     t          |d	         d                   d           |                     t          |d	         d                   d
           | j                             |           | j                             |t                    }|                     t          |          d	           dS )zModification of local records.zcn=test,dc=idealx,dc=orgtestr   1)r&   r   r   r   r   )r   r   r   r   r   r   r   r   r   z	(cn=test)r   r   z=
replace: foo
foo: baz
replace: description
description: foo
bazzcn=toast,dc=idealx,dc=orgr   N)r.   r*   r   r   rx   r   r   r&   rh   rG   r   ri   r]   r   r   )r-   r&   r   r   r[   dn2s         r   test_map_modify_localz!MapTestCase.test_map_modify_local,  s    (B"""%%+	- - 	. 	. 	. 322hoob
%o@@S1%%%SVY,,,SVE]++U333SVJ/00#666SVM233V<<<kn##{*7u $ F FS1%%%kn##{*7u $ F FS1%%%
 	T"""hoob
%o@@S1%%%SVY,,,SVE]++U333SVJ/00#666SVM233U;;; *C   hooc5oAAS1%%%SVY---SVE]++U333SVJ/00#666SVM233U;;; 	hooco44S1%%%%%r   c                    | j                             d          }| j                            d          }| j        j                            |ddddd           | j        j                            |t          g d          }|                     t          |          d	           |                     t          |d
         j                  |           |                     t          |d
         d                   d           |                     t          |d
         d                   d           |                     t          |d
         d                   d           g d}| j
                            |t          |d          }|                     t          |          d	           |                     t          |d
         j                  |           |                     t          |d
         d                   d           |                     t          |d
         d                   d           |                     t          |d
         d                   d           | j         j                            |t          |          }|                     t          |          d
           d|z   dz   }| j
                            |           | j
                            |t          g d          }|                     t          |          d	           |                     t          |d
         j                  |           |                     t          |d
         d                   d           |                     t          |d
         d                   d           |                     t          |d
         d                   d           | j        j                            |t          g d          }|                     t          |          d	           |                     t          |d
         j                  |           |                     t          |d
         d                   d           |                     t          |d
         d                   d           |                     t          |d
         d                   d           | j                             d          }| j
                            ||           |}| j
                            |t          g d          }|                     t          |          d	           |                     t          |d
         j                  |           |                     t          |d
         d                   d           |                     t          |d
         d                   d           |                     t          |d
         d                   d           | j                            d          }| j        j                            |t          g d          }|                     t          |          d	           |                     t          |d
         j                  |           |                     t          |d
         d                   d           |                     t          |d
         d                   d           |                     t          |d
         d                   d           | j
                            |           | j
                            |t                    }|                     t          |          d
           | j        j                            |t                    }|                     t          |          d
           dS )z-Modification of remote data of remote recordscn=testr   r   31001r&   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   badPwdCountr    )r   r   r   r   r   r   zL
replace: description
description: test
replace: badPwdCount
badPwdCount: 4
4cn=toastr   N)rh   r&   ri   rG   r*   r   r   rx   r   r   r.   r]   r   r   )r-   r&   r   r   r   r[   s         r   test_map_modify_remote_remotez)MapTestCase.test_map_modify_remote_remoteh  s    [^^I&&knnY''#"(+058,2	4 4 	5 	5 	5 kn##Cz*b*b*b $ d dS1%%%SVY---SVM233U;;;SV$;<==sCCCSVN344f===999hoob
%BoOOS1%%%SVY,,,SVM233U;;;SVM233S999SVI.//888kn##Bj#FFS1%%%
 	T"""hoob
$M$M$M  O OS1%%%SVY,,,SVM233V<<<SVM233S999SVI.//888kn##Cz*b*b*b $ d dS1%%%SVY---SVM233V<<<SV$;<==sCCCSVN344f=== knnZ((C   hoob
$M$M$M  O OS1%%%SVY,,,SVM233V<<<SVM233S999SVI.//888knnZ((kn##Cz*b*b*b $ d dS1%%%SVY---SVM233V<<<SV$;<==sCCCSVN344f=== 	hoob
o33S1%%%kn##Cz#::S1%%%%%r   c                    | j                             d          }| j                            d          }| j        j                            |ddddd           d|z   dz   }| j                            |           d	d
g}| j                            |t          |          }| 	                    t          |          d           | 	                    t          |d         j                  |           | 	                    t          |d         d
                   d           | 	                    t          |d         d	                   d           | j        j                            |t          |          }| 	                    t          |          d           | 	                    t          |d         j                  |           | 	                    t          |d         d
                   d           |                     d	|d         v           | j         j                            |t          |          }| 	                    t          |          d           | 	                    t          |d         j                  |           |                     d
|d         v           | 	                    t          |d         d	                   d           | j                            |           dS )z,Modification of local data of remote recordsr   r   r   r   r   r   r   zC
add: revision
revision: 1
replace: description
description: test

r   r   r   r   r   r   N)rh   r&   ri   rG   r*   r.   r]   r   r   rx   r   r   r   r   )r-   r&   r   r[   r   r   s         r   test_map_modify_remote_localz(MapTestCase.test_map_modify_remote_local  s    [^^I&&knnY''#"(+058,2	4 4 	5 	5 	5
 	T"""]+hoob
%o@@S1%%%SVY,,,SVM233V<<<SVJ/00#666kn##Cz#GGS1%%%SVY---SVM233V<<<
#a&0111kn##Bj#FFS1%%%SVY,,,SV3444SVJ/00#666 	r   c           	      |   | j                             d          }| j                            d          }| j                            |dddddd           g d}| j                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           | j         j
                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     d|d         v           |                     d|d         v           |                     d|d         v           |                     t          |d         d                   d           g d}| j        j
                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     d|d         v           d|z   dz   }| j                            |           g d}| j                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           | j         j
                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     d|d         v           |                     d|d         v           |                     d|d         v           |                     t          |d         d                   d           g d}| j        j
                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     d|d         v           | j                             d          }| j                            ||           |}g d}| j                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           | j         j
                            |t          |	          }|                     t          |          d
           |                     t          |d         j                  |           |                     d|d         v           |                     d|d         v           |                     d|d         v           |                     t          |d         d                   d           | j                            d          }| j        j
                            |t          g d	          }|                     t          |          d
           |                     t          |d         j                  |           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     t          |d         d                   d           |                     d|d         v           | j                            |           | j                            |t                    }|                     t          |          d           | j         j
                            |t                    }|                     t          |          d           | j        j
                            |t                    }|                     t          |          d           dS )z%Testing modification of split recordsr   r   r   r   r   r   )r&   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   zj
replace: description
description: test
replace: badPwdCount
badPwdCount: 4
replace: revision
revision: 2
r   2r   r   N)rh   r&   ri   r.   r*   r   r   rx   r   r   rG   r   r]   r   r   )r-   r&   r   r   r   r[   s         r   test_map_modify_splitz!MapTestCase.test_map_modify_split  s
    [^^I&&knnY''   	 	 	 FEEhoob
%o@@S1%%%SVY,,,SVM233U;;;SVM233S999SVI.//888SVJ/00#666kn##Bj#FFS1%%%SVY,,,SV3444SV3444	Q/000SVJ/00#666  kn##Cz#GGS1%%%SVY---SVM233U;;;SV$;<==sCCCSVN344f===
#a&0111
 	T"""EEEhoob
%o@@S1%%%SVY,,,SVM233V<<<SVM233S999SVI.//888SVJ/00#666kn##Bj#FFS1%%%SVY,,,SV3444SV3444	Q/000SVJ/00#666  kn##Cz#GGS1%%%SVY---SVM233V<<<SV$;<==sCCCSVN344f===
#a&0111 knnZ((C   EEEhoob
%o@@S1%%%SVY,,,SVM233V<<<SVM233S999SVI.//888SVJ/00#666kn##Bj#FFS1%%%SVY,,,SV3444SV3444	Q/000SVJ/00#666knnZ((kn##Cz+7 +7 +7 $ 8 8 	S1%%%SVY---SVM233V<<<SV$;<==sCCCSVN344f===
#a&0111 	hoob
o33S1%%%kn##Bj#99S1%%%kn##Cz#::S1%%%%%r   )
r^   r_   r`   re   r   r   r   r   r  r}   r~   s   @r   r   r   2  s        	: 	: 	: 	: 	:k  k  k Z:& :& :&xU& U& U&n* * *Xz& z& z& z& z& z& z&r   r   )ra   r   r.   r   r   rr   r   r   samba.testsr   r   samba.dcerpc.security	samba.ndr
samba.authr	   operatorr
   r   r!   r#   r   r   r6   r   r   <module>r     sg  ( M L 				 



 ) ) ) ) ) ) ) ) % % % % % % % % 7 7 7 7 7 7 7 7         % % % % % %      = = =  W- W- W- W- W-' W- W- W-tf& f& f& f& f& f& f& f&Rs& s& s& s& s&/ s& s& s& s& s&r   