HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/samba/tests/__pycache__/complex_expressions.cpython-310.pyc
o

�/a|I�@s`ddlZddlZddlmZddlZddlZddlZddlm	Z	ddl
mZddlZdZ
dZdZdZe�d�ejd��Ze�e�Ze�e�Ze�e�ejd	d
ddd
�e��\ZZee�dkrje��e� d�e�!�Z"e�#e"�Z$dZ%da&Gdd�de�Z'e(dkr�ddl)m*Z*edZ%de%vr�ej+�,e%�r�de%Z%nde%Z%e*e(d�dSde�-d�Z%dS)�N)�system_session)�TestCase�D���Az
{0} <host>z-v�
store_true�verbosez#print successful expression outputs)�action�dest�helpcseZdZe�fdd��Zedd��Zdd�Zdd�Zd	d
�Zd8dd
�Z	dd�Z
dd�Zdd�Zdd�Z
d8dd�Zdd�Zdd�Zdd�Zd8dd�Zd d!�Zd"d#�Zd$d%�Zd8d&d'�Zd(d)�Zd*d+�Zd8d,d-�Zd.d/�Zd0d1�Zd9d2d3�Zd4d5�Zd6d7�Z�ZS):�ComplexExpressionTestsc
s�tt|���tjjttt�t	d�|_d}d�
||j���|_z|j�
|jdg�WnYz	|j�|j�WntjyV}z|jdtkrPtdj
|d��|�d}~wwd|_d	|_d
|_d|_d|_d
|_d|_d|_dS)N)�lp�session_info�credentials�ComplexExprTestz
OU={0},{1}�
tree_delete:1rzatest ou {ou} already exists. Delete with "samba-tool group delete OU={ou} --force-subtree-delete")�ouztestuser{0}�
�accountExpires�accountNameHistory�flags�preferredDeliveryMethod�msTSExpireDate�countryCode)�superr
�
setUpClass�samba�samdb�SamDB�hostrr�creds�format�	domain_dn�base_dn�delete�	create_ou�ldb�LdbError�args�ERRCODE_ENTRY_EXISTS�print�
name_template�	default_n�
largeint_f�str_f�int_f�enum_f�time_f�ranged_int_f)�cls�ou_name�e��	__class__��A/usr/lib/python3/dist-packages/samba/tests/complex_expressions.pyr=s:
����
z!ComplexExpressionTests.setUpClasscCs|j�|jdg�dS)Nr)rr%r$)r4r9r9r:�
tearDownClassasz$ComplexExpressionTests.tearDownClasscs�td7ad�t�j���j������fdd�|D�}|D](}dd�|��D�}z�j�|�WqtjyF}zt	d|�|�d}~ww�|fS)NrzOU=testou{0},{1}c
s0g|]}dd�|��d�j�|�dd�|i�qS)�dnzCN=testuser{0},{1}�name�objectClass�user)r"r,��.0�n��field�ou_dn�selfr9r:�
<listcomp>ls��z<ComplexExpressionTests.make_test_objects.<locals>.<listcomp>cSsi|]	\}}|t|��qSr9��str)rA�k�vr9r9r:�
<dictcomp>us�z<ComplexExpressionTests.make_test_objects.<locals>.<dictcomp>zfailed to add %s)
�ou_countr"r$rr&�items�addr'r(r+)rFrD�vals�ldap_objects�ldap_object�stringed_ldap_objectr6r9rCr:�make_test_objectsfs$����z(ComplexExpressionTests.make_test_objectsc
Csrd}zt��}|jj|tj|d�}t��|}Wnty,}ztd|�|�d}~wwtd�||��||fS)Nr��base�scope�
expressionzfailed expr z
{0} took {1}s)�timer�searchr'�
SCOPE_SUBTREE�	Exceptionr+r")rF�exprr<�
time_taken�
start_time�resr6r9r9r:�time_ldap_search�s���z'ComplexExpressionTests.time_ldap_searchc	Cs�|�||�\}}dd�|D�}t�}|D]#}	z
|jdi|	��}
Wn	ty)Yqwt|
�r7|�t|	d��q|�||�tj	rfdd�|D�}||}d�
|�pRd}d�
|�pYd}
td�|||
|��dSdS)	NcSsh|]}t|�d�d��qS�r=r�rI�get)rA�rowr9r9r:�	<setcomp>��z9ComplexExpressionTests.assertLDAPQuery.<locals>.<setcomp>r=cSsh|]}|d�qS)r=r9�rA�lr9r9r:rf��z
  z	[NOTHING]zCPASS: Expression {0} took {1}s and returned:
  {2}
Excluded:
  {3}
r9)ra�setr"�KeyError�evalrOrI�assertEqual�optsr	�joinr+)rF�	ldap_exprrE�py_exprrQr`r^�results�expected_resultsrR�
final_expr�ldap_object_names�excluded�returnedr9r9r:�assertLDAPQuery�s4�����z&ComplexExpressionTests.assertLDAPQueryNcCs�|j}|p|j}|�|t|��\}}d||d||df}d|d||df}|�||||�t|d�}d||f}d||f}|�||||�d||f}d||f}|�||||�dS)	N�(&(%s>=%s)(%s<=%s))r�%d <= {%s} <= %d��(%s<=%s)�
{%s} <= %dz(%s>=%s)�
{%s} >= %d)r-r0rT�rangery�int)rFrDrBrErQr]rr�half_nr9r9r:�test_int_range�s
z%ComplexExpressionTests.test_int_rangecC�|�|j�dS�N)r�r.�rFr9r9r:�test_largeint_range��z*ComplexExpressionTests.test_largeint_rangecCr�r�)r�r1r�r9r9r:�test_enum_range�r�z&ComplexExpressionTests.test_enum_rangec	Csd|j}d}d}tt|||��}|�||�\}}d||df}d||df}|�||||�dS)Ni��(%s<=%d)�r~)r3�listr�rTry)	rFrD�ubound�widthrPrErQr]rrr9r9r:�test_ranged_int_range�sz,ComplexExpressionTests.test_ranged_int_rangec	s�|j}|j}|j}t|d�}d��fdd�t||�D�}dd�|D�}|�||�\}}d|t��df}d|�f}|�||||�d	|t�d
�d|t�d
�df}d�d
|�d
f}|�||||�dS)Nr|l�f�Hcsg|]}�|�qSr9r9�rA�t��	base_timer9r:rG�rjz:ComplexExpressionTests.test_time_range.<locals>.<listcomp>cSsg|]}t|�d�qS)�.0ZrHr�r9r9r:rG��r}r�zint("{%s}"[:-3]) <= %drzrz%d <= int("{%s}"[:-3]) <= %d)r-r2r�r�rTrIry)	rFrBrDr��
time_rangerErQr]rrr9r�r:�test_time_range�s&��z&ComplexExpressionTests.test_time_rangec
s�|j��p|j�|��t���\}}gd�}gd�}��fdd�|D�}��fdd�|D�}t||�D]\}}	|�|||	|�q3dS)N)�=�<=�>=)z==r�r�c�g|]	}d�|�f�qS)z(%s%s%d)r9�rA�c�rDrBr9r:rG��zHComplexExpressionTests.test_int_single_cmp_op_speeds.<locals>.<listcomp>cr�)z{%s}%s%dr9r�r�r9r:rGr�)r-r0rTr��zipry)
rFrDrErQ�comp_ops�py_comp_ops�exprs�py_exprsr]rrr9r�r:�test_int_single_cmp_op_speeds�s
�z4ComplexExpressionTests.test_int_single_cmp_op_speedscCr�r�)r�r.r�r9r9r:�"test_largeint_single_cmp_op_speedsr�z9ComplexExpressionTests.test_largeint_single_cmp_op_speedscCr�r�)r�r1r�r9r9r:�test_enum_single_cmp_op_speedsr�z5ComplexExpressionTests.test_enum_single_cmp_op_speedsc
Cs|j}td�}d}dd�t|||�D�}|�||�\}}t||d�}d|t|�f}d|t|�f}	|�|||	|�d|t|�f}d	|t|�f}	|�|||	|�d
|t|d�|t|d�f}dt|d�|t|d�f}	|�|||	|�d|}d
|}	|�|||	|�dS)N�ArcSsg|]	}d�t|���qS)zabc{0}d)r"�chrr�r9r9r:rGr�z<ComplexExpressionTests.test_str_ordering.<locals>.<listcomp>r|z(%s>=abc%s)z'{%s}' >= 'abc%s'z(%s<=abc%s)z'{%s}' <= 'abc%s'z(&(%s>=abc%s)(%s<=abc%s))z'abc%s' <= '{%s}' <= 'abc%s'z(%s>=1)z
'{%s}' >= '1')r/�ordr�rTr�r�ry)
rFrD�a_ordrB�	str_rangerErQr�r]rrr9r9r:�test_str_orderings.�
�z(ComplexExpressionTests.test_str_orderingcCsV|p|j}|j}|�|tt|���\}}gd�}|D]}||}|�||d|�qdS)N)z	(%s>=abc)z	(%s<=abc)z(%s=abc)�False)r0r-rTr�r�ry)rFrDrBrErQ�int_expressionsr]r9r9r:�test_invalid_expressions+s
�z/ComplexExpressionTests.test_invalid_expressionscCr�r�)r�r.r�r9r9r:�!test_largeint_invalid_expressions7r�z8ComplexExpressionTests.test_largeint_invalid_expressionscCr�r�)r�r1r�r9r9r:�test_enum_invalid_expressions:r�z4ComplexExpressionTests.test_enum_invalid_expressionscCsfdd�td�D�}|�|j|�\}}d|j}d|j}|�||||�d|j}|�||||�dS)NcS�g|]}dt|��qS)uäbcrHr@r9r9r:rG>r�z@ComplexExpressionTests.test_case_insensitive.<locals>.<listcomp>ru
(%s=äbc1)u"{%s}"=="äbc1"u
(%s=ÄbC1))r�rTr/ry)rFr�rErQr]�pyexprr9r9r:�test_case_insensitive=s


z,ComplexExpressionTests.test_case_insensitivecCsR|p|j}d}tt||��}|�||�\}}d|}d|}|�||||�dS)N�z(%s>=-3)z
{%s} >= -3)r0r�r�rTry)rFrDr��around_zerorErQr]rrr9r9r:�test_negative_cmpIs
z(ComplexExpressionTests.test_negative_cmpcCr�r�)r�r.r�r9r9r:�test_negative_cmp_largeintSr�z1ComplexExpressionTests.test_negative_cmp_largeintcCr�r�)r�r1r�r9r9r:�test_negative_cmp_enumVr�z-ComplexExpressionTests.test_negative_cmp_enumc

sp�p|j�|j}|��tt|���\}}d�|df}d�|df}|�||||�|j�|dg�dd�t|�D�}z
|��|�\}}Wntj	yd}z|j
dtkrY|�WYd}~dSd}~wwtd��|jj
|tjd	d
�}	�fdd�|	D�}
dd�t|�D�}|�t|
�t|��d
�|df}d�|df}|D]
}t|��|�<q�|�||||�dS)Nz
(%s>=00%d)r|rrcSr�)�00rH)rA�numr9r9r:rGjr�z;ComplexExpressionTests.test_zero_prefix.<locals>.<listcomp>rz4LDAP allowed insertion of 0-prefixed nums for field �(objectClass=user)rUc�g|]}t|���d��qS�rrc�rA�r�rDr9r:rGzrgcS�g|]}t|��qSr9rHr@r9r9r:rG{rj�(%s>=%d))r0r-rTr�r�ryrr%r'r(r)�ERRCODE_INVALID_VALUEr+rZr[rnrkr�)
rFrDrBrErQr]rr�zero_pref_numsr6r`�
returned_nums�expectrRr9r�r:�test_zero_prefix[s:
���z'ComplexExpressionTests.test_zero_prefixcCr�r�)r�r.r�r9r9r:�test_zero_prefix_largeint�r�z0ComplexExpressionTests.test_zero_prefix_largeintcCr�r�)r�r1r�r9r9r:�test_zero_prefix_enum�r�z,ComplexExpressionTests.test_zero_prefix_enumcsd�p|j�|pd}d}tt||||��}|��|�\}}d�|df}d|d�|f}|�||||�d�|f}d}|�||||�d�|�f}d	�|f}|�||||�d
�}d�|df}|�||||�|jj|tjd
d�}	�fdd�|	D�}
tt|||d��}tt|d||d��}dd�||D�}
|�	t
|
�t
|
��dS)N��r�r��r{r��Truez(&(%s<=%d)(%s>=0))r~z(%s<=0)rrr�rUcr�r�rcr�r�r9r:rG�rgz<ComplexExpressionTests.test_int_overflow.<locals>.<listcomp>r|cSr�r9rHr@r9r9r:rG�rj)r0r�r�rTryrrZr'r[rnrk)rFrD�ofr�rPrErQr]rrr`r��up_to_overflow�	negativesr�r9r�r:�test_int_overflow�s4
�z(ComplexExpressionTests.test_int_overflowcCs|�|jd�dS)Nr�)r�r1r�r9r9r:�test_enum_overflow�sz)ComplexExpressionTests.test_enum_overflowc
s�d�d}|��tt|���\}}|jj|tjdd�}�fdd�|D�}�fdd�|D�}tt|��}|tt	|�d�}d	�|f}d
�|f}	|�
|||	|�d�|f}d�|f}	|�
|||	|�dS)
N�
uSNChangedrr�rUcs0g|]}dt|dd��t|�d�i�qSrb)rIr�r�r�r9r:rG�s
��z:ComplexExpressionTests.test_usnchanged.<locals>.<listcomp>csg|]}|��qSr9r9rhr�r9r:rG�rjr|z(&(%s<=%d)(objectClass=user))r~z(&(%s>=%d)(objectClass=user))r)rTr�r�rrZr'r[�sortedr��lenry)
rFrBrE�_r`rQ�nums�
search_numr]rrr9r�r:�test_usnchanged�s&�
�z&ComplexExpressionTests.test_usnchangedr�)NN) �__name__�
__module__�__qualname__�classmethodrr;rTraryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��
__classcell__r9r9r7r:r
:s<#

$





*
'r
�__main__)�TestProgramz://ztdb://%sz	ldap://%s)�modulezldap://�SERVER).�optparser�samba.getopt�getopt�options�sys�osrY�
samba.authr�samba.testsrr'r*�ERRCODE_OPERATIONS_ERRORr��ERRCODE_CLASS_VIOLATION�OptionParserr"�argv�parser�SambaOptions�	sambaopts�CredentialsOptions�credopts�add_option_group�
add_option�
parse_argsror)r��print_usage�exit�get_loadparmr�get_credentialsr!r rMr
r��samba.tests.subunitrunr��path�isfile�getenvr9r9r9r:�<module>sR



�

%