a
    W×aM  ã                   @   sj   d dl Z d dlZd dlZd dlmZ dZe d¡ZG dd„ de	ƒZ
G dd„ de
jƒZG d	d
„ d
e
jƒZdS )é    N)Ú
get_stringzbin/net adsz^([^ 	:][^:]*):c                   @   s$   e Zd ZdZG dd„ dejjƒZdS )ÚBaseWrapperzw
    Guard the base so it doesn't inherit from TestCase. This prevents it from
    being run by unittest directly.
    c                       s4   e Zd ZdZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )	z BaseWrapper.NetAdsJSONTests_Basez@Blackbox tests for JSON output of the net ads suite of commands.Nc                    s   t tj| ƒ ¡  d S )N)Úsuperr   ÚNetAdsJSONTests_BaseÚsetUp)Úself©Ú	__class__© úB/usr/lib/python3/dist-packages/samba/tests/blackbox/netads_json.pyr   &   s    z&BaseWrapper.NetAdsJSONTests_Base.setUpc              
   C   sj   dt | jf }z|  |¡}t t|ƒ¡ W n: tjjyd } z|  	d||f ¡ W Y d}~n
d}~0 0 dS )z5The output of ``--json`` commands must parse as JSON.ú%s %s --jsonúError calling [%s]: %sN)
ÚCOMMANDÚsubcmdÚcheck_outputÚjsonÚloadsr   ÚsambaÚtestsÚBlackboxProcessErrorÚfail)r   ÚargvÚoutÚer
   r
   r   Útest_json_wellformed)   s    
z5BaseWrapper.NetAdsJSONTests_Base.test_json_wellformedc              
   C   s  dt | jf }zt|  |¡ƒ}W n: tjjyZ } z|  d||f ¡ W Y d}~n
d}~0 0 dt | jf }z|  |¡}W n: tjjy² } z|  d||f ¡ W Y d}~n
d}~0 0 t 	t|ƒ¡}dd„ | 
d¡D ƒD ]}|  | |¡du¡ ||= qÖ|  t|ƒdk¡ dS )	zî
            The ``--json`` variants must contain the same keys as their
            respective plain counterpart.

            Does not check nested dictionaries (e. g. the ``Flags`` value of
            ``net ads lookup``..
            z%s %sr   Nr   c                 S   s2   g | ]*}|d kr|d dvrt  t|¡ d¡‘qS )Ú r   z 	:é   )ÚreÚmatchÚPLAIN_KEY_REGEXÚgroup)Ú.0Úliner
   r
   r   Ú
<listcomp>H   s   þzOBaseWrapper.NetAdsJSONTests_Base.test_json_matching_entries.<locals>.<listcomp>Ú
r   )r   r   r   r   r   r   r   r   r   r   ÚsplitZ
assertTrueÚgetÚlen)r   r   Z	out_plainr   Z	out_jsobjZparsedÚkeyr
   r
   r   Útest_json_matching_entries2   s"    ((ÿ
z;BaseWrapper.NetAdsJSONTests_Base.test_json_matching_entries)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r)   Ú__classcell__r
   r
   r   r   r   "   s
   	r   N)r*   r+   r,   r-   r   r   ZBlackboxTestCaser   r
   r
   r
   r   r      s   r   c                   @   s   e Zd ZdZdS )ÚNetAdsJSONInfoTestsÚinfoN©r*   r+   r,   r   r
   r
   r
   r   r/   P   s   r/   c                   @   s   e Zd ZdZdS )ÚNetAdsJSONlookupTestsÚlookupNr1   r
   r
   r
   r   r2   S   s   r2   )r   r   Zsamba.testsr   Zsamba.compatr   r   Úcompiler   Úobjectr   r   r/   r2   r
   r
   r
   r   Ú<module>   s   
4