https://bitbucket.org/cmungall/galaxy-obo
Tip revision: 3e0af213ccd1388ef0107156903a309bf423b0bd authored by Chris Mungall on 31 May 2013, 17:50:52 UTC
add amelias scripts
add amelias scripts
Tip revision: 3e0af21
test_library_features.py
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_libraries( self ):
"""Testing creating libraries used in this script, then renaming one of them"""
# Logged in as admin_user
for index in range( 0, 3 ):
name = 'library%s' % str( index + 1 )
description = '%s description' % name
synopsis = '%s synopsis' % name
self.create_library( name=name, description=description, synopsis=synopsis )
self.browse_libraries_admin( strings_displayed=[ name, description ] )
# Get the libraries for later use
global library1
library1 = get_library( 'library1', 'library1 description', 'library1 synopsis' )
assert library1 is not None, 'Problem retrieving library (library1) from the database'
global library2
library2 = get_library( 'library2', 'library2 description', 'library2 synopsis' )
assert library2 is not None, 'Problem retrieving library (library2) from the database'
global library3
library3 = get_library( 'library3', 'library3 description', 'library3 synopsis' )
assert library3 is not None, 'Problem retrieving library (library3) from the database'
# Rename the library
new_name = "library1 new name"
new_description = "library1 new description"
new_synopsis = "library1 new synopsis"
self.library_info( 'library_admin',
self.security.encode_id( library1.id ),
library1.name,
new_name=new_name,
new_description=new_description,
new_synopsis=new_synopsis )
self.browse_libraries_admin( strings_displayed=[ new_name, new_description ] )
# Reset the library back to the original name and description
self.library_info( 'library_admin',
self.security.encode_id( library1.id ),
library1.name,
new_name=name,
new_description='library1 description',
new_synopsis='library1 synopsis' )
refresh( library1 )
def test_030_add_folder_to_library1( self ):
"""Testing adding a folder to a library1"""
# logged in as admin_user
root_folder = library1.root_folder
name = "folder1"
description = "folder1 description"
self.add_folder( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( library1.root_folder.id ),
name=name,
description=description )
global folder1
folder1 = get_folder( root_folder.id, name, description )
assert folder1 is not None, 'Problem retrieving library folder named "%s" from the database' % name
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ folder1.name, folder1.description ] )
def test_035_add_subfolder_to_folder( self ):
"""Testing adding a folder to a 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( library1.id ),
self.security.encode_id( folder1.id ),
name=name,
description=description )
global subfolder1
subfolder1 = get_folder( folder1.id, name, description )
assert subfolder1 is not None, 'Problem retrieving subfolder1 from the database'
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ subfolder1.name, subfolder1.description ] )
def test_040_add_2nd_folder_to_library1( self ):
"""Testing adding a 2nd folder to a library1"""
# logged in as admin_user
name = "folder2"
description = "folder2 description"
self.add_folder( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( library1.root_folder.id ),
name=name,
description=description )
global folder2
folder2 = get_folder( library1.root_folder.id, name, description )
assert folder2 is not None, 'Problem retrieving library folder named "%s" from the database' % name
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ folder2.name, folder2.description ] )
def test_045_add_public_dataset_to_folder2( self ):
"""Testing adding a public dataset to folder2"""
# Logged in as admin_user
filename = '2.bed'
ldda_message = "Testing uploading %s" % filename
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
folder_id=self.security.encode_id( folder2.id ),
filename=filename,
file_type='bed',
dbkey='hg18',
ldda_message=ldda_message,
strings_displayed=[ 'Upload files' ] )
global ldda2
ldda2 = get_latest_ldda_by_name( filename )
assert ldda2 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda2 from the database'
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ ldda2.name, ldda2.message, 'bed' ] )
def test_050_add_2nd_public_dataset_to_folder2( self ):
"""Testing adding a 2nd public dataset folder2"""
# Logged in as admin_user
filename='3.bed'
ldda_message = "Testing uploading %s" % filename
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
folder_id=self.security.encode_id( folder2.id ),
filename=filename,
file_type='bed',
dbkey='hg18',
ldda_message=ldda_message,
strings_displayed=[ 'Upload files' ] )
global ldda3
ldda3 = get_latest_ldda_by_name( filename )
assert ldda3 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda3 from the database'
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ ldda3.name, ldda3.message, 'bed' ] )
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()
filename = '4.bed'
self.upload_file( filename )
latest_hda = get_latest_hda()
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
folder_id=self.security.encode_id( subfolder1.id ),
upload_option='import_from_history',
hda_ids=self.security.encode_id( latest_hda.id ),
ldda_message='Imported from history',
strings_displayed=[ 'Active datasets in your current history' ] )
global ldda4
ldda4 = get_latest_ldda_by_name( filename )
assert ldda4 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda4 from the database'
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ ldda4.name, ldda4.message, 'bed' ] )
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( library1.id ),
self.security.encode_id( subfolder1.id ),
self.security.encode_id( ldda4.id ),
ldda4.name,
new_ldda_name=new_ldda_name )
refresh( ldda4 )
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ new_ldda_name, ldda4.message ] )
def test_065_uploading_new_dataset_version( self ):
"""Testing uploading a new version of a library dataset"""
# logged in as admin_user
filename = '4.bed'
ldda_message = 'Testing uploading a new version of a dataset'
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
folder_id=self.security.encode_id( subfolder1.id ),
replace_id=self.security.encode_id( ldda4.library_dataset.id ),
filename=filename,
file_type='auto',
dbkey='hg18',
ldda_message=ldda_message,
strings_displayed=[ 'Upload files', 'You are currently selecting a new file to replace' ] )
global ldda4_version2
ldda4_version2 = get_latest_ldda_by_name( filename )
assert ldda4_version2 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda4_version2 from the database'
self.ldda_edit_info( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( subfolder1.id ),
self.security.encode_id( ldda4_version2.id ),
ldda4_version2.name,
strings_displayed=[ 'This is the latest version of this library dataset' ] )
# Check the previous version
self.ldda_edit_info( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( subfolder1.id ),
self.security.encode_id( ldda4.id ),
ldda4.name,
strings_displayed=[ 'This is an expired version of this library dataset' ] )
# Make sure ldda4 is no longer displayed in the library
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_not_displayed=[ ldda4.name, ldda4.message ] )
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 library1 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 ) )
self.library_permissions( self.security.encode_id( library1.id ),
library1.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 )
ldda_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
self.upload_library_dataset( cntrller='library',
library_id=self.security.encode_id( library1.id ),
folder_id=self.security.encode_id( library1.root_folder.id ),
upload_option='upload_directory',
server_dir=regular_user1.email,
ldda_message=ldda_message,
strings_displayed = [ "Upload a directory of files" ] )
self.logout()
self.login( regular_user3.email )
ldda_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_library_dataset( cntrller='library',
library_id=self.security.encode_id( library1.id ),
folder_id=self.security.encode_id( library1.root_folder.id ),
upload_option='upload_directory',
server_dir='run1',
ldda_message=ldda_message,
strings_displayed=[ 'Upload a directory of files', '<option>None</option>' ] )
def test_075_download_archive_of_library_files( self ):
"""Testing downloading an archive of files from library1"""
# logged in as regular_user3
self.logout()
self.login( email=admin_user.email )
filename = '1.bed'
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
folder_id=self.security.encode_id( library1.root_folder.id ),
filename=filename,
file_type='bed',
dbkey='hg18',
strings_displayed=[ 'Upload files' ] )
global ldda1
ldda1 = get_latest_ldda_by_name( filename )
assert ldda1 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda1 from the database'
for format in ( 'tbz', 'tgz', 'zip' ):
archive = self.download_archive_of_library_files( cntrller='library',
library_id=self.security.encode_id( library1.id ),
ldda_ids=[ self.security.encode_id( ldda1.id ), self.security.encode_id( ldda2.id ) ],
format=format )
self.check_archive_contents( archive, ( ldda1, ldda2 ) )
os.remove( archive )
def test_080_check_libraries_for_uploaded_directories_of_files( self ):
"""Testing the results of uploading directories of files to library1"""
# We'll make sure the directories of files were uploaded in test_070... above.
# We do this here because the check would generally fail if we did it in the
# test_070... method since the files would not finish uploading before the check
# was done. Hopefully doing the check here will allow for enough time...
ldda_message = 'Uploaded all files in test-data/users/test1...'
self.browse_library( 'library',
self.security.encode_id( library1.id ),
strings_displayed=[ 'fasta', ldda_message, '1.fasta' ] )
ldda_message = 'Uploaded all files in test-data/users/test3.../run1'
self.browse_library( 'library',
self.security.encode_id( library1.id ),
strings_displayed=[ 'fasta', ldda_message, '2.fasta' ] )
def test_085_mark_ldda2_deleted( self ):
"""Testing marking ldda2 as deleted"""
# Logged in as admin_user
self.delete_library_item( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( ldda2.library_dataset.id ),
ldda2.name,
item_type='library_dataset' )
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_not_displayed=[ ldda2.name, ldda2.message ] )
def test_090_display_and_hide_deleted_ldda2( self ):
"""Testing displaying and hiding a deleted ldda2"""
# Logged in as admin_user
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
show_deleted=True,
strings_displayed=[ ldda2.name, ldda2.message ] )
self.browse_library( 'library_admin',
self.security.encode_id( library1.id ),
strings_not_displayed=[ ldda2.name, ldda2.message ] )
def test_095_mark_folder2_deleted( self ):
"""Testing marking folder2 as deleted"""
# Logged in as admin_user
self.delete_library_item( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( folder2.id ),
folder2.name,
item_type='folder' )
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_not_displayed=[ folder2.name ] )
def test_100_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( library1.id ),
self.security.encode_id( folder2.id ),
folder2.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( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ folder2.name ],
strings_not_displayed=[ ldda2.name ] )
def test_105_mark_library_deleted( self ):
"""Testing marking a library as deleted"""
# Logged in as admin_user
# First mark folder2 as deleted to further test state saving when we undelete the library
self.delete_library_item( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( folder2.id ),
folder2.name,
item_type='folder' )
self.delete_library_item( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( library1.id ),
library1.name,
item_type='library' )
self.browse_libraries_admin( strings_not_displayed=[ library1.name ] )
self.browse_libraries_admin( deleted=True, strings_displayed=[ library1.name ] )
def test_110_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( library1.id ),
self.security.encode_id( library1.id ),
library1.name,
item_type='library' )
self.browse_libraries_admin( strings_displayed=[ library1.name ] )
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library1.id ),
strings_displayed=[ library1.name ],
strings_not_displayed=[ folder2.name ] )
def test_115_purge_library( self ):
"""Testing purging a library"""
# Logged in as admin_user
self.delete_library_item( 'library_admin',
self.security.encode_id( library1.id ),
self.security.encode_id( library1.id ),
library1.name,
item_type='library' )
self.purge_library( self.security.encode_id( library1.id ), library1.name )
# Make sure the library was purged
refresh( library1 )
if not ( library1.deleted and library1.purged ):
raise AssertionError( 'The library id %s named "%s" has not been marked as deleted and purged.' % ( str( library1.id ), library1.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( library1.root_folder )
def test_120_populate_public_library2( self ):
"""Testing library datasets within a library"""
# Logged in as admin_user
# Add a folder named Three to library2 root
root_folder = library2.root_folder
name = "One"
description = "One description"
self.add_folder( 'library_admin',
self.security.encode_id( library2.id ),
self.security.encode_id( root_folder.id ),
name=name,
description=description )
global folder3
folder3 = get_folder( root_folder.id, name, description )
assert folder3 is not None, 'Problem retrieving library folder named "%s" from the database' % name
# Upload dataset 1.bed to folder One
filename = '1.bed'
ldda_message = "Testing uploading %s" % filename
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library2.id ),
folder_id=self.security.encode_id( folder3.id ),
filename=filename,
file_type='bed',
dbkey='hg18',
ldda_message=ldda_message,
strings_displayed=[ 'Upload files' ] )
global ldda5
ldda5 = get_latest_ldda_by_name( filename )
assert ldda5 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda5 from the database'
# Add a sub-folder named Two to folder One
name = "Two"
description = "Two description"
self.add_folder( 'library_admin',
self.security.encode_id( library2.id ),
self.security.encode_id( folder3.id ),
name=name,
description=description )
global folder4
folder4 = get_folder( folder3.id, name, description )
assert folder4 is not None, 'Problem retrieving library folder named "%s" from the database' % name
# Upload dataset 2.bed to folder Two
filename = '2.bed'
ldda_message = "Testing uploading %s" % filename
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library2.id ),
folder_id=self.security.encode_id( folder4.id ),
filename=filename,
file_type='bed',
dbkey='hg18',
ldda_message=ldda_message,
strings_displayed=[ 'Upload files' ] )
global ldda6
ldda6 = get_latest_ldda_by_name( filename )
assert ldda6 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda6 from the database'
# Add a folder named Three to library2 root
name = "Three"
description = "Three description"
self.add_folder( 'library_admin',
self.security.encode_id( library2.id ),
self.security.encode_id( root_folder.id ),
name=name,
description=description )
global folder5
folder5 = get_folder( root_folder.id, name, description )
assert folder5 is not None, 'Problem retrieving library folder named "%s" from the database' % name
# Upload dataset 3.bed to library2 root folder
filename = '3.bed'
ldda_message = "Testing uploading %s" % filename
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library2.id ),
folder_id=self.security.encode_id( root_folder.id ),
filename=filename,
file_type='bed',
dbkey='hg18',
ldda_message=ldda_message,
strings_displayed=[ 'Upload files' ] )
global ldda7
ldda7 = get_latest_ldda_by_name( filename )
assert ldda7 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda7 from the database'
def test_125_move_dataset_within_library2( self ):
"""Testing moving a dataset within library2"""
# Logged in as admin_user
# Move 3.bed to folder Three
self.move_library_item( cntrller='library_admin',
item_type='ldda',
item_id=self.security.encode_id( ldda7.id ),
source_library_id=self.security.encode_id( library2.id ),
make_target_current=True,
target_folder_id=self.security.encode_id( folder5.id ),
strings_displayed=[ 'Move data library items',
'3.bed' ],
strings_displayed_after_submit=[ '1 dataset moved to folder (Three) within data library (library2)' ] )
def test_130_move_folder_to_another_library( self ):
"""Testing moving a folder to another library"""
# Logged in as admin_user
# Move folder Three which now includes 3.bed to library3
self.move_library_item( cntrller='library_admin',
item_type='folder',
item_id=self.security.encode_id( folder5.id ),
source_library_id=self.security.encode_id( library2.id ),
make_target_current=False,
target_library_id=self.security.encode_id( library3.id ),
target_folder_id=self.security.encode_id( library3.root_folder.id ),
strings_displayed=[ 'Move data library items',
'Three' ],
strings_displayed_after_submit=[ 'Moved folder (Three) to folder (library3) within data library (library3)' ] )
# Make sure folder Three is not longer in library2
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library2.id ),
strings_displayed=[ folder4.name, folder4.description ],
strings_not_displayed=[ folder5.name, folder5.description ] )
# Make sure folder Three was moved to library3
self.browse_library( cntrller='library_admin',
library_id=self.security.encode_id( library3.id ),
strings_displayed=[ folder5.name, folder5.description, ldda7.name ] )
def test_135_upload_unsorted_bam_to_library_using_file_path_with_link_to_file( self ):
"""Test uploading 3unsorted.bam, using filesystem_paths option in combination with link_to_files"""
filename = '3unsorted.bam'
self.upload_library_dataset( cntrller='library_admin',
library_id=self.security.encode_id( library2.id ),
folder_id=self.security.encode_id( library2.root_folder.id ),
upload_option='upload_paths',
link_data_only='link_to_files',
filesystem_paths='test-data/3unsorted.bam' )
global ldda8
ldda8 = get_latest_ldda_by_name( filename )
assert ldda8 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda8 from the database'
# The upload above should produce an error condition in the uploaded library dataset since
# the uploaded bam file is not sorted, and we are linking to the file.
self.ldda_info( cntrller='library_admin',
library_id=self.security.encode_id( library2.id ),
folder_id=self.security.encode_id( library2.root_folder.id ),
ldda_id=self.security.encode_id( ldda8.id ),
strings_displayed=[ 'The uploaded files need grooming, so change your <b>Copy data into Galaxy?</b> selection to be' ] )
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 [ library1, library2, library3 ]:
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()