a
    [ÔJa˜#  ã                   @   sH   d dl Z d dlZd dlZd dlZd dlmZmZ G dd„ dejjƒZ	dS )é    N)Ú
SCOPE_BASEÚLdbErrorc                       sr   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zdd
d„Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Z‡  ZS )ÚSchemaAttributesTestCasec                    s’   t t| ƒ ¡  tj ¡ | _tj | j ¡ ¡| _	| j	j
ddtdgd}|  t|ƒd¡ |d d d | _|d d d | _t|d d d ƒ| _d S )	NÚ Ú*)ÚbaseZ
expressionÚscopeÚattrsé   r   ZschemaNamingContextZdefaultNamingContextZforestFunctionality)Úsuperr   ÚsetUpÚsambaÚtestsZenv_loadparmÚlpÚconnect_samdbÚ	samdb_urlÚsamdbÚsearchr   ÚassertEqualÚlenÚ	schema_dnZbase_dnÚintZforest_level)ÚselfÚres©Ú	__class__© úD/usr/lib/python3/dist-packages/samba/tests/dsdb_schema_attributes.pyr   $   s    zSchemaAttributesTestCase.setUpc                    s   t t| ƒ ¡  d S )N)r   r   ÚtearDown)r   r   r   r   r   1   s    z!SchemaAttributesTestCase.tearDownc                 C   s   d}| j  |¡ d S )Nz@
dn:
changetype: modify
add: schemaUpdateNow
schemaUpdateNow: 1
)r   Zmodify_ldif)r   Úldifr   r   r   Ú_ldap_schemaUpdateNow4   s    z.SchemaAttributesTestCase._ldap_schemaUpdateNowc                 C   s8   |t  dt  ¡ ¡ }| dd¡}d|| jf }|||fS )Nz%sú-r   zCN=%s,%s)ÚtimeÚstrftimeÚgmtimeÚreplacer   )r   ÚprefixZobj_nameZobj_ldap_nameZobj_dnr   r   r   Ú_make_obj_names=   s    z(SchemaAttributesTestCase._make_obj_namesNc                 C   sT   d| d | d | d | d|  t t dd¡ƒ d }|d urP||d	 7 }|S )
Nz
dn: zA
objectClass: top
objectClass: attributeSchema
adminDescription: z
adminDisplayName: z
cn: z*
attributeId: 1.3.6.1.4.1.7165.4.6.1.8.%d.r
   i † z_
attributeSyntax: 2.5.5.12
omSyntax: 64
instanceType: 4
isSingleValued: TRUE
systemOnly: FALSE
Ú
)ÚstrÚrandomZrandint)r   Ú	attr_nameÚattr_dnZsub_oidZextrar   r   r   r   Ú_make_attr_ldifC   s4    ÿÿüüûûúÿúùùz(SchemaAttributesTestCase._make_attr_ldifc                 C   sÆ   |   d¡\}}}|  ||ddtjj ¡}| j |¡ |  ¡  | jjdt	j
d}|  ||d ¡ |  t|d | ƒd¡ |  t|d | d ƒd¡ | jjdt	j
d}|  |d	d
„ |d d D ƒ¡ d S )NzschemaAttributes-IdxAttr-r
   úsearchFlags: %dú@ATTRIBUTES©r   r   r   ÚCASE_INSENSITIVEú
@INDEXLISTc                 S   s   g | ]}t |ƒ‘qS r   ©r)   ©Ú.0Úxr   r   r   Ú
<listcomp>n   ó    zESchemaAttributesTestCase.test_AddIndexedAttribute.<locals>.<listcomp>ú@IDXATTR©r'   r-   r   ZdsdbZSEARCH_FLAG_ATTINDEXr   Úadd_ldifr    r   Úldbr   ÚassertInr   r   r)   ©r   r+   Úattr_ldap_namer,   r   Úattr_resÚidx_resr   r   r   Útest_AddIndexedAttributeX   s    

ÿz1SchemaAttributesTestCase.test_AddIndexedAttributec                 C   s¼   |   d¡\}}}|  ||d¡}| j |¡ |  ¡  | jjdtjd}|  ||d ¡ |  	t
|d | ƒd¡ |  	t|d | d ƒd¡ | jjdtjd}|  |d	d
„ |d d D ƒ¡ d S )NzschemaAttributes-UnIdxAttr-é   r/   r0   r   r
   r1   r2   c                 S   s   g | ]}t |ƒ‘qS r   r3   r4   r   r   r   r7   …   r8   zGSchemaAttributesTestCase.test_AddUnIndexedAttribute.<locals>.<listcomp>r9   )r'   r-   r   r;   r    r   r<   r   r=   r   r   r)   ZassertNotInr>   r   r   r   Útest_AddUnIndexedAttributep   s    z3SchemaAttributesTestCase.test_AddUnIndexedAttributec           
      C   sd  |   d¡\}}}|  ||ddtjj ¡}| j |¡ |  ¡  |   d¡\}}}|  ||ddtjj ¡}| j |¡ |  ¡  | jjdt	j
d}|  ||d ¡ |  t|d | ƒd	¡ |  t|d | d ƒd
¡ |  ||d ¡ |  t|d | ƒd	¡ |  t|d | d ƒd
¡ | jjdt	j
d}	|  |dd„ |	d d D ƒ¡ |  |dd„ |	d d D ƒ¡ d S )NzschemaAttributes-2IdxAttr-é   r.   zschemaAttributes-Attr-é   r/   r0   r   r
   r1   r2   c                 S   s   g | ]}t |ƒ‘qS r   r3   r4   r   r   r   r7   ª   r8   zISchemaAttributesTestCase.test_AddTwoIndexedAttributes.<locals>.<listcomp>r9   c                 S   s   g | ]}t |ƒ‘qS r   r3   r4   r   r   r   r7   «   r8   r:   )
r   r+   r?   r,   r   Z
attr_name2Zattr_ldap_name2Zattr_dn2r@   rA   r   r   r   Útest_AddTwoIndexedAttributes‡   s,    

ÿ

ÿz5SchemaAttributesTestCase.test_AddTwoIndexedAttributesc                 C   sJ  ddgdœ}t j | j|t j¡}| j |¡ | jjdt jdgd}|  t	|ƒd¡ |  t
|d jƒd¡ |  t	|d ƒd¡ |  d|d v ¡ |  t	|d d ƒd¡ |  t
|d d d ƒd¡ tj | j ¡ ¡}| ¡  | ¡  | jjdt jdgd}|  t	|ƒd¡ |  t
|d jƒd¡ |  t	|d ƒd¡ |  d|d v ¡ d S )Nr/   ZHIDDEN©Údnú@TEST_EXTRArJ   ©r   r   r	   r
   r   ©r<   ÚMessageÚ	from_dictr   ZFLAG_MOD_ADDÚmodifyr   r   r   r   r)   rI   Z
assertTruer   r   r   r   r   Ztransaction_startZtransaction_commitZassertFalse©r   ÚmÚmsgr   Zsamdb2r   r   r   Útest_modify_at_attributes­   s0    ÿÿÿz2SchemaAttributesTestCase.test_modify_at_attributesc                 C   sJ  ddgdœ}t j | j|t j¡}| j |¡ | jjdt jdgd}|  t	|ƒd¡ |  t
|d jƒd¡ |  t	|d ƒd¡ |  d|d v ¡ |  t	|d d ƒd¡ |  t
|d d d ƒd¡ tj | j ¡ ¡}| ¡  | ¡  | jjdt jdgd}|  t	|ƒd¡ |  t
|d jƒd¡ |  t	|d ƒd¡ |  d|d v ¡ d S )Nr2   Ú1rH   rJ   rK   r
   r   rL   rP   r   r   r   Útest_modify_at_indexlistÏ   s0    ÿÿÿz1SchemaAttributesTestCase.test_modify_at_indexlistc              
   C   s|   ddgdœ}t j | j|t j¡}z| j |¡ |  d¡ W n< tyv } z$|jd }|  	|t j
¡ W Y d }~n
d }~0 0 d S )Nr2   rT   )rI   z@TEST_NOT_EXTRAz9modify of @INDEXLIST with a failed constraint should failr   )r<   rM   rN   r   ZFLAG_MOD_DELETErO   Zfailr   Úargsr   ZERR_NO_SUCH_ATTRIBUTE)r   rQ   rR   ÚerrÚenumr   r   r   Ú test_modify_fail_of_at_indexlistñ   s    ÿ
z9SchemaAttributesTestCase.test_modify_fail_of_at_indexlist)N)Ú__name__Ú
__module__Ú__qualname__r   r   r    r'   r-   rB   rD   rG   rS   rU   rY   Ú__classcell__r   r   r   r   r   "   s   	
&""r   )
r"   r*   Zsamba.testsr   r<   r   r   r   ZTestCaser   r   r   r   r   Ú<module>   s
   