o
    h/                     @   sN  d dl Zd dlm  mZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZmZ ejdd Zd	d
 Zdd Zdd Zej j!dddd Z"dd Z#dd Z$ej j!dddd Z%ej j!dddd Z&dd Z'dd Z(d d! Z)d"d# Z*d$d% Z+d&d' Z,d(d) Z-d*d+ Z.d,d- Z/dS ).    N)app)Config)default_timer)	SCAFFOLD_FILE	PLOT_FILECOMMON_IMAGESTHUMBNAIL_IMAGENAMEBIOLUCIDA_3DVIDEOSEGMENTATION_FILESBIOLUCIDA_2D)current_listwarn_doi_changesc                   C   s   dt jd< t  S )NTTESTING)r   configtest_client r   r   B/home/cmiss/Jenkins/workspace/SPARC-API/tests/test_dataset_info.pyclient   s   
r   c              	   C   s  d}t  }| d}t  }td||  t|j}|d }td |D ]}td||d d q$td	 td
t|  tt	|}t|}	t|}
|	|
k}|st
d|fd|	|
fdt v sit
trnt
tnddt v szt
|rt
|ndt
|	dt v st
trt
tnddt v st
|rt
|ndt
|
d }dd|i }tt
|d  }	 }}
g }|D ]}||d}|tvr|| qt|rtdt| d t| t|rt  d S d S )Nzdoi:z/current_doi_listzelapsed:resultsz	doi_s = [z    " z",]zDOI count: ==)zN%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py8)s
{%(py8)s = %(py5)s(%(py6)s)
}lenunique_doi_sfound_doi_s)py0py1py3py5py6py8assert %(py10)spy10z!The current DOI list has changed .)timergetprintjsonloadsdatareplacer   listset
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   appendr   )r   Zdoi_stemstartrendresponser   doir   @py_assert2@py_assert7@py_assert4@py_format9@py_format11changesZ
stored_doir   r   r   test_current_doi_list   s4   


rD   c                 C   sV  |   }d}g }t|v rd}|dt| t   t|v r,d}|dt| t   t|v r>d}|dt| t   t|v rPd}|dt| t   t|v rbd}|dt| t   t|v rtd}|dt| t   t	|v rd}|d	t| t	   t
|v rd}|d
t| t
   t| t  |rtd| d S d S )NFTz - Found common image: z - Found Biolucida 2D image: z - Found Biolucida 3D image: z - Found scaffold: z - Found plot: z - Found scaffold thumbnail: z - Found video: z - Found segmentation: 
)keysr   r8   r   r   r
   r   r   r   r   r   r)   r	   join)resultrF   foundmessagesr   r   r   print_search_result5   s>   rK   c                 C   sD   | D ]}| dd}|dkrq|dkrqt|d |d d  qd S )Nmimetypeznot-specifiedzinode/directorydatasetpath)r(   r)   )filesZfile_rL   r   r   r   print_mime_pathsX   s   rP   zvery long test)reasonc                 C   s  t   d}d}ttD ]\}}|d7 }|dkr d S |dk rqt }t d|d  dtt d|  | jd	||d
d}t }t d||  t|j}d}	|	|v }
|
st	
d|
fd|	|ft	|	dt v snt	|rst	|ndd }dd|i }tt	|d  }	}
t|d dkr|d }t|}d}||k}|st	
d|fd||fdt v st	trt	tndt	|t	|t	|d }dd|i }tt	|d  } } }}|d d }t| qt|d dkrt d| d qt d| d qd S )Nr   F   i,  .   zResults for DOI [/z]: /dataset_info/using_doi)r=   raw_responsequery_string	elapsed: rH   inz%(py1)s in %(py3)sr<   r   r    assert %(py5)sr!   r   z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr   r   py2py4py7assert %(py9)spy9zNo result for !zMultiple results for z!!)r)   	enumerater   r'   r   r(   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   rK   )r   countrV   indexr=   r9   r:   r;   r<   @py_assert0r>   @py_format4@py_format6@py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10rH   r   r   r   test_all_known_doi_searchc   s0   "x
rs   c                 C   sL  d}t  }| jdd|id}t  }t  td||  t|j}d}||v }|sYtd|fd||ft|d	t	
 v sBt|rGt|nd	d
 }dd|i }	tt|	d  }}|d }
t|
}d}||k}|std|fd||fdt	
 v sttrttndt|
t|t|d }dd|i }tt|d  }
 } }}|d d }d}|d }||k}|std|fd||ft|t|d }dd|i }tt|d  } }}t| |j}| }t|v }
|
sBtd|
fdt|fdt	
 v sttrttnddt	
 v s#t|r(t|ndt|t|d }dd|i }tt|d  }
 }}|j}| }t|v }
|
std|
fdt|fdt	
 v slttrqttnddt	
 v st|rt|ndt|t|d }dd|i }tt|d  }
 }}d S ) NzGeneric mouse colon scaffold/dataset_info/using_titletitlerW   rY   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   namez%(py1)s == %(py4)sr   rb   assert %(py6)sr"   zC%(py0)s in %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s.keys
}()
}r   r   ra   rb   r"   assert %(py8)sr#   r   )r'   r(   r)   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   r   rK   rF   r   r   )r   ru   r9   r:   r;   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   @py_format5@py_format7rA   r   r   r   'test_generic_mouse_colon_dataset_search   s   xjr   c                 C   s  d}t  }| jdd|id}t  }td||  t|j}d}||v }|sVtd|fd||ft|d	t	
 v s?t|rDt|nd	d
 }dd|i }	tt|	d  }}|d }
t|
}d}||k}|std|fd||fdt	
 v sttrttndt|
t|t|d }dd|i }tt|d  }
 } }}|d d }|d }|j}d}||}|sdt|t|t|t|d }tt|d  } } }}|j}| }t|v }
|
s9td|
fdt|fdt	
 v sttrttnddt	
 v st|rt|ndt|t|d }dd|i }tt|d  }
 }}d S )NzSpatial distribution and morphometric characterization of vagal efferents associated with the myenteric plexus of the rat stomachrt   ru   rW   rY   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   rv   zJSpatial distribution and morphometric characterization of vagal efferents zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
})r   r    r!   rc   rz   r   r{   r|   r#   )r'   r(   r)   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   r   
startswithrF   r   )r   ru   r9   r:   r;   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r@   r~   rA   r   r   r   !test_complex_title_dataset_search   s   xfr   z+dois are not suitable for long term testingc                 C   s^  d}t  }| jdd|id}t  }t  td||  t|j}d}||v }|sYtd|fd||ft|d	t	
 v sBt|rGt|nd	d
 }dd|i }	tt|	d  }}|d }
t|
}d}||k}|std|fd||fdt	
 v sttrttndt|
t|t|d }dd|i }tt|d  }
 } }}d S )Nz10.26275/duit-8aqurU   r=   rW   rY   rH   rZ   r\   r<   r]   r^   r!   r   r   r_   r   r`   rd   re   )r'   r(   r)   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   r   )r   r=   r9   r:   r;   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   r   r   r   1test_doi_plot_annotation_dataset_search_version_1   s   xr   c                 C   sh  d}t  }| jdd|id}t  }t  td||  t|j}d}||v }|sYtd|fd||ft|d	t	
 v sBt|rGt|nd	d
 }dd|i }	tt|	d  }}|d }
t|
}d}||k}|std|fd||fdt	
 v sttrttndt|
t|t|d }dd|i }tt|d  }
 } }}|d d }d}|d }||k}|std|fd||ft|t|d }dd|i }tt|d  } }}t|v }
|
s0td|
fdt|fdt	
 v sttrttnddt	
 v st|rt|ndd }dd|i }tt|d }
d S ) Nz10.26275/lok5-wje6rU   r=   rW   rY   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   8Sympathetic nerve stimulation of mouse and rabbit heartsrv   rw   rx   ry   r"   z%(py0)s in %(py2)sr   r   ra   assert %(py4)srb   )r'   r(   r)   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   r   r   )r   r=   r9   r:   r;   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r}   r~   @py_format3r   r   r   1test_doi_plot_annotation_dataset_search_version_2   s   xjr   c                 C   s  d}| j dd|id}t|j}d}||v }|sItd|fd||ft|dt v s2t	|r7t|ndd	 }d
d|i }t
t|d  }}|d }t|}	d}
|	|
k}|std|fd|	|
fdt v srt	trwttndt|t|	t|
d }dd|i }t
t|d  } }	 }}
|d d }d}|d }	||	k}|std|fd||	ft|t|	d }dd|i }t
t|d  } }}	d S )Nz,package:f24c8f8a-dd15-4705-9136-02fef9163795/file_info/get_original_source
identifierrW   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   scaffold_info.jsonrv   rw   rx   ry   r"   r(   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   r   )r   packager:   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r}   r~   r   r   r   'test_get_original_source_from_object_id   s   xnr   c                 C     d}d}| j d||dd}t|j}d}||v }|sLtd|fd||ft|d	t v s5t	|r:t|nd	d
 }dd|i }t
t|d  }}|d }	t|	}
d}|
|k}|std|fd|
|fdt v sut	trzttndt|	t|
t|d }dd|i }t
t|d  }	 }
 }}|d d }d}|d }
||
k}|std|fd||
ft|t|
d }dd|i }t
t|d  } }}
d S )NZ219(derivative/brainstem_sheep_metadata.jsonr   
discoverIdrN   rW   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   r   rv   rw   rx   ry   r"   r   )r   idrN   r:   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r}   r~   r   r   r   )test_get_original_source_from_id_and_path      xnr   c                 C   r   )Nz10.26275/lmjd-eyzqr   r   )r=   rN   rW   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   r   rv   rw   rx   ry   r"   r   )r   r=   rN   r:   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r}   r~   r   r   r   *test_get_original_source_from_doi_and_path   r   r   c                 C   s  d}d}| j d||dd}t|j}d}||v }|sLtd|fd||ft|d	t v s5t	|r:t|nd	d
 }dd|i }t
t|d  }}|d }	t|	}
d}|
|k}|std|fd|
|fdt v sut	trzttndt|	t|
t|d }dd|i }t
t|d  }	 }
 }}d}|d D ]}|d dkr|d }qd}||k}	|	std|	fd||fdt v st	|rt|ndt|d }dd|i }t
t|d  }	}d S )NZ426zKderivative/sub-f006/L/060-visualization/f006_left_human_vagus_metadata.jsonr   r   rW   rH   rZ   r\   r<   r]   r^   r!   r   )>)z/%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} > %(py7)sr   r`   rd   re   r   Z438rR   )z%(py0)s > %(py3)srI   )r   r    r   )r   r   rN   r:   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rI   itemr   r   r   2test_get_original_source_from_external_id_and_path   s   x|r   c                 C   s  t   d}t }| jdd|id}t }t d||  t|j}d}||v }|sYtd|fd||ft|d	t	
 v sBt|rGt|nd	d
 }dd|i }	tt|	d  }}|d }
t|
}d}||k}|std|fd||fdt	
 v sttrttndt|
t|t|d }dd|i }tt|d  }
 } }}|d d }d}|d }||k}|std|fd||ft|t|d }dd|i }tt|d  } }}t|v }
|
s0td|
fdt|fdt	
 v sttrttnddt	
 v st|rt|ndd }dd|i }tt|d }
|t }
t|
}|sdddt	
 v sKttrPttndt|
t|d  }tt|d  }
}|t d }d!}||v }|std|fd||ft|d"t	
 v st|rt|nd"d
 }dd|i }	tt|	d  }}d#}|d! }||v }|std|fd$||ft|t|d }dd|i }tt|d  } }}d%}|d! }||v }|std|fd$||ft|t|d }dd|i }tt|d  } }}d&}|d! d# }||v }|sKtd|fd$||ft|t|d }dd|i }tt|d  } }}t|d! d# d& }d'}||v }|std|fd||ft|d(t	
 v st|rt|nd(d
 }dd|i }	tt|	d  }}d)}||v }|std|fd||ft|d(t	
 v st|rt|nd(d
 }dd|i }	tt|	d  }}d*}||v }|std|fd||ft|d(t	
 v st|rt|nd(d
 }dd|i }	tt|	d  }}|d) }d+}||k}|sItd|fd||ft|t|d }dd|i }tt|d  } }}d S ),Nr   rt   ru   rW   rY   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   rv   rw   rx   ry   r"   r   r   r   r   rb   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}r   ra   rb   datacitefirst_resultsupplemental_json_metadataz%(py1)s in %(py4)sisDescribedBydescriptionversionplot_descriptiontypeattrsplotr)   r'   r(   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   r   r   )r   ru   r9   r:   r;   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r}   r~   r   r   r   r   r   r   )test_title_plot_annotation_dataset_search   s.   xjl~llp~~~pr   c                 C   s  t   d}t }| jdd|id}t }t d||  t|j}d}||v }|sYtd|fd||ft|d	t	
 v sBt|rGt|nd	d
 }dd|i }	tt|	d  }}|d }
t|
}d}||k}|std|fd||fdt	
 v sttrttndt|
t|t|d }dd|i }tt|d  }
 } }}|d d }d}|d }||k}|std|fd||ft|t|d }dd|i }tt|d  } }}t|v }
|
s0td|
fdt|fdt	
 v sttrttnddt	
 v st|rt|ndd }dd|i }tt|d }
|t }
t|
}|sdd dt	
 v sKttrPttndt|
t|d! }tt|d  }
}|t d }d"}||v }|std|fd||ft|d#t	
 v st|rt|nd#d
 }dd|i }	tt|	d  }}d$}|d" }||v }|std|fd%||ft|t|d }dd|i }tt|d  } }}d&}|d" }||v }|std|fd%||ft|t|d }dd|i }tt|d  } }}d'}|d" d$ }||v }|sKtd|fd%||ft|t|d }dd|i }tt|d  } }}t|d" d$ d' }d(}||v }|std|fd||ft|d)t	
 v st|rt|nd)d
 }dd|i }	tt|	d  }}d*}||v }|std|fd||ft|d)t	
 v st|rt|nd)d
 }dd|i }	tt|	d  }}d+}||v }|std|fd||ft|d)t	
 v st|rt|nd)d
 }dd|i }	tt|	d  }}|d* }d,}||k}|sItd|fd||ft|t|d }dd|i }tt|d  } }}d S )-Nz,package:b5f9e5d7-7e09-4855-a923-a966454967d7z%/dataset_info/using_object_identifierr   rW   rY   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   r   rv   rw   rx   ry   r"   r   r   r   r   rb   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r9   r:   r;   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r}   r~   r   r   r   r   r   r   %test_object_identifier_dataset_search  s.   xjl~llp~~~pr   c                 C   s  t   d}t }| jdd|id}t }t d||  t|j}d}||v }|sYtd|fd||ft|d	t	
 v sBt|rGt|nd	d
 }dd|i }	tt|	d  }}|d }
t|
}d}||k}|std|fd||fdt	
 v sttrttndt|
t|t|d }dd|i }tt|d  }
 } }}|d d }d}|d }|j}| }||k}|std|fd||ft|t|t|t|d }dd|i }tt|d  } } } }}t|v }
|
sBtd|
fdt|fdt	
 v sttrttnddt	
 v s+t|r0t|ndd }dd|i }tt|d }
|t }
t|
}|svd dt	
 v s]ttrbttndt|
t|d! }tt|d  }
}d"}||v }|std|fd||ft|dt	
 v st|rt|ndd
 }dd|i }	tt|	d  }}|t d }t t|t  t | |t D ]}t |d# d$  qd S )%NZ43z(/dataset_info/using_pennsieve_identifierr   rW   rY   rH   rZ   r\   r<   r]   r^   r!   rR   r   r_   r   r`   rd   re   r   z%human islet microvasculature analysisrv   )zD%(py1)s == %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.lower
}()
})r   rb   r"   r#   r$   r%   r   r
   r   r   rb   r   r   readmerM   rN   )r)   r'   r(   r*   r+   r,   r0   r1   r5   r2   r3   r4   r6   r7   r   lowerr
   )r   r   r9   r:   r;   r<   rj   r>   rk   rl   rm   rn   ro   rp   rq   rr   rH   r?   rA   rB   r   r}   r   r   r   r   (test_pennsieve_identifier_dataset_search+  s(   xl~r   c                 C   s   |  d}|j}d}||k}|sDtd|fd||fdt v s%t|r*t|ndt|t|d }dd|i }tt	|d  } }}d S )	Nf/s3-resource/328/1/files/derivative/mapped_Pig%207_thumbnail.jpeg?s3BucketName=prd-sparc-discover-use1   r   z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sr:   r   ra   r!   assert %(py7)src   )
r(   status_coder0   r1   r2   r3   r4   r5   r6   r7   )r   r:   rm   r@   rn   rl   rq   r   r   r   "test_name_mangling_for_s3_resourceC  s   
r   c                 C   s   t j}dt _z| d}W n   Y |t _|j}d}||k}|sTtd|fd||fdt v s5t|r:t	|ndt	|t	|d }dd	|i }t
t|d  } }}d S )
N   r   i  r   r   r:   r   r   rc   )r   DIRECT_DOWNLOAD_LIMITr(   r   r0   r1   r2   r3   r4   r5   r6   r7   )r   Zconfig_download_limitr:   rm   r@   rn   rl   rq   r   r   r   &test_size_limit_on_mangled_s3_resourceI  s   r   )0builtinsr2   _pytest.assertion.rewrite	assertionrewriter0   r*   pytestr   
app.configr   Ztimeitr   r'   app.scicrunch_processing_commonr   r   r   r   r	   r
   r   r   r   Z
known_doisr   r   fixturer   rD   rK   rP   markskiprs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s:   " ,
!#




