[2] | 1 | from base.twilltestcase import * |
---|
| 2 | from base.test_db_util import * |
---|
| 3 | |
---|
| 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, 1 ): |
---|
| 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 | # Rename the library |
---|
| 49 | new_name = "library1 new name" |
---|
| 50 | new_description = "library1 new description" |
---|
| 51 | new_synopsis = "library1 new synopsis" |
---|
| 52 | self.library_info( 'library_admin', |
---|
| 53 | self.security.encode_id( library1.id ), |
---|
| 54 | library1.name, |
---|
| 55 | new_name=new_name, |
---|
| 56 | new_description=new_description, |
---|
| 57 | new_synopsis=new_synopsis ) |
---|
| 58 | self.browse_libraries_admin( strings_displayed=[ new_name, new_description ] ) |
---|
| 59 | # Reset the library back to the original name and description |
---|
| 60 | self.library_info( 'library_admin', |
---|
| 61 | self.security.encode_id( library1.id ), |
---|
| 62 | library1.name, |
---|
| 63 | new_name=name, |
---|
| 64 | new_description='library1 description', |
---|
| 65 | new_synopsis='library1 synopsis' ) |
---|
| 66 | refresh( library1 ) |
---|
| 67 | def test_030_add_folder_to_library1( self ): |
---|
| 68 | """Testing adding a folder to a library1""" |
---|
| 69 | # logged in as admin_user |
---|
| 70 | root_folder = library1.root_folder |
---|
| 71 | name = "folder1" |
---|
| 72 | description = "folder1 description" |
---|
| 73 | self.add_folder( 'library_admin', |
---|
| 74 | self.security.encode_id( library1.id ), |
---|
| 75 | self.security.encode_id( library1.root_folder.id ), |
---|
| 76 | name=name, |
---|
| 77 | description=description ) |
---|
| 78 | global folder1 |
---|
| 79 | folder1 = get_folder( root_folder.id, name, description ) |
---|
| 80 | assert folder1 is not None, 'Problem retrieving library folder named "%s" from the database' % name |
---|
| 81 | self.browse_library( 'library_admin', |
---|
| 82 | self.security.encode_id( library1.id ), |
---|
| 83 | strings_displayed=[ folder1.name, folder1.description ] ) |
---|
| 84 | def test_035_add_subfolder_to_folder( self ): |
---|
| 85 | """Testing adding a folder to a folder""" |
---|
| 86 | # logged in as admin_user |
---|
| 87 | name = "Folder One's Subfolder" |
---|
| 88 | description = "This is the Folder One's subfolder" |
---|
| 89 | self.add_folder( 'library_admin', |
---|
| 90 | self.security.encode_id( library1.id ), |
---|
| 91 | self.security.encode_id( folder1.id ), |
---|
| 92 | name=name, |
---|
| 93 | description=description ) |
---|
| 94 | global subfolder1 |
---|
| 95 | subfolder1 = get_folder( folder1.id, name, description ) |
---|
| 96 | assert subfolder1 is not None, 'Problem retrieving subfolder1 from the database' |
---|
| 97 | self.browse_library( 'library_admin', |
---|
| 98 | self.security.encode_id( library1.id ), |
---|
| 99 | strings_displayed=[ subfolder1.name, subfolder1.description ] ) |
---|
| 100 | def test_040_add_2nd_folder_to_library1( self ): |
---|
| 101 | """Testing adding a 2nd folder to a library1""" |
---|
| 102 | # logged in as admin_user |
---|
| 103 | name = "folder2" |
---|
| 104 | description = "folder2 description" |
---|
| 105 | self.add_folder( 'library_admin', |
---|
| 106 | self.security.encode_id( library1.id ), |
---|
| 107 | self.security.encode_id( library1.root_folder.id ), |
---|
| 108 | name=name, |
---|
| 109 | description=description ) |
---|
| 110 | global folder2 |
---|
| 111 | folder2 = get_folder( library1.root_folder.id, name, description ) |
---|
| 112 | assert folder2 is not None, 'Problem retrieving library folder named "%s" from the database' % name |
---|
| 113 | self.browse_library( 'library_admin', |
---|
| 114 | self.security.encode_id( library1.id ), |
---|
| 115 | strings_displayed=[ folder2.name, folder2.description ] ) |
---|
| 116 | def test_045_add_public_dataset_to_folder2( self ): |
---|
| 117 | """Testing adding a public dataset to folder2""" |
---|
| 118 | # Logged in as admin_user |
---|
| 119 | filename = '2.bed' |
---|
| 120 | ldda_message = "Testing uploading %s" % filename |
---|
| 121 | self.upload_library_dataset( cntrller='library_admin', |
---|
| 122 | library_id=self.security.encode_id( library1.id ), |
---|
| 123 | folder_id=self.security.encode_id( folder2.id ), |
---|
| 124 | filename=filename, |
---|
| 125 | file_type='bed', |
---|
| 126 | dbkey='hg18', |
---|
| 127 | ldda_message=ldda_message, |
---|
| 128 | strings_displayed=[ 'Upload files' ] ) |
---|
| 129 | global ldda2 |
---|
| 130 | ldda2 = get_latest_ldda_by_name( filename ) |
---|
| 131 | assert ldda2 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda2 from the database' |
---|
| 132 | self.browse_library( 'library_admin', |
---|
| 133 | self.security.encode_id( library1.id ), |
---|
| 134 | strings_displayed=[ ldda2.name, ldda2.message, admin_user.email ] ) |
---|
| 135 | def test_050_add_2nd_public_dataset_to_folder2( self ): |
---|
| 136 | """Testing adding a 2nd public dataset folder2""" |
---|
| 137 | # Logged in as admin_user |
---|
| 138 | filename='3.bed' |
---|
| 139 | ldda_message = "Testing uploading %s" % filename |
---|
| 140 | self.upload_library_dataset( cntrller='library_admin', |
---|
| 141 | library_id=self.security.encode_id( library1.id ), |
---|
| 142 | folder_id=self.security.encode_id( folder2.id ), |
---|
| 143 | filename=filename, |
---|
| 144 | file_type='bed', |
---|
| 145 | dbkey='hg18', |
---|
| 146 | ldda_message=ldda_message, |
---|
| 147 | strings_displayed=[ 'Upload files' ] ) |
---|
| 148 | global ldda3 |
---|
| 149 | ldda3 = get_latest_ldda_by_name( filename ) |
---|
| 150 | assert ldda3 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda3 from the database' |
---|
| 151 | self.browse_library( 'library_admin', |
---|
| 152 | self.security.encode_id( library1.id ), |
---|
| 153 | strings_displayed=[ ldda3.name, ldda3.message, admin_user.email ] ) |
---|
| 154 | def test_055_copy_dataset_from_history_to_subfolder( self ): |
---|
| 155 | """Testing copying a dataset from the current history to a subfolder""" |
---|
| 156 | # logged in as admin_user |
---|
| 157 | self.new_history() |
---|
| 158 | filename = '4.bed' |
---|
| 159 | self.upload_file( filename ) |
---|
| 160 | latest_hda = get_latest_hda() |
---|
| 161 | self.upload_library_dataset( cntrller='library_admin', |
---|
| 162 | library_id=self.security.encode_id( library1.id ), |
---|
| 163 | folder_id=self.security.encode_id( subfolder1.id ), |
---|
| 164 | upload_option='import_from_history', |
---|
| 165 | hda_ids=self.security.encode_id( latest_hda.id ), |
---|
| 166 | ldda_message='Imported from history', |
---|
| 167 | strings_displayed=[ 'Active datasets in your current history' ] ) |
---|
| 168 | global ldda4 |
---|
| 169 | ldda4 = get_latest_ldda_by_name( filename ) |
---|
| 170 | assert ldda4 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda4 from the database' |
---|
| 171 | self.browse_library( 'library_admin', |
---|
| 172 | self.security.encode_id( library1.id ), |
---|
| 173 | strings_displayed=[ ldda4.name, ldda4.message, admin_user.email ] ) |
---|
| 174 | def test_060_editing_dataset_attribute_info( self ): |
---|
| 175 | """Testing editing a library dataset's attribute information""" |
---|
| 176 | # logged in as admin_user |
---|
| 177 | new_ldda_name = '4.bed ( version 1 )' |
---|
| 178 | self.ldda_edit_info( 'library_admin', |
---|
| 179 | self.security.encode_id( library1.id ), |
---|
| 180 | self.security.encode_id( subfolder1.id ), |
---|
| 181 | self.security.encode_id( ldda4.id ), |
---|
| 182 | ldda4.name, |
---|
| 183 | new_ldda_name=new_ldda_name ) |
---|
| 184 | refresh( ldda4 ) |
---|
| 185 | self.browse_library( 'library_admin', |
---|
| 186 | self.security.encode_id( library1.id ), |
---|
| 187 | strings_displayed=[ new_ldda_name, ldda4.message ] ) |
---|
| 188 | def test_065_uploading_new_dataset_version( self ): |
---|
| 189 | """Testing uploading a new version of a library dataset""" |
---|
| 190 | # logged in as admin_user |
---|
| 191 | filename = '4.bed' |
---|
| 192 | ldda_message = 'Testing uploading a new version of a dataset' |
---|
| 193 | self.upload_library_dataset( cntrller='library_admin', |
---|
| 194 | library_id=self.security.encode_id( library1.id ), |
---|
| 195 | folder_id=self.security.encode_id( subfolder1.id ), |
---|
| 196 | replace_id=self.security.encode_id( ldda4.library_dataset.id ), |
---|
| 197 | filename=filename, |
---|
| 198 | file_type='auto', |
---|
| 199 | dbkey='hg18', |
---|
| 200 | ldda_message=ldda_message, |
---|
| 201 | strings_displayed=[ 'Upload files', 'You are currently selecting a new file to replace' ] ) |
---|
| 202 | global ldda4_version2 |
---|
| 203 | ldda4_version2 = get_latest_ldda_by_name( filename ) |
---|
| 204 | assert ldda4_version2 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda4_version2 from the database' |
---|
| 205 | self.ldda_edit_info( 'library_admin', |
---|
| 206 | self.security.encode_id( library1.id ), |
---|
| 207 | self.security.encode_id( subfolder1.id ), |
---|
| 208 | self.security.encode_id( ldda4_version2.id ), |
---|
| 209 | ldda4_version2.name, |
---|
| 210 | strings_displayed=[ 'This is the latest version of this library dataset' ] ) |
---|
| 211 | # Check the previous version |
---|
| 212 | self.ldda_edit_info( 'library_admin', |
---|
| 213 | self.security.encode_id( library1.id ), |
---|
| 214 | self.security.encode_id( subfolder1.id ), |
---|
| 215 | self.security.encode_id( ldda4.id ), |
---|
| 216 | ldda4.name, |
---|
| 217 | strings_displayed=[ 'This is an expired version of this library dataset' ] ) |
---|
| 218 | # Make sure ldda4 is no longer displayed in the library |
---|
| 219 | self.browse_library( 'library_admin', |
---|
| 220 | self.security.encode_id( library1.id ), |
---|
| 221 | strings_not_displayed=[ ldda4.name, ldda4.message ] ) |
---|
| 222 | def test_070_upload_directory_of_files_from_libraries_view( self ): |
---|
| 223 | """Testing uploading a directory of files to a root folder from the Data Libraries view""" |
---|
| 224 | # logged in as admin_user |
---|
| 225 | # admin_user will not have the option to upload a directory of files from the |
---|
| 226 | # Libraries view since a sub-directory named the same as their email is not contained |
---|
| 227 | # in the configured user_library_import_dir ( in the test_data directory, only regular_user1 |
---|
| 228 | # and regular_user3 have directories ). We'll need to give these 2 user LIBRARY_ADD permission |
---|
| 229 | # on library1 to test this feature. |
---|
| 230 | permissions_in = [ 'LIBRARY_ADD' ] |
---|
| 231 | permissions_out = [ 'LIBRARY_ACCESS', 'LIBRARY_MODIFY', 'LIBRARY_MANAGE' ] |
---|
| 232 | role_ids = '%s,%s' % ( str( regular_user1_private_role.id ), str( regular_user3_private_role.id ) ) |
---|
| 233 | self.library_permissions( self.security.encode_id( library1.id ), |
---|
| 234 | library1.name, |
---|
| 235 | role_ids, |
---|
| 236 | permissions_in, |
---|
| 237 | permissions_out ) |
---|
| 238 | self.logout() |
---|
| 239 | # Now that we have permissions set on the library, we can proceed to test uploading files |
---|
| 240 | self.login( email=regular_user1.email ) |
---|
| 241 | ldda_message = 'Uploaded all files in test-data/users/test1...' |
---|
| 242 | # Since regular_user1 does not have any sub-directories contained within her configured |
---|
| 243 | # user_library_import_dir, the only option in her server_dir select list will be the |
---|
| 244 | # directory named the same as her email |
---|
| 245 | self.upload_library_dataset( cntrller='library', |
---|
| 246 | library_id=self.security.encode_id( library1.id ), |
---|
| 247 | folder_id=self.security.encode_id( library1.root_folder.id ), |
---|
| 248 | upload_option='upload_directory', |
---|
| 249 | server_dir=regular_user1.email, |
---|
| 250 | ldda_message=ldda_message, |
---|
| 251 | strings_displayed = [ "Upload a directory of files" ] ) |
---|
| 252 | self.browse_library( 'library', |
---|
| 253 | self.security.encode_id( library1.id ), |
---|
| 254 | strings_displayed=[ regular_user1.email, ldda_message, '1.fasta' ] ) |
---|
| 255 | self.logout() |
---|
| 256 | self.login( regular_user3.email ) |
---|
| 257 | ldda_message = 'Uploaded all files in test-data/users/test3.../run1' |
---|
| 258 | # Since regular_user2 has a subdirectory contained within her configured user_library_import_dir, |
---|
| 259 | # she will have a "None" option in her server_dir select list |
---|
| 260 | self.upload_library_dataset( cntrller='library', |
---|
| 261 | library_id=self.security.encode_id( library1.id ), |
---|
| 262 | folder_id=self.security.encode_id( library1.root_folder.id ), |
---|
| 263 | upload_option='upload_directory', |
---|
| 264 | server_dir='run1', |
---|
| 265 | ldda_message=ldda_message, |
---|
| 266 | strings_displayed=[ 'Upload a directory of files', '<option>None</option>' ] ) |
---|
| 267 | self.browse_library( 'library', |
---|
| 268 | self.security.encode_id( library1.id ), |
---|
| 269 | strings_displayed=[ regular_user3.email, ldda_message, '2.fasta' ] ) |
---|
| 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_mark_ldda2_deleted( self ): |
---|
| 294 | """Testing marking ldda2 as deleted""" |
---|
| 295 | # Logged in as admin_user |
---|
| 296 | self.delete_library_item( 'library_admin', |
---|
| 297 | self.security.encode_id( library1.id ), |
---|
| 298 | self.security.encode_id( ldda2.library_dataset.id ), |
---|
| 299 | ldda2.name, |
---|
| 300 | item_type='library_dataset' ) |
---|
| 301 | self.browse_library( 'library_admin', |
---|
| 302 | self.security.encode_id( library1.id ), |
---|
| 303 | strings_not_displayed=[ ldda2.name, ldda2.message ] ) |
---|
| 304 | def test_085_display_and_hide_deleted_ldda2( self ): |
---|
| 305 | """Testing displaying and hiding a deleted ldda2""" |
---|
| 306 | # Logged in as admin_user |
---|
| 307 | self.browse_library( 'library_admin', |
---|
| 308 | self.security.encode_id( library1.id ), |
---|
| 309 | show_deleted=True, |
---|
| 310 | strings_displayed=[ ldda2.name, ldda2.message ] ) |
---|
| 311 | self.browse_library( 'library_admin', |
---|
| 312 | self.security.encode_id( library1.id ), |
---|
| 313 | strings_not_displayed=[ ldda2.name, ldda2.message ] ) |
---|
| 314 | def test_090_mark_folder2_deleted( self ): |
---|
| 315 | """Testing marking folder2 as deleted""" |
---|
| 316 | # Logged in as admin_user |
---|
| 317 | self.delete_library_item( 'library_admin', |
---|
| 318 | self.security.encode_id( library1.id ), |
---|
| 319 | self.security.encode_id( folder2.id ), |
---|
| 320 | folder2.name, |
---|
| 321 | item_type='folder' ) |
---|
| 322 | self.browse_library( 'library_admin', |
---|
| 323 | self.security.encode_id( library1.id ), |
---|
| 324 | strings_not_displayed=[ folder2.name ] ) |
---|
| 325 | def test_095_mark_folder_undeleted( self ): |
---|
| 326 | """Testing marking a library folder as undeleted""" |
---|
| 327 | # Logged in as admin_user |
---|
| 328 | self.undelete_library_item( 'library_admin', |
---|
| 329 | self.security.encode_id( library1.id ), |
---|
| 330 | self.security.encode_id( folder2.id ), |
---|
| 331 | folder2.name, |
---|
| 332 | item_type='folder' ) |
---|
| 333 | # 2.bed was deleted before the folder was deleted, so state should have been saved. In order |
---|
| 334 | # for 2.bed to be displayed, it would itself have to be marked undeleted. |
---|
| 335 | self.browse_library( 'library_admin', |
---|
| 336 | self.security.encode_id( library1.id ), |
---|
| 337 | strings_displayed=[ folder2.name ], |
---|
| 338 | strings_not_displayed=[ ldda2.name ] ) |
---|
| 339 | def test_100_mark_library_deleted( self ): |
---|
| 340 | """Testing marking a library as deleted""" |
---|
| 341 | # Logged in as admin_user |
---|
| 342 | # First mark folder2 as deleted to further test state saving when we undelete the library |
---|
| 343 | self.delete_library_item( 'library_admin', |
---|
| 344 | self.security.encode_id( library1.id ), |
---|
| 345 | self.security.encode_id( folder2.id ), |
---|
| 346 | folder2.name, |
---|
| 347 | item_type='folder' ) |
---|
| 348 | self.delete_library_item( 'library_admin', |
---|
| 349 | self.security.encode_id( library1.id ), |
---|
| 350 | self.security.encode_id( library1.id ), |
---|
| 351 | library1.name, |
---|
| 352 | item_type='library' ) |
---|
| 353 | self.browse_libraries_admin( strings_not_displayed=[ library1.name ] ) |
---|
| 354 | self.browse_libraries_admin( deleted=True, strings_displayed=[ library1.name ] ) |
---|
| 355 | def test_105_mark_library_undeleted( self ): |
---|
| 356 | """Testing marking a library as undeleted""" |
---|
| 357 | # Logged in as admin_user |
---|
| 358 | self.undelete_library_item( 'library_admin', |
---|
| 359 | self.security.encode_id( library1.id ), |
---|
| 360 | self.security.encode_id( library1.id ), |
---|
| 361 | library1.name, |
---|
| 362 | item_type='library' ) |
---|
| 363 | self.browse_libraries_admin( strings_displayed=[ library1.name ] ) |
---|
| 364 | self.browse_library( 'library_admin', |
---|
| 365 | self.security.encode_id( library1.id ), |
---|
| 366 | strings_displayed=[ library1.name ], |
---|
| 367 | strings_not_displayed=[ folder2.name ] ) |
---|
| 368 | def test_110_purge_library( self ): |
---|
| 369 | """Testing purging a library""" |
---|
| 370 | # Logged in as admin_user |
---|
| 371 | self.delete_library_item( 'library_admin', |
---|
| 372 | self.security.encode_id( library1.id ), |
---|
| 373 | self.security.encode_id( library1.id ), |
---|
| 374 | library1.name, |
---|
| 375 | item_type='library' ) |
---|
| 376 | self.purge_library( self.security.encode_id( library1.id ), library1.name ) |
---|
| 377 | # Make sure the library was purged |
---|
| 378 | refresh( library1 ) |
---|
| 379 | if not ( library1.deleted and library1.purged ): |
---|
| 380 | raise AssertionError( 'The library id %s named "%s" has not been marked as deleted and purged.' % ( str( library1.id ), library1.name ) ) |
---|
| 381 | def check_folder( library_folder ): |
---|
| 382 | for folder in library_folder.folders: |
---|
| 383 | refresh( folder ) |
---|
| 384 | # Make sure all of the library_folders are purged |
---|
| 385 | if not folder.purged: |
---|
| 386 | raise AssertionError( 'The library_folder id %s named "%s" has not been marked purged.' % ( str( folder.id ), folder.name ) ) |
---|
| 387 | check_folder( folder ) |
---|
| 388 | # Make sure all of the LibraryDatasets and associated objects are deleted |
---|
| 389 | refresh( library_folder ) |
---|
| 390 | for library_dataset in library_folder.datasets: |
---|
| 391 | refresh( library_dataset ) |
---|
| 392 | ldda = library_dataset.library_dataset_dataset_association |
---|
| 393 | if ldda: |
---|
| 394 | refresh( ldda ) |
---|
| 395 | if not ldda.deleted: |
---|
| 396 | raise AssertionError( 'The library_dataset_dataset_association id %s named "%s" has not been marked as deleted.' % \ |
---|
| 397 | ( str( ldda.id ), ldda.name ) ) |
---|
| 398 | # Make sure all of the datasets have been deleted |
---|
| 399 | dataset = ldda.dataset |
---|
| 400 | refresh( dataset ) |
---|
| 401 | if not dataset.deleted: |
---|
| 402 | raise AssertionError( 'The dataset with id "%s" has not been marked as deleted when it should have been.' % \ |
---|
| 403 | str( ldda.dataset.id ) ) |
---|
| 404 | if not library_dataset.deleted: |
---|
| 405 | raise AssertionError( 'The library_dataset id %s named "%s" has not been marked as deleted.' % \ |
---|
| 406 | ( str( library_dataset.id ), library_dataset.name ) ) |
---|
| 407 | check_folder( library1.root_folder ) |
---|
| 408 | def test_999_reset_data_for_later_test_runs( self ): |
---|
| 409 | """Reseting data to enable later test runs to pass""" |
---|
| 410 | # Logged in as admin_user |
---|
| 411 | ################## |
---|
| 412 | # Purge all libraries |
---|
| 413 | ################## |
---|
| 414 | for library in [ library1 ]: |
---|
| 415 | self.delete_library_item( 'library_admin', |
---|
| 416 | self.security.encode_id( library.id ), |
---|
| 417 | self.security.encode_id( library.id ), |
---|
| 418 | library.name, |
---|
| 419 | item_type='library' ) |
---|
| 420 | self.purge_library( self.security.encode_id( library.id ), library.name ) |
---|
| 421 | ################## |
---|
| 422 | # Make sure all users are associated only with their private roles |
---|
| 423 | ################## |
---|
| 424 | for user in [ admin_user, regular_user1, regular_user2, regular_user3 ]: |
---|
| 425 | refresh( user ) |
---|
| 426 | if len( user.roles) != 1: |
---|
| 427 | raise AssertionError( '%d UserRoleAssociations are associated with %s ( should be 1 )' % ( len( user.roles ), user.email ) ) |
---|
| 428 | self.logout() |
---|