o h/@sNddlZddlmmZddlZddlZddlmZddl m Z ddl m Z ddlmZmZmZmZmZmZmZmZmZddlmZmZejddZd d Zd d Zd dZej j!ddddZ"ddZ#ddZ$ej j!ddddZ%ej j!ddddZ&ddZ'ddZ(d d!Z)d"d#Z*d$d%Z+d&d'Z,d(d)Z-d*d+Z.d,d-Z/dS).N)app)Config) default_timer) SCAFFOLD_FILE PLOT_FILE COMMON_IMAGESTHUMBNAIL_IMAGENAME BIOLUCIDA_3DVIDEOSEGMENTATION_FILES BIOLUCIDA_2D) current_listwarn_doi_changescCsdtjd<tS)NTTESTING)rconfig test_clientrrB/home/cmiss/Jenkins/workspace/SPARC-API/tests/test_dataset_info.pyclient s rc Csd}t}|d}t}td||t|j}|d}td|D]}td||ddq$td td t|tt |}t|} t|} | | k} | st d | fd | | fd t vsit trnt tnd dt vszt |rt |ndt | d t vst trt tnd dt vst |rt |ndt | d} dd| i} tt | d} } } g}|D]}||d}|tvr||qt|rtdt|dt|t|rtdSdS)Nzdoi:z/current_doi_listzelapsed: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)py0py1py3py5py6py8assert %(py10)spy10z!The current DOI list has changed .)timergetprintjsonloadsdatareplacerlistset @pytest_ar_call_reprcompare @py_builtinslocals_should_repr_global_name _safereprAssertionError_format_explanationrappendr)rZdoi_stemstartrendresponserdoir @py_assert2 @py_assert7 @py_assert4 @py_format9 @py_format11changesZ stored_doirrrtest_current_doi_lists4      rDcCsV|}d}g}t|vrd}|dt|tt|vr,d}|dt|tt|vr>d}|dt|tt|vrPd}|dt|tt|vrbd}|dt|tt|vrtd}|dt|tt |vrd}|d t|t t |vrd}|d t|t t |t |rt d |dSdS) 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:  )keysrr8rr r rrrr r r)r join)resultrFfoundmessagesrrrprint_search_result5s> rKcCsD|D]}|dd}|dkrq|dkrqt|d|ddqdS)Nmimetypez not-specifiedzinode/directorydatasetpath)r(r))filesZfile_rLrrrprint_mime_pathsXs rPzvery long test)reasoncCstd}d}ttD]\}}|d7}|dkrdS|dkrq t}td|ddttd||jd ||d d }t}td ||t|j}d } | |v} | st d| fd| |ft | dt vsnt |rst |ndd} dd| i} tt | d} } t|d dkr|d } t| }d}||k}|st d|fd||fdt vst trt tndt | t |t |d}dd|i}tt |d} }}}|d d}t|q t|d dkrtd|dq td|dq dS)NrFi,.zResults for DOI [/z]: /dataset_info/using_doi)r= raw_response query_string elapsed: rHinz%(py1)s in %(py3)sr<rr assert %(py5)sr!rz0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py7)srrpy2py4py7assert %(py9)spy9zNo result for !zMultiple results for z!!)r) enumeraterr'rr(r*r+r,r0r1r5r2r3r4r6r7rK)rcountrVindexr=r9r:r;r< @py_assert0r> @py_format4 @py_format6 @py_assert1 @py_assert3 @py_assert6 @py_assert5 @py_format8 @py_format10rHrrrtest_all_known_doi_searchcs0" x  rscCsLd}t}|jdd|id}t}ttd||t|j}d}||v}|sYtd|fd||ft|d t vsBt |rGt|nd d }d d |i} t t | d}}|d} t| } d } | | k} | std| fd| | fdt vst trttndt| t| t| d}dd|i}t t |d} } } } |dd}d}|d} || k}|std|fd|| ft|t| d}dd|i}t t |d}}} t||j} | } t| v} | sBtd| fdt| fdt vst trttnddt vs#t |r(t|ndt| t| d}dd|i}t t |d} } } |j} | } t| v} | std| fdt| fdt vslt trqttnddt vst |rt|ndt| t| d}dd|i}t t |d} } } dS) NzGeneric mouse colon scaffold/dataset_info/using_titletitlerWrYrHrZr\r<r]r^r!rRrr_rr`rdrernamez%(py1)s == %(py4)srrbassert %(py6)sr"zC%(py0)s in %(py6)s {%(py6)s = %(py4)s {%(py4)s = %(py2)s.keys }() }rrrarbr"assert %(py8)sr#r)r'r(r)r*r+r,r0r1r5r2r3r4r6r7rrKrFrr)rrur9r:r;r<rjr>rkrlrmrnrorprqrrrH @py_format5 @py_format7rArrr'test_generic_mouse_colon_dataset_searchs x jrcCsd}t}|jdd|id}t}td||t|j}d}||v}|sVtd|fd||ft|d t vs?t |rDt|nd d }d d |i} t t | d}}|d} t| } d } | | k} | std| fd| | fdt vst trttndt| t| t| d}dd|i}t t |d} } } } |dd}|d}|j}d}||} | sdt|t|t|t| d}t t |d}}}} |j} | } t| v} | s9td| fdt| fdt vst tr ttnddt vst |rt|ndt| t| d}dd|i}t t |d} } } dS)NzSpatial distribution and morphometric characterization of vagal efferents associated with the myenteric plexus of the rat stomachrtrurWrYrHrZr\r<r]r^r!rRrr_rr`rdrerrvzJSpatial distribution and morphometric characterization of vagal efferents zLassert %(py7)s {%(py7)s = %(py3)s {%(py3)s = %(py1)s.startswith }(%(py5)s) })rr r!rcrzrr{r|r#)r'r(r)r*r+r,r0r1r5r2r3r4r6r7r startswithrFr)rrur9r:r;r<rjr>rkrlrmrnrorprqrrrHr@r~rArrr!test_complex_title_dataset_searchs x frz+dois are not suitable for long term testingcCs^d}t}|jdd|id}t}ttd||t|j}d}||v}|sYtd|fd||ft|d t vsBt |rGt|nd d }d d |i} t t | d}}|d} t| } d } | | k} | std| fd| | fdt vst trttndt| t| t| d}dd|i}t t |d} } } } dS)Nz10.26275/duit-8aqurUr=rWrYrHrZr\r<r]r^r!rrr_rr`rdre)r'r(r)r*r+r,r0r1r5r2r3r4r6r7r)rr=r9r:r;r<rjr>rkrlrmrnrorprqrrrrr1test_doi_plot_annotation_dataset_search_version_1s xrcCshd}t}|jdd|id}t}ttd||t|j}d}||v}|sYtd|fd||ft|d t vsBt |rGt|nd d }d d |i} t t | d}}|d} t| } d } | | k} | std| fd| | fdt vst trttndt| t| t| d}dd|i}t t |d} } } } |dd}d}|d} || k}|std|fd|| ft|t| d}dd|i}t t |d}}} t|v} | s0td| fdt|fdt vst tr ttnddt vst |rt|ndd}dd|i}t t |d} dS) Nz10.26275/lok5-wje6rUr=rWrYrHrZr\r<r]r^r!rRrr_rr`rdrer8Sympathetic nerve stimulation of mouse and rabbit heartsrvrwrxryr"z%(py0)s in %(py2)srrraassert %(py4)srb)r'r(r)r*r+r,r0r1r5r2r3r4r6r7rr)rr=r9r:r;r<rjr>rkrlrmrnrorprqrrrHr}r~ @py_format3rrr1test_doi_plot_annotation_dataset_search_version_2s x jrcCsd}|jdd|id}t|j}d}||v}|sItd|fd||ft|dtvs2t |r7t|ndd }d d |i}t t |d}}|d}t |} d } | | k} | std | fd| | fdtvsrt t rwtt ndt|t| t| d} dd| i} t t | d}} } } |dd}d}|d} || k}|std |fd|| ft|t| d}dd|i}t t |d}}} dS)Nz,package:f24c8f8a-dd15-4705-9136-02fef9163795/file_info/get_original_source identifierrWrHrZr\r<r]r^r!rRrr_rr`rdrerscaffold_info.jsonrvrwrxryr" r(r*r+r,r0r1r5r2r3r4r6r7r)rpackager:r<rjr>rkrlrmrnrorprqrrrHr}r~rrr'test_get_original_source_from_object_ids x nrcCd}d}|jd||dd}t|j}d}||v}|sLtd|fd||ft|d tvs5t |r:t|nd d }d d |i}t t |d}}|d} t | } d } | | k} | std| fd| | fdtvsut t rztt ndt| t| t| d} dd| i}t t |d} } } } |dd}d}|d} || k}|std|fd|| ft|t| d}dd|i}t t |d}}} dS)NZ219(derivative/brainstem_sheep_metadata.jsonr discoverIdrNrWrHrZr\r<r]r^r!rRrr_rr`rdrerrrvrwrxryr"r)ridrNr:r<rjr>rkrlrmrnrorprqrrrHr}r~rrr)test_get_original_source_from_id_and_path x nrcCr)Nz10.26275/lmjd-eyzqrr)r=rNrWrHrZr\r<r]r^r!rRrr_rr`rdrerrrvrwrxryr"r)rr=rNr:r<rjr>rkrlrmrnrorprqrrrHr}r~rrr*test_get_original_source_from_doi_and_pathrrcCsd}d}|jd||dd}t|j}d}||v}|sLtd|fd||ft|d tvs5t |r:t|nd d }d d |i}t t |d}}|d} t | } d } | | k} | std| fd| | fdtvsut t rztt ndt| t| t| d} dd| i}t t |d} } } } d }|dD] }|ddkr|d}qd }||k} | std| fd||fdtvst |rt|ndt|d}d d |i}t t |d} }dS)NZ426zKderivative/sub-f006/L/060-visualization/f006_left_human_vagus_metadata.jsonrrrWrHrZr\r<r]r^r!r)>)z/%(py4)s {%(py4)s = %(py0)s(%(py2)s) } > %(py7)srr`rdrerZ438rR)z%(py0)s > %(py3)srI)rr r)rrrNr:r<rjr>rkrlrmrnrorprqrrrIitemrrr2test_get_original_source_from_external_id_and_paths x  |rcCstd}t}|jdd|id}t}td||t|j}d}||v}|sYtd|fd||ft|d t vsBt |rGt|nd d }d d |i} t t | d}}|d} t| } d } | | k} | std| fd| | fdt vst trttndt| t| t| d}dd|i}t t |d} } } } |dd}d}|d} || k}|std|fd|| ft|t| d}dd|i}t t |d}}} t|v} | s0td| fdt|fdt vst tr ttnddt vst |rt|ndd}dd|i}t t |d} |t} t| } | sdddt vsKt trPttndt| t| d }t t |d} } |td}d!}||v}|std|fd||ft|d"t vst |rt|nd"d }d d |i} t t | d}}d#}|d!} || v}|std|fd$|| ft|t| d}dd|i}t t |d}}} d%}|d!} || v}|std|fd$|| ft|t| d}dd|i}t t |d}}} d&}|d!d#} || v}|sKtd|fd$|| ft|t| d}dd|i}t t |d}}} t|d!d#d&}d'}||v}|std|fd||ft|d(t vst |rt|nd(d }d d |i} t t | d}}d)}||v}|std|fd||ft|d(t vst |rt|nd(d }d d |i} t t | d}}d*}||v}|std|fd||ft|d(t vst |rt|nd(d }d d |i} t t | d}}|d)}d+} || k}|sItd|fd|| ft|t| d}dd|i}t t |d}}} dS),NrrtrurWrYrHrZr\r<r]r^r!rRrr_rr`rdrerrvrwrxryr"rrrrrb,assert %(py4)s {%(py4)s = %(py0)s(%(py2)s) }rrarbdatacite first_resultsupplemental_json_metadataz%(py1)s in %(py4)s isDescribedBy descriptionversionplot_descriptiontypeattrsplotr)r'r(r*r+r,r0r1r5r2r3r4r6r7rr)rrur9r:r;r<rjr>rkrlrmrnrorprqrrrHr}r~rrrrrr)test_title_plot_annotation_dataset_searchs. x jl ~llp~~~prcCstd}t}|jdd|id}t}td||t|j}d}||v}|sYtd|fd||ft|d t vsBt |rGt|nd d }d d |i} t t | d}}|d} t| } d } | | k} | std| fd| | fdt vst trttndt| t| t| d}dd|i}t t |d} } } } |dd}d}|d} || k}|std|fd|| ft|t| d}dd|i}t t |d}}} t|v} | s0td| fdt|fdt vst tr ttnddt vst |rt|ndd}dd|i}t t |d} |t} t| } | sdd dt vsKt trPttndt| t| d!}t t |d} } |td}d"}||v}|std|fd||ft|d#t vst |rt|nd#d }d d |i} t t | d}}d$}|d"} || v}|std|fd%|| ft|t| d}dd|i}t t |d}}} d&}|d"} || v}|std|fd%|| ft|t| d}dd|i}t t |d}}} d'}|d"d$} || v}|sKtd|fd%|| ft|t| d}dd|i}t t |d}}} t|d"d$d'}d(}||v}|std|fd||ft|d)t vst |rt|nd)d }d d |i} t t | d}}d*}||v}|std|fd||ft|d)t vst |rt|nd)d }d d |i} t t | d}}d+}||v}|std|fd||ft|d)t vst |rt|nd)d }d d |i} t t | d}}|d*}d,} || k}|sItd|fd|| ft|t| d}dd|i}t t |d}}} dS)-Nz,package:b5f9e5d7-7e09-4855-a923-a966454967d7z%/dataset_info/using_object_identifierrrWrYrHrZr\r<r]r^r!rRrr_rr`rdrerrrvrwrxryr"rrrrrbrrrrrrrrrrrrrr)rrr9r:r;r<rjr>rkrlrmrnrorprqrrrHr}r~rrrrrr%test_object_identifier_dataset_searchs. x jl ~llp~~~prcCstd}t}|jdd|id}t}td||t|j}d}||v}|sYtd|fd||ft|d t vsBt |rGt|nd d }d d |i} t t | d}}|d} t| } d } | | k} | std| fd| | fdt vst trttndt| t| t| d}dd|i}t t |d} } } } |dd}d}|d} | j} | }||k}|std|fd||ft|t| t| t|d}dd|i}t t |d}}} } }t|v} | sBtd| fdt|fdt vst trttnddt vs+t |r0t|ndd}dd|i}t t |d} |t} t| } | svd dt vs]t trbttndt| t| d!}t t |d} } d"}||v}|std|fd||ft|dt vst |rt|ndd }d d |i} t t | d}}|td}tt|tt||tD] }t|d#d$qdS)%NZ43z(/dataset_info/using_pennsieve_identifierrrWrYrHrZr\r<r]r^r!rRrr_rr`rdrerz%human islet microvasculature analysisrv)zD%(py1)s == %(py8)s {%(py8)s = %(py6)s {%(py6)s = %(py4)s.lower }() })rrbr"r#r$r%rr rrrbrrreadmerMrN)r)r'r(r*r+r,r0r1r5r2r3r4r6r7rlowerr )rrr9r:r;r<rjr>rkrlrmrnrorprqrrrHr?rArBrr}rrrr(test_pennsieve_identifier_dataset_search+s( x l~  rcCs|d}|j}d}||k}|sDtd|fd||fdtvs%t|r*t|ndt|t|d}dd|i}tt |d}}}dS) Nf/s3-resource/328/1/files/derivative/mapped_Pig%207_thumbnail.jpeg?s3BucketName=prd-sparc-discover-use1rz3%(py2)s {%(py2)s = %(py0)s.status_code } == %(py5)sr:rrar!assert %(py7)src) r( status_coder0r1r2r3r4r5r6r7)rr:rmr@rnrlrqrrr"test_name_mangling_for_s3_resourceCs rcCstj}dt_z|d}WnY|t_|j}d}||k}|sTtd|fd||fdtvs5t|r:t |ndt |t |d}dd |i}t t |d}}}dS) Nrirrr:rrrc) rDIRECT_DOWNLOAD_LIMITr(rr0r1r2r3r4r5r6r7)rZconfig_download_limitr:rmr@rnrlrqrrr&test_size_limit_on_mangled_s3_resourceIsr)0builtinsr2_pytest.assertion.rewrite assertionrewriter0r*pytestr app.configrZtimeitrr'app.scicrunch_processing_commonrrrrr r r r r Z known_doisrrfixturerrDrKrPmarkskiprsrrrrrrrrrrrrrrrrrs:"   , !#