mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-16 07:19:13 +08:00
650 lines
39 KiB
Python
650 lines
39 KiB
Python
from base.twilltestcase import *
|
|
from base.test_db_util import *
|
|
|
|
class TestLibraryFeatures( TwillTestCase ):
|
|
def test_000_initiate_users( self ):
|
|
"""Ensuring all required user accounts exist"""
|
|
self.logout()
|
|
self.login( email='test1@bx.psu.edu', username='regular-user1' )
|
|
global regular_user1
|
|
regular_user1 = get_user( 'test1@bx.psu.edu' )
|
|
assert regular_user1 is not None, 'Problem retrieving user with email "test1@bx.psu.edu" from the database'
|
|
global regular_user1_private_role
|
|
regular_user1_private_role = get_private_role( regular_user1 )
|
|
self.logout()
|
|
self.login( email='test2@bx.psu.edu', username='regular-user2' )
|
|
global regular_user2
|
|
regular_user2 = get_user( 'test2@bx.psu.edu' )
|
|
assert regular_user2 is not None, 'Problem retrieving user with email "test2@bx.psu.edu" from the database'
|
|
global regular_user2_private_role
|
|
regular_user2_private_role = get_private_role( regular_user2 )
|
|
self.logout()
|
|
self.login( email='test3@bx.psu.edu', username='regular-user3' )
|
|
global regular_user3
|
|
regular_user3 = get_user( 'test3@bx.psu.edu' )
|
|
assert regular_user3 is not None, 'Problem retrieving user with email "test3@bx.psu.edu" from the database'
|
|
global regular_user3_private_role
|
|
regular_user3_private_role = get_private_role( regular_user3 )
|
|
self.logout()
|
|
self.login( email='test@bx.psu.edu', username='admin-user' )
|
|
global admin_user
|
|
admin_user = get_user( 'test@bx.psu.edu' )
|
|
assert admin_user is not None, 'Problem retrieving user with email "test@bx.psu.edu" from the database'
|
|
global admin_user_private_role
|
|
admin_user_private_role = get_private_role( admin_user )
|
|
def test_005_create_library( self ):
|
|
"""Testing creating a new library, then renaming it"""
|
|
# Logged in as admin_user
|
|
name = "library features Library1"
|
|
description = "library features Library1 description"
|
|
synopsis = "library features Library1 synopsis"
|
|
self.create_library( name=name, description=description, synopsis=synopsis )
|
|
self.browse_libraries_admin( check_str1=name, check_str2=description )
|
|
# Get the library object for later tests
|
|
global library_one
|
|
library_one = get_library( name, description, synopsis )
|
|
assert library_one is not None, 'Problem retrieving library named "%s" from the database' % name
|
|
# Rename the library
|
|
new_name = "library features Library1 new name"
|
|
new_description = "library features Library1 new description"
|
|
new_synopsis = "library features Library1 new synopsis"
|
|
self.library_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
new_name=new_name,
|
|
new_description=new_description,
|
|
new_synopsis=new_synopsis )
|
|
self.browse_libraries_admin( check_str1=new_name, check_str2=new_description )
|
|
# Reset the library back to the original name and description
|
|
self.library_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
new_name=name,
|
|
new_description=description,
|
|
new_synopsis=synopsis )
|
|
refresh( library_one )
|
|
def test_010_library_template_features( self ):
|
|
"""Testing adding a template to a library, then filling in the contents"""
|
|
# Logged in as admin_user
|
|
form_name = 'Library template Form One'
|
|
form_desc = 'This is Form One'
|
|
form_type = galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE
|
|
# Create form for library template
|
|
self.create_form( name=form_name, desc=form_desc, formtype=form_type )
|
|
global form_one
|
|
form_one = get_form( form_name )
|
|
assert form_one is not None, 'Problem retrieving form named (%s) from the database' % form_name
|
|
# Add new template based on the form to the library
|
|
template_name = 'Library Template 1'
|
|
self.add_library_template( 'library_admin',
|
|
'library',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( form_one.id ),
|
|
form_one.name )
|
|
# Make sure the template fields are displayed on the library information page
|
|
field_dict = form_one.fields[ 0 ]
|
|
global form_one_field_label
|
|
form_one_field_label = '%s' % str( field_dict.get( 'label', 'Field 0' ) )
|
|
global form_one_field_help
|
|
form_one_field_help = '%s' % str( field_dict.get( 'helptext', 'Field 0 help' ) )
|
|
global form_one_field_required
|
|
form_one_field_required = '%s' % str( field_dict.get( 'required', 'optional' ) ).capitalize()
|
|
# Add information to the library using the template
|
|
global form_one_field_name
|
|
form_one_field_name = 'field_0'
|
|
contents = '%s library contents' % form_one_field_label
|
|
self.library_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
ele_1_field_name=form_one_field_name,
|
|
ele_1_contents=contents )
|
|
def test_015_edit_template_contents_admin_view( self ):
|
|
"""Test editing template contents from the Admin view"""
|
|
# Logged in as admin_user
|
|
# Make sure the template contents were from the previous method correctly saved
|
|
# Twill barfs if this test is run in the previous method.
|
|
contents = '%s library contents' % form_one_field_label
|
|
self.library_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
check_str1=contents )
|
|
contents_edited = contents + ' edited'
|
|
# Edit the contents and then save them
|
|
self.library_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
ele_1_field_name=form_one_field_name,
|
|
ele_1_contents=contents_edited )
|
|
# Make sure the template contents were correctly saved
|
|
self.library_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
check_str1=contents_edited )
|
|
def test_020_edit_template_admin_view( self ):
|
|
"""Test editing the layout of a template from the Admin view"""
|
|
# Since there is only 1 field currently in the form definition, we'll add another
|
|
field_name = 'field_name_1'
|
|
field_name_value = 'Field 1'
|
|
field_help = 'field_helptext_1'
|
|
field_help_value = 'Field 1 help'
|
|
field_type = 'field_type_1'
|
|
field_type_value = 'TextArea'
|
|
self.edit_template( 'library_admin',
|
|
'library',
|
|
self.security.encode_id( library_one.id ),
|
|
field_name=field_name,
|
|
field_name_value=field_name_value,
|
|
field_help=field_help,
|
|
field_help_value=field_help_value,
|
|
field_type=field_type,
|
|
field_type_value=field_type_value )
|
|
def test_025_add_public_dataset_to_root_folder( self ):
|
|
"""Testing adding a public dataset to the root folder, making sure library template is inherited"""
|
|
# Logged in as admin_user
|
|
message = 'Testing adding a public dataset to the root folder'
|
|
# The template should be inherited to the library dataset upload form.
|
|
template_contents = "%s contents for root folder 1.bed" % form_one_field_label
|
|
self.add_library_dataset( 'library_admin',
|
|
'1.bed',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( library_one.root_folder.id ),
|
|
library_one.root_folder.name,
|
|
file_type='bed',
|
|
dbkey='hg18',
|
|
message=message.replace( ' ', '+' ),
|
|
root=True,
|
|
template_field_name1=form_one_field_name,
|
|
template_field_contents1=template_contents )
|
|
global ldda_one
|
|
ldda_one = get_latest_ldda()
|
|
assert ldda_one is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda_one from the database'
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1='1.bed',
|
|
check_str2=message,
|
|
check_str3=admin_user.email )
|
|
# Make sure the library template contents were correctly saved
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( library_one.root_folder.id ),
|
|
self.security.encode_id( ldda_one.id ),
|
|
ldda_one.name,
|
|
check_str1=template_contents )
|
|
def test_030_add_new_folder_to_root_folder( self ):
|
|
"""Testing adding a folder to a library root folder"""
|
|
# logged in as admin_user
|
|
root_folder = library_one.root_folder
|
|
name = "Root Folder's Folder One"
|
|
description = "This is the root folder's Folder One"
|
|
self.add_folder( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( root_folder.id ),
|
|
name=name,
|
|
description=description )
|
|
global folder_one
|
|
folder_one = get_folder( root_folder.id, name, description )
|
|
assert folder_one is not None, 'Problem retrieving library folder named "%s" from the database' % name
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=name,
|
|
check_str2=description )
|
|
# Make sure the template was inherited, but the contents were not
|
|
contents = '%s library contents' % form_one_field_label
|
|
self.folder_info( 'library_admin',
|
|
self.security.encode_id( folder_one.id ),
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=form_one_field_name,
|
|
not_displayed=contents )
|
|
# Add contents to the inherited template
|
|
template_contents = "%s contents for Folder One" % form_one_field_label
|
|
self.folder_info( 'library_admin',
|
|
self.security.encode_id( folder_one.id ),
|
|
self.security.encode_id( library_one.id ),
|
|
field_name=form_one_field_name,
|
|
contents=template_contents )
|
|
def test_035_add_subfolder_to_folder( self ):
|
|
"""Testing adding a folder to a library folder"""
|
|
# logged in as admin_user
|
|
name = "Folder One's Subfolder"
|
|
description = "This is the Folder One's subfolder"
|
|
self.add_folder( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_one.id ),
|
|
name=name,
|
|
description=description )
|
|
global subfolder_one
|
|
subfolder_one = get_folder( folder_one.id, name, description )
|
|
assert subfolder_one is not None, 'Problem retrieving library folder named "Folder Ones Subfolder" from the database'
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=name,
|
|
check_str2=description )
|
|
# Make sure the template was inherited, but the contents were not
|
|
contents = '%s library contents' % form_one_field_label
|
|
self.folder_info( 'library_admin',
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=form_one_field_name,
|
|
not_displayed=contents )
|
|
# Add contents to the inherited template
|
|
template_contents = "%s contents for Folder One" % form_one_field_label
|
|
self.folder_info( 'library_admin',
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( library_one.id ),
|
|
field_name=form_one_field_name,
|
|
contents=template_contents )
|
|
def test_040_add_2nd_new_folder_to_root_folder( self ):
|
|
"""Testing adding a 2nd folder to a library root folder"""
|
|
# logged in as admin_user
|
|
root_folder = library_one.root_folder
|
|
name = "Folder Two"
|
|
description = "This is the root folder's Folder Two"
|
|
self.add_folder( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( root_folder.id ),
|
|
name=name,
|
|
description=description )
|
|
global folder_two
|
|
folder_two = get_folder( root_folder.id, name, description )
|
|
assert folder_two is not None, 'Problem retrieving library folder named "%s" from the database' % name
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=name,
|
|
check_str2=description )
|
|
def test_045_add_public_dataset_to_root_folders_2nd_subfolder( self ):
|
|
"""Testing adding a public dataset to the root folder's 2nd sub-folder"""
|
|
# Logged in as admin_user
|
|
message = "Testing adding a public dataset to the folder named %s" % folder_two.name
|
|
# The form_one template should be inherited to the library dataset upload form.
|
|
template_contents = "%s contents for %s 2.bed" % ( form_one_field_label, folder_two.name )
|
|
self.add_library_dataset( 'library_admin',
|
|
'2.bed',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_two.id ),
|
|
folder_two.name,
|
|
file_type='bed',
|
|
dbkey='hg18',
|
|
message=message.replace( ' ', '+' ),
|
|
root=False,
|
|
template_field_name1=form_one_field_name,
|
|
template_field_contents1=template_contents )
|
|
global ldda_two
|
|
ldda_two = get_latest_ldda()
|
|
assert ldda_two is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda_two from the database'
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1='2.bed',
|
|
check_str2=message,
|
|
check_str3=admin_user.email )
|
|
# Make sure the library template contents were correctly saved
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_two.id ),
|
|
self.security.encode_id( ldda_two.id ),
|
|
ldda_two.name,
|
|
check_str1=template_contents )
|
|
def test_050_add_2nd_public_dataset_to_root_folders_2nd_subfolder( self ):
|
|
"""Testing adding a 2nd public dataset to the root folder's 2nd sub-folder"""
|
|
# Logged in as admin_user
|
|
message = "Testing adding a 2nd public dataset to the folder named %s" % folder_two.name
|
|
# The form_one template should be inherited to the library dataset upload form.
|
|
template_contents = "%s contents for %s 3.bed" % ( form_one_field_label, folder_two.name )
|
|
self.add_library_dataset( 'library_admin',
|
|
'3.bed',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_two.id ),
|
|
folder_two.name,
|
|
file_type='bed',
|
|
dbkey='hg18',
|
|
message=message.replace( ' ', '+' ),
|
|
root=False,
|
|
template_field_name1=form_one_field_name,
|
|
template_field_contents1=template_contents )
|
|
global ldda_three
|
|
ldda_three = get_latest_ldda()
|
|
assert ldda_three is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda_three from the database'
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1='3.bed',
|
|
check_str2=message,
|
|
check_str3=admin_user.email )
|
|
# Make sure the library template contents were correctly saved
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_two.id ),
|
|
self.security.encode_id( ldda_three.id ),
|
|
ldda_three.name,
|
|
check_str1=template_contents )
|
|
def test_055_copy_dataset_from_history_to_subfolder( self ):
|
|
"""Testing copying a dataset from the current history to a subfolder"""
|
|
# logged in as admin_user
|
|
self.new_history()
|
|
self.upload_file( "4.bed" )
|
|
latest_hda = get_latest_hda()
|
|
self.add_history_datasets_to_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
subfolder_one.name,
|
|
self.security.encode_id( latest_hda.id ),
|
|
root=False )
|
|
global ldda_four
|
|
ldda_four = get_latest_ldda()
|
|
assert ldda_four is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda_four from the database'
|
|
# Make sure the correct template was inherited but the contents were not inherited
|
|
contents = "%s contents for Folder One's Subfolder" % form_one_field_label
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( ldda_four.id ),
|
|
ldda_four.name,
|
|
check_str1=form_one_field_name,
|
|
not_displayed=contents )
|
|
def test_060_editing_dataset_attribute_info( self ):
|
|
"""Testing editing a library dataset's attribute information"""
|
|
# logged in as admin_user
|
|
new_ldda_name = '4.bed ( version 1 )'
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( ldda_four.id ),
|
|
ldda_four.name,
|
|
new_ldda_name=new_ldda_name )
|
|
refresh( ldda_four )
|
|
self.browse_library( 'library_admin', self.security.encode_id( library_one.id ), check_str1=new_ldda_name )
|
|
# Make sure the correct template was inherited but the contents were not inherited
|
|
contents = "%s contents for Folder One's Subfolder" % form_one_field_label
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( ldda_four.id ),
|
|
ldda_four.name,
|
|
check_str1=form_one_field_name,
|
|
not_displayed=contents )
|
|
def test_065_uploading_new_dataset_version( self ):
|
|
"""Testing uploading a new version of a library dataset"""
|
|
# logged in as admin_user
|
|
message = 'Testing uploading a new version of a dataset'
|
|
# The form_one template should be inherited to the library dataset upload form.
|
|
template_contents = "%s contents for %s new version of 4.bed" % ( form_one_field_label, folder_one.name )
|
|
self.upload_new_dataset_version( 'library_admin',
|
|
'4.bed',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
subfolder_one.name,
|
|
self.security.encode_id( ldda_four.library_dataset.id ),
|
|
ldda_four.name,
|
|
file_type='auto',
|
|
dbkey='hg18',
|
|
message=message.replace( ' ', '+' ),
|
|
template_field_name1=form_one_field_name,
|
|
template_field_contents1=template_contents )
|
|
global ldda_four_version_two
|
|
ldda_four_version_two = get_latest_ldda()
|
|
assert ldda_four_version_two is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda_four_version_two from the database'
|
|
# Make sure the correct template was inherited, but does not include any contents
|
|
contents = "%s contents for Folder One's Subfolder" % form_one_field_label
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( ldda_four_version_two.id ),
|
|
ldda_four_version_two.name,
|
|
check_str1='This is the latest version of this library dataset',
|
|
not_displayed=contents )
|
|
# Fill in the template contents
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( ldda_four_version_two.id ),
|
|
ldda_four_version_two.name,
|
|
ele_1_field_name=form_one_field_name,
|
|
ele_1_contents=template_contents )
|
|
# Check the previous version
|
|
self.ldda_edit_info( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( subfolder_one.id ),
|
|
self.security.encode_id( ldda_four.id ),
|
|
ldda_four.name,
|
|
check_str1='This is an expired version of this library dataset' )
|
|
# Make sure ldda_four is no longer displayed in the library
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
not_displayed=ldda_four.name )
|
|
def test_070_upload_directory_of_files_from_libraries_view( self ):
|
|
"""Testing uploading a directory of files to a root folder from the Data Libraries view"""
|
|
# logged in as admin_user
|
|
# admin_user will not have the option to upload a directory of files from the
|
|
# Libraries view since a sub-directory named the same as their email is not contained
|
|
# in the configured user_library_import_dir ( in the test_data directory, only regular_user1
|
|
# and regular_user3 have directories ). We'll need to give these 2 user LIBRARY_ADD permission
|
|
# on library_one to test this feature.
|
|
permissions_in = [ 'LIBRARY_ADD' ]
|
|
permissions_out = [ 'LIBRARY_ACCESS', 'LIBRARY_MODIFY', 'LIBRARY_MANAGE' ]
|
|
role_ids = '%s,%s' % ( str( regular_user1_private_role.id ), str( regular_user3_private_role.id ) )
|
|
# Role one members are: admin_user, regular_user1, regular_user3. Each of these users will be permitted for
|
|
# LIBRARY_ACCESS, LIBRARY_ADD, LIBRARY_MODIFY, LIBRARY_MANAGE on this library and it's contents.
|
|
self.library_permissions( self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
role_ids,
|
|
permissions_in,
|
|
permissions_out )
|
|
self.logout()
|
|
# Now that we have permissions set on the library, we can proceed to test uploading files
|
|
self.login( email=regular_user1.email )
|
|
message = 'Uploaded all files in test-data/users/test1...'
|
|
# Since regular_user1 does not have any sub-directories contained within her configured
|
|
# user_library_import_dir, the only option in her server_dir select list will be the
|
|
# directory named the same as her email
|
|
check_str_after_submit = "Added 1 datasets to the library '%s' (each is selected)." % library_one.root_folder.name
|
|
self.upload_directory_of_files( 'library',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( library_one.root_folder.id ),
|
|
server_dir=regular_user1.email,
|
|
message=message,
|
|
check_str_after_submit=check_str_after_submit )
|
|
self.browse_library( 'library',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=regular_user1.email,
|
|
check_str2=message )
|
|
self.logout()
|
|
self.login( regular_user3.email )
|
|
message = 'Uploaded all files in test-data/users/test3.../run1'
|
|
# Since regular_user2 has a subdirectory contained within her configured user_library_import_dir,
|
|
# she will have a "None" option in her server_dir select list
|
|
self.upload_directory_of_files( 'library',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( library_one.root_folder.id ),
|
|
server_dir='run1',
|
|
message=message,
|
|
check_str1='<option>None</option>',
|
|
check_str_after_submit=check_str_after_submit )
|
|
self.browse_library( 'library',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=regular_user3.email,
|
|
check_str2=message )
|
|
def test_075_download_archive_of_library_files( self ):
|
|
"""Testing downloading an archive of files from the library"""
|
|
# logged in as regular_user3
|
|
self.logout()
|
|
self.login( email=admin_user.email )
|
|
for format in ( 'tbz', 'tgz', 'zip' ):
|
|
archive = self.download_archive_of_library_files( cntrller='library',
|
|
library_id=self.security.encode_id( library_one.id ),
|
|
ldda_ids=[ self.security.encode_id( ldda_one.id ), self.security.encode_id( ldda_two.id ) ],
|
|
format=format )
|
|
self.check_archive_contents( archive, ( ldda_one, ldda_two ) )
|
|
os.remove( archive )
|
|
def test_080_mark_dataset_deleted( self ):
|
|
"""Testing marking a library dataset as deleted"""
|
|
# Logged in as admin_user
|
|
self.delete_library_item( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( ldda_two.library_dataset.id ),
|
|
ldda_two.name,
|
|
item_type='library_dataset' )
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
not_displayed=ldda_two.name )
|
|
def test_085_display_and_hide_deleted_dataset( self ):
|
|
"""Testing displaying and hiding a deleted library dataset"""
|
|
# Logged in as admin_user
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
show_deleted=True,
|
|
check_str1=ldda_two.name )
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
not_displayed=ldda_two.name )
|
|
def test_090_mark_folder_deleted( self ):
|
|
"""Testing marking a library folder as deleted"""
|
|
# Logged in as admin_user
|
|
self.delete_library_item( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_two.id ),
|
|
folder_two.name,
|
|
item_type='folder' )
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
not_displayed=folder_two.name )
|
|
def test_095_mark_folder_undeleted( self ):
|
|
"""Testing marking a library folder as undeleted"""
|
|
# Logged in as admin_user
|
|
self.undelete_library_item( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_two.id ),
|
|
folder_two.name,
|
|
item_type='folder' )
|
|
# 2.bed was deleted before the folder was deleted, so state should have been saved. In order
|
|
# for 2.bed to be displayed, it would itself have to be marked undeleted.
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=folder_two.name,
|
|
not_displayed=ldda_two.name )
|
|
def test_100_mark_library_deleted( self ):
|
|
"""Testing marking a library as deleted"""
|
|
# Logged in as admin_user
|
|
# First mark folder_two as deleted to further test state saving when we undelete the library
|
|
self.delete_library_item( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( folder_two.id ),
|
|
folder_two.name,
|
|
item_type='folder' )
|
|
self.delete_library_item( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
item_type='library' )
|
|
self.browse_libraries_admin( not_displayed1=library_one.name )
|
|
self.browse_libraries_admin( deleted=True, check_str1=library_one.name )
|
|
def test_105_mark_library_undeleted( self ):
|
|
"""Testing marking a library as undeleted"""
|
|
# Logged in as admin_user
|
|
self.undelete_library_item( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
item_type='library' )
|
|
self.browse_libraries_admin( check_str1=library_one.name )
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
check_str1=library_one.name,
|
|
not_displayed=folder_two.name )
|
|
def test_110_purge_library( self ):
|
|
"""Testing purging a library"""
|
|
# Logged in as admin_user
|
|
self.delete_library_item( 'library_admin',
|
|
self.security.encode_id( library_one.id ),
|
|
self.security.encode_id( library_one.id ),
|
|
library_one.name,
|
|
item_type='library' )
|
|
self.purge_library( self.security.encode_id( library_one.id ), library_one.name )
|
|
# Make sure the library was purged
|
|
refresh( library_one )
|
|
if not ( library_one.deleted and library_one.purged ):
|
|
raise AssertionError( 'The library id %s named "%s" has not been marked as deleted and purged.' % ( str( library_one.id ), library_one.name ) )
|
|
def check_folder( library_folder ):
|
|
for folder in library_folder.folders:
|
|
refresh( folder )
|
|
# Make sure all of the library_folders are purged
|
|
if not folder.purged:
|
|
raise AssertionError( 'The library_folder id %s named "%s" has not been marked purged.' % ( str( folder.id ), folder.name ) )
|
|
check_folder( folder )
|
|
# Make sure all of the LibraryDatasets and associated objects are deleted
|
|
refresh( library_folder )
|
|
for library_dataset in library_folder.datasets:
|
|
refresh( library_dataset )
|
|
ldda = library_dataset.library_dataset_dataset_association
|
|
if ldda:
|
|
refresh( ldda )
|
|
if not ldda.deleted:
|
|
raise AssertionError( 'The library_dataset_dataset_association id %s named "%s" has not been marked as deleted.' % \
|
|
( str( ldda.id ), ldda.name ) )
|
|
# Make sure all of the datasets have been deleted
|
|
dataset = ldda.dataset
|
|
refresh( dataset )
|
|
if not dataset.deleted:
|
|
raise AssertionError( 'The dataset with id "%s" has not been marked as deleted when it should have been.' % \
|
|
str( ldda.dataset.id ) )
|
|
if not library_dataset.deleted:
|
|
raise AssertionError( 'The library_dataset id %s named "%s" has not been marked as deleted.' % \
|
|
( str( library_dataset.id ), library_dataset.name ) )
|
|
check_folder( library_one.root_folder )
|
|
def test_115_no_library_template( self ):
|
|
"""Test library features when library has no template"""
|
|
# Logged in as admin_user
|
|
name = "library features Library Two"
|
|
description = "library features This is Library Two"
|
|
synopsis = "library features Library Two synopsis"
|
|
# Create a library, adding no template
|
|
self.create_library( name=name, description=description, synopsis=synopsis )
|
|
self.browse_libraries_admin( check_str1=name, check_str2=description )
|
|
global library_two
|
|
library_two = get_library( name, description, synopsis )
|
|
assert library_two is not None, 'Problem retrieving library named "%s" from the database' % name
|
|
# Add a dataset to the library
|
|
self.add_library_dataset( 'library_admin',
|
|
'3.bed',
|
|
self.security.encode_id( library_two.id ),
|
|
self.security.encode_id( library_two.root_folder.id ),
|
|
library_two.root_folder.name,
|
|
file_type='bed',
|
|
dbkey='hg18',
|
|
message='',
|
|
root=True )
|
|
ldda_three = get_latest_ldda()
|
|
assert ldda_three is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda_three from the database'
|
|
self.browse_library( 'library_admin',
|
|
self.security.encode_id( library_two.id ),
|
|
check_str1='3.bed',
|
|
check_str2=admin_user.email )
|
|
# TODO: add a functional test to cover adding a library dataset via url_paste here...
|
|
# TODO: Add a functional test to cover checking the space_to_tab checkbox here...
|
|
# Delete and purge the library
|
|
self.delete_library_item( 'library_admin',
|
|
self.security.encode_id( library_two.id ),
|
|
self.security.encode_id( library_two.id ),
|
|
library_two.name,
|
|
item_type='library' )
|
|
self.purge_library( self.security.encode_id( library_two.id ), library_two.name )
|
|
self.home()
|
|
def test_999_reset_data_for_later_test_runs( self ):
|
|
"""Reseting data to enable later test runs to pass"""
|
|
# Logged in as admin_user
|
|
##################
|
|
# Purge all libraries
|
|
##################
|
|
for library in [ library_one, library_two ]:
|
|
self.delete_library_item( 'library_admin',
|
|
self.security.encode_id( library.id ),
|
|
self.security.encode_id( library.id ),
|
|
library.name,
|
|
item_type='library' )
|
|
self.purge_library( self.security.encode_id( library.id ), library.name )
|
|
##################
|
|
# Make sure all users are associated only with their private roles
|
|
##################
|
|
for user in [ admin_user, regular_user1, regular_user2, regular_user3 ]:
|
|
refresh( user )
|
|
if len( user.roles) != 1:
|
|
raise AssertionError( '%d UserRoleAssociations are associated with %s ( should be 1 )' % ( len( user.roles ), user.email ) )
|
|
self.logout()
|