/test/functional/test_library_features.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 578 lines · 505 code · 2 blank · 71 comment · 14 complexity · 9c432bbb86e14a2a7796e4330d6eed6d MD5 · raw file

  1. from base.twilltestcase import *
  2. from base.test_db_util import *
  3. # TODO: Functional tests start failing at 070, fix or eliminate rest of tests.
  4. class TestLibraryFeatures( TwillTestCase ):
  5. def test_000_initiate_users( self ):
  6. """Ensuring all required user accounts exist"""
  7. self.logout()
  8. self.login( email='test1@bx.psu.edu', username='regular-user1' )
  9. global regular_user1
  10. regular_user1 = get_user( 'test1@bx.psu.edu' )
  11. assert regular_user1 is not None, 'Problem retrieving user with email "test1@bx.psu.edu" from the database'
  12. global regular_user1_private_role
  13. regular_user1_private_role = get_private_role( regular_user1 )
  14. self.logout()
  15. self.login( email='test2@bx.psu.edu', username='regular-user2' )
  16. global regular_user2
  17. regular_user2 = get_user( 'test2@bx.psu.edu' )
  18. assert regular_user2 is not None, 'Problem retrieving user with email "test2@bx.psu.edu" from the database'
  19. global regular_user2_private_role
  20. regular_user2_private_role = get_private_role( regular_user2 )
  21. self.logout()
  22. self.login( email='test3@bx.psu.edu', username='regular-user3' )
  23. global regular_user3
  24. regular_user3 = get_user( 'test3@bx.psu.edu' )
  25. assert regular_user3 is not None, 'Problem retrieving user with email "test3@bx.psu.edu" from the database'
  26. global regular_user3_private_role
  27. regular_user3_private_role = get_private_role( regular_user3 )
  28. self.logout()
  29. self.login( email='test@bx.psu.edu', username='admin-user' )
  30. global admin_user
  31. admin_user = get_user( 'test@bx.psu.edu' )
  32. assert admin_user is not None, 'Problem retrieving user with email "test@bx.psu.edu" from the database'
  33. global admin_user_private_role
  34. admin_user_private_role = get_private_role( admin_user )
  35. def test_005_create_libraries( self ):
  36. """Testing creating libraries used in this script, then renaming one of them"""
  37. # Logged in as admin_user
  38. for index in range( 0, 3 ):
  39. name = 'library%s' % str( index + 1 )
  40. description = '%s description' % name
  41. synopsis = '%s synopsis' % name
  42. self.create_library( name=name, description=description, synopsis=synopsis )
  43. self.browse_libraries_admin( strings_displayed=[ name, description ] )
  44. # Get the libraries for later use
  45. global library1
  46. library1 = get_library( 'library1', 'library1 description', 'library1 synopsis' )
  47. assert library1 is not None, 'Problem retrieving library (library1) from the database'
  48. global library2
  49. library2 = get_library( 'library2', 'library2 description', 'library2 synopsis' )
  50. assert library2 is not None, 'Problem retrieving library (library2) from the database'
  51. global library3
  52. library3 = get_library( 'library3', 'library3 description', 'library3 synopsis' )
  53. assert library3 is not None, 'Problem retrieving library (library3) from the database'
  54. # Rename the library
  55. new_name = "library1 new name"
  56. new_description = "library1 new description"
  57. new_synopsis = "library1 new synopsis"
  58. self.library_info( 'library_admin',
  59. self.security.encode_id( library1.id ),
  60. library1.name,
  61. new_name=new_name,
  62. new_description=new_description,
  63. new_synopsis=new_synopsis )
  64. self.browse_libraries_admin( strings_displayed=[ new_name, new_description ] )
  65. # Reset the library back to the original name and description
  66. self.library_info( 'library_admin',
  67. self.security.encode_id( library1.id ),
  68. library1.name,
  69. new_name=name,
  70. new_description='library1 description',
  71. new_synopsis='library1 synopsis' )
  72. refresh( library1 )
  73. def test_030_add_folder_to_library1( self ):
  74. """Testing adding a folder to a library1"""
  75. # logged in as admin_user
  76. root_folder = library1.root_folder
  77. name = "folder1"
  78. description = "folder1 description"
  79. self.add_folder( 'library_admin',
  80. self.security.encode_id( library1.id ),
  81. self.security.encode_id( library1.root_folder.id ),
  82. name=name,
  83. description=description )
  84. global folder1
  85. folder1 = get_folder( root_folder.id, name, description )
  86. assert folder1 is not None, 'Problem retrieving library folder named "%s" from the database' % name
  87. self.browse_library( cntrller='library_admin',
  88. library_id=self.security.encode_id( library1.id ),
  89. strings_displayed=[ folder1.name, folder1.description ] )
  90. def test_035_add_subfolder_to_folder( self ):
  91. """Testing adding a folder to a folder"""
  92. # logged in as admin_user
  93. name = "Folder One's Subfolder"
  94. description = "This is the Folder One's subfolder"
  95. self.add_folder( 'library_admin',
  96. self.security.encode_id( library1.id ),
  97. self.security.encode_id( folder1.id ),
  98. name=name,
  99. description=description )
  100. global subfolder1
  101. subfolder1 = get_folder( folder1.id, name, description )
  102. assert subfolder1 is not None, 'Problem retrieving subfolder1 from the database'
  103. self.browse_library( cntrller='library_admin',
  104. library_id=self.security.encode_id( library1.id ),
  105. strings_displayed=[ subfolder1.name, subfolder1.description ] )
  106. def test_040_add_2nd_folder_to_library1( self ):
  107. """Testing adding a 2nd folder to a library1"""
  108. # logged in as admin_user
  109. name = "folder2"
  110. description = "folder2 description"
  111. self.add_folder( 'library_admin',
  112. self.security.encode_id( library1.id ),
  113. self.security.encode_id( library1.root_folder.id ),
  114. name=name,
  115. description=description )
  116. global folder2
  117. folder2 = get_folder( library1.root_folder.id, name, description )
  118. assert folder2 is not None, 'Problem retrieving library folder named "%s" from the database' % name
  119. self.browse_library( cntrller='library_admin',
  120. library_id=self.security.encode_id( library1.id ),
  121. strings_displayed=[ folder2.name, folder2.description ] )
  122. def test_045_add_public_dataset_to_folder2( self ):
  123. """Testing adding a public dataset to folder2"""
  124. # Logged in as admin_user
  125. filename = '2.bed'
  126. ldda_message = "Testing uploading %s" % filename
  127. self.upload_library_dataset( cntrller='library_admin',
  128. library_id=self.security.encode_id( library1.id ),
  129. folder_id=self.security.encode_id( folder2.id ),
  130. filename=filename,
  131. file_type='bed',
  132. dbkey='hg18',
  133. ldda_message=ldda_message,
  134. strings_displayed=[ 'Upload files' ] )
  135. global ldda2
  136. ldda2 = get_latest_ldda_by_name( filename )
  137. assert ldda2 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda2 from the database'
  138. self.browse_library( cntrller='library_admin',
  139. library_id=self.security.encode_id( library1.id ),
  140. strings_displayed=[ ldda2.name, ldda2.message, 'bed' ] )
  141. def test_050_add_2nd_public_dataset_to_folder2( self ):
  142. """Testing adding a 2nd public dataset folder2"""
  143. # Logged in as admin_user
  144. filename='3.bed'
  145. ldda_message = "Testing uploading %s" % filename
  146. self.upload_library_dataset( cntrller='library_admin',
  147. library_id=self.security.encode_id( library1.id ),
  148. folder_id=self.security.encode_id( folder2.id ),
  149. filename=filename,
  150. file_type='bed',
  151. dbkey='hg18',
  152. ldda_message=ldda_message,
  153. strings_displayed=[ 'Upload files' ] )
  154. global ldda3
  155. ldda3 = get_latest_ldda_by_name( filename )
  156. assert ldda3 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda3 from the database'
  157. self.browse_library( cntrller='library_admin',
  158. library_id=self.security.encode_id( library1.id ),
  159. strings_displayed=[ ldda3.name, ldda3.message, 'bed' ] )
  160. def test_055_copy_dataset_from_history_to_subfolder( self ):
  161. """Testing copying a dataset from the current history to a subfolder"""
  162. # logged in as admin_user
  163. self.new_history()
  164. filename = '4.bed'
  165. self.upload_file( filename )
  166. latest_hda = get_latest_hda()
  167. self.upload_library_dataset( cntrller='library_admin',
  168. library_id=self.security.encode_id( library1.id ),
  169. folder_id=self.security.encode_id( subfolder1.id ),
  170. upload_option='import_from_history',
  171. hda_ids=self.security.encode_id( latest_hda.id ),
  172. ldda_message='Imported from history',
  173. strings_displayed=[ 'Active datasets in your current history' ] )
  174. global ldda4
  175. ldda4 = get_latest_ldda_by_name( filename )
  176. assert ldda4 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda4 from the database'
  177. self.browse_library( cntrller='library_admin',
  178. library_id=self.security.encode_id( library1.id ),
  179. strings_displayed=[ ldda4.name, ldda4.message, 'bed' ] )
  180. def test_060_editing_dataset_attribute_info( self ):
  181. """Testing editing a library dataset's attribute information"""
  182. # logged in as admin_user
  183. new_ldda_name = '4.bed ( version 1 )'
  184. self.ldda_edit_info( 'library_admin',
  185. self.security.encode_id( library1.id ),
  186. self.security.encode_id( subfolder1.id ),
  187. self.security.encode_id( ldda4.id ),
  188. ldda4.name,
  189. new_ldda_name=new_ldda_name )
  190. refresh( ldda4 )
  191. self.browse_library( cntrller='library_admin',
  192. library_id=self.security.encode_id( library1.id ),
  193. strings_displayed=[ new_ldda_name, ldda4.message ] )
  194. def test_065_uploading_new_dataset_version( self ):
  195. """Testing uploading a new version of a library dataset"""
  196. # logged in as admin_user
  197. filename = '4.bed'
  198. ldda_message = 'Testing uploading a new version of a dataset'
  199. self.upload_library_dataset( cntrller='library_admin',
  200. library_id=self.security.encode_id( library1.id ),
  201. folder_id=self.security.encode_id( subfolder1.id ),
  202. replace_id=self.security.encode_id( ldda4.library_dataset.id ),
  203. filename=filename,
  204. file_type='auto',
  205. dbkey='hg18',
  206. ldda_message=ldda_message,
  207. strings_displayed=[ 'Upload files', 'You are currently selecting a new file to replace' ] )
  208. global ldda4_version2
  209. ldda4_version2 = get_latest_ldda_by_name( filename )
  210. assert ldda4_version2 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda4_version2 from the database'
  211. self.ldda_edit_info( 'library_admin',
  212. self.security.encode_id( library1.id ),
  213. self.security.encode_id( subfolder1.id ),
  214. self.security.encode_id( ldda4_version2.id ),
  215. ldda4_version2.name,
  216. strings_displayed=[ 'This is the latest version of this library dataset' ] )
  217. # Check the previous version
  218. self.ldda_edit_info( 'library_admin',
  219. self.security.encode_id( library1.id ),
  220. self.security.encode_id( subfolder1.id ),
  221. self.security.encode_id( ldda4.id ),
  222. ldda4.name,
  223. strings_displayed=[ 'This is an expired version of this library dataset' ] )
  224. # Make sure ldda4 is no longer displayed in the library
  225. self.browse_library( cntrller='library_admin',
  226. library_id=self.security.encode_id( library1.id ),
  227. strings_not_displayed=[ ldda4.name, ldda4.message ] )
  228. def test_070_upload_directory_of_files_from_libraries_view( self ):
  229. """Testing uploading a directory of files to a root folder from the Data Libraries view"""
  230. # logged in as admin_user
  231. # admin_user will not have the option to upload a directory of files from the
  232. # Libraries view since a sub-directory named the same as their email is not contained
  233. # in the configured user_library_import_dir ( in the test_data directory, only regular_user1
  234. # and regular_user3 have directories ). We'll need to give these 2 user LIBRARY_ADD permission
  235. # on library1 to test this feature.
  236. permissions_in = [ 'LIBRARY_ADD' ]
  237. permissions_out = [ 'LIBRARY_ACCESS', 'LIBRARY_MODIFY', 'LIBRARY_MANAGE' ]
  238. role_ids = '%s,%s' % ( str( regular_user1_private_role.id ), str( regular_user3_private_role.id ) )
  239. self.library_permissions( self.security.encode_id( library1.id ),
  240. library1.name,
  241. role_ids,
  242. permissions_in,
  243. permissions_out )
  244. self.logout()
  245. # Now that we have permissions set on the library, we can proceed to test uploading files
  246. self.login( email=regular_user1.email )
  247. ldda_message = 'Uploaded all files in test-data/users/test1...'
  248. # Since regular_user1 does not have any sub-directories contained within her configured
  249. # user_library_import_dir, the only option in her server_dir select list will be the
  250. # directory named the same as her email
  251. self.upload_library_dataset( cntrller='library',
  252. library_id=self.security.encode_id( library1.id ),
  253. folder_id=self.security.encode_id( library1.root_folder.id ),
  254. upload_option='upload_directory',
  255. server_dir=regular_user1.email,
  256. ldda_message=ldda_message,
  257. strings_displayed = [ "Upload a directory of files" ] )
  258. self.logout()
  259. self.login( regular_user3.email )
  260. ldda_message = 'Uploaded all files in test-data/users/test3.../run1'
  261. # Since regular_user2 has a subdirectory contained within her configured user_library_import_dir,
  262. # she will have a "None" option in her server_dir select list
  263. self.upload_library_dataset( cntrller='library',
  264. library_id=self.security.encode_id( library1.id ),
  265. folder_id=self.security.encode_id( library1.root_folder.id ),
  266. upload_option='upload_directory',
  267. server_dir='run1',
  268. ldda_message=ldda_message,
  269. strings_displayed=[ 'Upload a directory of files', '<option>None</option>' ] )
  270. def test_075_download_archive_of_library_files( self ):
  271. """Testing downloading an archive of files from library1"""
  272. # logged in as regular_user3
  273. self.logout()
  274. self.login( email=admin_user.email )
  275. filename = '1.bed'
  276. self.upload_library_dataset( cntrller='library_admin',
  277. library_id=self.security.encode_id( library1.id ),
  278. folder_id=self.security.encode_id( library1.root_folder.id ),
  279. filename=filename,
  280. file_type='bed',
  281. dbkey='hg18',
  282. strings_displayed=[ 'Upload files' ] )
  283. global ldda1
  284. ldda1 = get_latest_ldda_by_name( filename )
  285. assert ldda1 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda1 from the database'
  286. for format in ( 'tbz', 'tgz', 'zip' ):
  287. archive = self.download_archive_of_library_files( cntrller='library',
  288. library_id=self.security.encode_id( library1.id ),
  289. ldda_ids=[ self.security.encode_id( ldda1.id ), self.security.encode_id( ldda2.id ) ],
  290. format=format )
  291. self.check_archive_contents( archive, ( ldda1, ldda2 ) )
  292. os.remove( archive )
  293. def test_080_check_libraries_for_uploaded_directories_of_files( self ):
  294. """Testing the results of uploading directories of files to library1"""
  295. # We'll make sure the directories of files were uploaded in test_070... above.
  296. # We do this here because the check would generally fail if we did it in the
  297. # test_070... method since the files would not finish uploading before the check
  298. # was done. Hopefully doing the check here will allow for enough time...
  299. ldda_message = 'Uploaded all files in test-data/users/test1...'
  300. self.browse_library( 'library',
  301. self.security.encode_id( library1.id ),
  302. strings_displayed=[ 'fasta', ldda_message, '1.fasta' ] )
  303. ldda_message = 'Uploaded all files in test-data/users/test3.../run1'
  304. self.browse_library( 'library',
  305. self.security.encode_id( library1.id ),
  306. strings_displayed=[ 'fasta', ldda_message, '2.fasta' ] )
  307. def test_085_mark_ldda2_deleted( self ):
  308. """Testing marking ldda2 as deleted"""
  309. # Logged in as admin_user
  310. self.delete_library_item( 'library_admin',
  311. self.security.encode_id( library1.id ),
  312. self.security.encode_id( ldda2.library_dataset.id ),
  313. ldda2.name,
  314. item_type='library_dataset' )
  315. self.browse_library( cntrller='library_admin',
  316. library_id=self.security.encode_id( library1.id ),
  317. strings_not_displayed=[ ldda2.name, ldda2.message ] )
  318. def test_090_display_and_hide_deleted_ldda2( self ):
  319. """Testing displaying and hiding a deleted ldda2"""
  320. # Logged in as admin_user
  321. self.browse_library( cntrller='library_admin',
  322. library_id=self.security.encode_id( library1.id ),
  323. show_deleted=True,
  324. strings_displayed=[ ldda2.name, ldda2.message ] )
  325. self.browse_library( 'library_admin',
  326. self.security.encode_id( library1.id ),
  327. strings_not_displayed=[ ldda2.name, ldda2.message ] )
  328. def test_095_mark_folder2_deleted( self ):
  329. """Testing marking folder2 as deleted"""
  330. # Logged in as admin_user
  331. self.delete_library_item( 'library_admin',
  332. self.security.encode_id( library1.id ),
  333. self.security.encode_id( folder2.id ),
  334. folder2.name,
  335. item_type='folder' )
  336. self.browse_library( cntrller='library_admin',
  337. library_id=self.security.encode_id( library1.id ),
  338. strings_not_displayed=[ folder2.name ] )
  339. def test_100_mark_folder_undeleted( self ):
  340. """Testing marking a library folder as undeleted"""
  341. # Logged in as admin_user
  342. self.undelete_library_item( 'library_admin',
  343. self.security.encode_id( library1.id ),
  344. self.security.encode_id( folder2.id ),
  345. folder2.name,
  346. item_type='folder' )
  347. # 2.bed was deleted before the folder was deleted, so state should have been saved. In order
  348. # for 2.bed to be displayed, it would itself have to be marked undeleted.
  349. self.browse_library( cntrller='library_admin',
  350. library_id=self.security.encode_id( library1.id ),
  351. strings_displayed=[ folder2.name ],
  352. strings_not_displayed=[ ldda2.name ] )
  353. def test_105_mark_library_deleted( self ):
  354. """Testing marking a library as deleted"""
  355. # Logged in as admin_user
  356. # First mark folder2 as deleted to further test state saving when we undelete the library
  357. self.delete_library_item( 'library_admin',
  358. self.security.encode_id( library1.id ),
  359. self.security.encode_id( folder2.id ),
  360. folder2.name,
  361. item_type='folder' )
  362. self.delete_library_item( 'library_admin',
  363. self.security.encode_id( library1.id ),
  364. self.security.encode_id( library1.id ),
  365. library1.name,
  366. item_type='library' )
  367. self.browse_libraries_admin( strings_not_displayed=[ library1.name ] )
  368. self.browse_libraries_admin( deleted=True, strings_displayed=[ library1.name ] )
  369. def test_110_mark_library_undeleted( self ):
  370. """Testing marking a library as undeleted"""
  371. # Logged in as admin_user
  372. self.undelete_library_item( 'library_admin',
  373. self.security.encode_id( library1.id ),
  374. self.security.encode_id( library1.id ),
  375. library1.name,
  376. item_type='library' )
  377. self.browse_libraries_admin( strings_displayed=[ library1.name ] )
  378. self.browse_library( cntrller='library_admin',
  379. library_id=self.security.encode_id( library1.id ),
  380. strings_displayed=[ library1.name ],
  381. strings_not_displayed=[ folder2.name ] )
  382. def test_115_purge_library( self ):
  383. """Testing purging a library"""
  384. # Logged in as admin_user
  385. self.delete_library_item( 'library_admin',
  386. self.security.encode_id( library1.id ),
  387. self.security.encode_id( library1.id ),
  388. library1.name,
  389. item_type='library' )
  390. self.purge_library( self.security.encode_id( library1.id ), library1.name )
  391. # Make sure the library was purged
  392. refresh( library1 )
  393. if not ( library1.deleted and library1.purged ):
  394. raise AssertionError( 'The library id %s named "%s" has not been marked as deleted and purged.' % ( str( library1.id ), library1.name ) )
  395. def check_folder( library_folder ):
  396. for folder in library_folder.folders:
  397. refresh( folder )
  398. # Make sure all of the library_folders are purged
  399. if not folder.purged:
  400. raise AssertionError( 'The library_folder id %s named "%s" has not been marked purged.' % ( str( folder.id ), folder.name ) )
  401. check_folder( folder )
  402. # Make sure all of the LibraryDatasets and associated objects are deleted
  403. refresh( library_folder )
  404. for library_dataset in library_folder.datasets:
  405. refresh( library_dataset )
  406. ldda = library_dataset.library_dataset_dataset_association
  407. if ldda:
  408. refresh( ldda )
  409. if not ldda.deleted:
  410. raise AssertionError( 'The library_dataset_dataset_association id %s named "%s" has not been marked as deleted.' % \
  411. ( str( ldda.id ), ldda.name ) )
  412. # Make sure all of the datasets have been deleted
  413. dataset = ldda.dataset
  414. refresh( dataset )
  415. if not dataset.deleted:
  416. raise AssertionError( 'The dataset with id "%s" has not been marked as deleted when it should have been.' % \
  417. str( ldda.dataset.id ) )
  418. if not library_dataset.deleted:
  419. raise AssertionError( 'The library_dataset id %s named "%s" has not been marked as deleted.' % \
  420. ( str( library_dataset.id ), library_dataset.name ) )
  421. check_folder( library1.root_folder )
  422. def test_120_populate_public_library2( self ):
  423. """Testing library datasets within a library"""
  424. # Logged in as admin_user
  425. # Add a folder named Three to library2 root
  426. root_folder = library2.root_folder
  427. name = "One"
  428. description = "One description"
  429. self.add_folder( 'library_admin',
  430. self.security.encode_id( library2.id ),
  431. self.security.encode_id( root_folder.id ),
  432. name=name,
  433. description=description )
  434. global folder3
  435. folder3 = get_folder( root_folder.id, name, description )
  436. assert folder3 is not None, 'Problem retrieving library folder named "%s" from the database' % name
  437. # Upload dataset 1.bed to folder One
  438. filename = '1.bed'
  439. ldda_message = "Testing uploading %s" % filename
  440. self.upload_library_dataset( cntrller='library_admin',
  441. library_id=self.security.encode_id( library2.id ),
  442. folder_id=self.security.encode_id( folder3.id ),
  443. filename=filename,
  444. file_type='bed',
  445. dbkey='hg18',
  446. ldda_message=ldda_message,
  447. strings_displayed=[ 'Upload files' ] )
  448. global ldda5
  449. ldda5 = get_latest_ldda_by_name( filename )
  450. assert ldda5 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda5 from the database'
  451. # Add a sub-folder named Two to folder One
  452. name = "Two"
  453. description = "Two description"
  454. self.add_folder( 'library_admin',
  455. self.security.encode_id( library2.id ),
  456. self.security.encode_id( folder3.id ),
  457. name=name,
  458. description=description )
  459. global folder4
  460. folder4 = get_folder( folder3.id, name, description )
  461. assert folder4 is not None, 'Problem retrieving library folder named "%s" from the database' % name
  462. # Upload dataset 2.bed to folder Two
  463. filename = '2.bed'
  464. ldda_message = "Testing uploading %s" % filename
  465. self.upload_library_dataset( cntrller='library_admin',
  466. library_id=self.security.encode_id( library2.id ),
  467. folder_id=self.security.encode_id( folder4.id ),
  468. filename=filename,
  469. file_type='bed',
  470. dbkey='hg18',
  471. ldda_message=ldda_message,
  472. strings_displayed=[ 'Upload files' ] )
  473. global ldda6
  474. ldda6 = get_latest_ldda_by_name( filename )
  475. assert ldda6 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda6 from the database'
  476. # Add a folder named Three to library2 root
  477. name = "Three"
  478. description = "Three description"
  479. self.add_folder( 'library_admin',
  480. self.security.encode_id( library2.id ),
  481. self.security.encode_id( root_folder.id ),
  482. name=name,
  483. description=description )
  484. global folder5
  485. folder5 = get_folder( root_folder.id, name, description )
  486. assert folder5 is not None, 'Problem retrieving library folder named "%s" from the database' % name
  487. # Upload dataset 3.bed to library2 root folder
  488. filename = '3.bed'
  489. ldda_message = "Testing uploading %s" % filename
  490. self.upload_library_dataset( cntrller='library_admin',
  491. library_id=self.security.encode_id( library2.id ),
  492. folder_id=self.security.encode_id( root_folder.id ),
  493. filename=filename,
  494. file_type='bed',
  495. dbkey='hg18',
  496. ldda_message=ldda_message,
  497. strings_displayed=[ 'Upload files' ] )
  498. global ldda7
  499. ldda7 = get_latest_ldda_by_name( filename )
  500. assert ldda7 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda7 from the database'
  501. def test_125_move_dataset_within_library2( self ):
  502. """Testing moving a dataset within library2"""
  503. # Logged in as admin_user
  504. # Move 3.bed to folder Three
  505. self.move_library_item( cntrller='library_admin',
  506. item_type='ldda',
  507. item_id=self.security.encode_id( ldda7.id ),
  508. source_library_id=self.security.encode_id( library2.id ),
  509. make_target_current=True,
  510. target_folder_id=self.security.encode_id( folder5.id ),
  511. strings_displayed=[ 'Move data library items',
  512. '3.bed' ],
  513. strings_displayed_after_submit=[ '1 dataset moved to folder (Three) within data library (library2)' ] )
  514. def test_130_move_folder_to_another_library( self ):
  515. """Testing moving a folder to another library"""
  516. # Logged in as admin_user
  517. # Move folder Three which now includes 3.bed to library3
  518. self.move_library_item( cntrller='library_admin',
  519. item_type='folder',
  520. item_id=self.security.encode_id( folder5.id ),
  521. source_library_id=self.security.encode_id( library2.id ),
  522. make_target_current=False,
  523. target_library_id=self.security.encode_id( library3.id ),
  524. target_folder_id=self.security.encode_id( library3.root_folder.id ),
  525. strings_displayed=[ 'Move data library items',
  526. 'Three' ],
  527. strings_displayed_after_submit=[ 'Moved folder (Three) to folder (library3) within data library (library3)' ] )
  528. # Make sure folder Three is not longer in library2
  529. self.browse_library( cntrller='library_admin',
  530. library_id=self.security.encode_id( library2.id ),
  531. strings_displayed=[ folder4.name, folder4.description ],
  532. strings_not_displayed=[ folder5.name, folder5.description ] )
  533. # Make sure folder Three was moved to library3
  534. self.browse_library( cntrller='library_admin',
  535. library_id=self.security.encode_id( library3.id ),
  536. strings_displayed=[ folder5.name, folder5.description, ldda7.name ] )
  537. def test_135_upload_unsorted_bam_to_library_using_file_path_with_link_to_file( self ):
  538. """Test uploading 3unsorted.bam, using filesystem_paths option in combination with link_to_files"""
  539. filename = '3unsorted.bam'
  540. self.upload_library_dataset( cntrller='library_admin',
  541. library_id=self.security.encode_id( library2.id ),
  542. folder_id=self.security.encode_id( library2.root_folder.id ),
  543. upload_option='upload_paths',
  544. link_data_only='link_to_files',
  545. filesystem_paths='test-data/3unsorted.bam' )
  546. global ldda8
  547. ldda8 = get_latest_ldda_by_name( filename )
  548. assert ldda8 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda8 from the database'
  549. # The upload above should produce an error condition in the uploaded library dataset since
  550. # the uploaded bam file is not sorted, and we are linking to the file.
  551. self.ldda_info( cntrller='library_admin',
  552. library_id=self.security.encode_id( library2.id ),
  553. folder_id=self.security.encode_id( library2.root_folder.id ),
  554. ldda_id=self.security.encode_id( ldda8.id ),
  555. strings_displayed=[ 'The uploaded files need grooming, so change your <b>Copy data into Galaxy?</b> selection to be' ] )
  556. def test_999_reset_data_for_later_test_runs( self ):
  557. """Reseting data to enable later test runs to pass"""
  558. # Logged in as admin_user
  559. ##################
  560. # Purge all libraries
  561. ##################
  562. for library in [ library1, library2, library3 ]:
  563. self.delete_library_item( 'library_admin',
  564. self.security.encode_id( library.id ),
  565. self.security.encode_id( library.id ),
  566. library.name,
  567. item_type='library' )
  568. self.purge_library( self.security.encode_id( library.id ), library.name )
  569. ##################
  570. # Make sure all users are associated only with their private roles
  571. ##################
  572. for user in [ admin_user, regular_user1, regular_user2, regular_user3 ]:
  573. refresh( user )
  574. if len( user.roles) != 1:
  575. raise AssertionError( '%d UserRoleAssociations are associated with %s ( should be 1 )' % ( len( user.roles ), user.email ) )
  576. self.logout()