a
    )&i                     @   s   d Z ddlZddlZddlZddlZddlZddlmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ eedZd	d
gZG dd deZG dd deZdS )zBlackbox test for mdsearch    N)
HTTPServerBaseHTTPRequestHandler)mdssvc)BlackboxTestCase)mdscli)get_samba_logger)nameZfooZbarc                   @   s   e Zd Zdd ZdS )MdssvcHTTPRequestHandlerc                 C   s   t | jd }| j|}t|}t| jj}||krft	d||f  | 
ddd||f  d S t| jjdd}| d | d	d
 | dt| |   | j| d S )Nzcontent-lengthz"Bad request, expected:
%s
Got:
%s
i  zBad requestzExpected: %s
Got: %s
utf-8)encoding   zcontent-typezapplication/json; charset=UTF-8)intZheadersZrfilereadjsonloadsserverjson_inloggererrorZ
send_errorbytesjson_outZsend_responseZsend_headerlenZend_headersZwfilewrite)selfZcontent_lengthbodyZactual_jsonZexpected_jsonZresp r   ?/usr/lib/python3/dist-packages/samba/tests/blackbox/mdsearch.pydo_POST)   s&    

z MdssvcHTTPRequestHandler.do_POSTN)__name__
__module____qualname__r   r   r   r   r   r	   (   s   r	   c                       s8   e Zd Z fddZ fddZdd Zdd Z  ZS )	MdfindBlackboxTestsc                    s   t t|   tdtdd| _tjtj| fd| _	| j	
d | j	  td tjd | _tD ] }td| j|f d	}|  qbd S )
N)z10.53.57.35i  F)Zbind_and_activate)targetargsT   Z
LOCAL_PATH%s/%sw)superr!   setUpr   r	   r   	threadingZThreadhttp_servertZ	setDaemonstarttimesleeposenviron	sharepath	testfilesopenclose)r   filef	__class__r   r   r(   C   s    

zMdfindBlackboxTests.setUpc                    s0   t t|   tD ]}td| j|f  qd S )Nr%   )r'   r   tearDownr2   r/   remover1   )r   r5   r7   r   r   r9   U   s    zMdfindBlackboxTests.tearDownc                 C   s"   | j   | j   | j   d S )N)r   Zserver_bindZserver_activateZserve_forever)r   r   r   r   r*   Z   s    

zMdfindBlackboxTests.http_serverc                 C   s|   t jd }t jd }t jd }d}d}|d| j| j_|d| j| j_| d|||f }|d	 }| 
t| d	S )
z!Simple blackbox test for mdsearchZUSERNAMEZPASSWORDZSMB_CONF_PATHz{
          "from": 0, "size": 100, "_source": ["path.real"],
          "query": {
            "query_string": {
              "query": "(samba*) AND path.real.fulltext:\"%BASEPATH%\""
            }
          }
        }z{
          "hits" : {
            "total" : { "value" : 2},
            "hits" : [
              {"_source" : {"path" : {"real" : "%BASEPATH%/foo"}}},
              {"_source" : {"path" : {"real" : "%BASEPATH%/bar"}}}
            ]
          }
        }z
%BASEPATH%z;mdsearch -s %s -U %s%%%s fileserver spotlight '*=="samba*"'r
   N)r/   r0   replacer1   r   r   r   Zcheck_outputdecode
splitlinesZassertEqualr2   )r   ZusernameZpasswordZconfigr   r   outputZactualr   r   r   test_mdsearch_   s    



z!MdfindBlackboxTests.test_mdsearch)r   r   r    r(   r9   r*   r?   __classcell__r   r   r7   r   r!   A   s   r!   )__doc__r/   r-   r)   Zloggingr   Zhttp.serverr   r   Zsamba.dcerpcr   Zsamba.testsr   Zsamba.samba3r   Zsamba.loggerr   r   r   r2   r	   r!   r   r   r   r   <module>   s    
