def test_045_change_permissions_on_current_history(self): """Testing changing permissions on the current history""" # Logged in as regular_user3 self.logout() self.login(email=admin_user.email) # Current history is history4 self.new_history() global history5 history5 = ( sa_session.query(galaxy.model.History) .filter( and_( galaxy.model.History.table.c.deleted == False, galaxy.model.History.table.c.user_id == admin_user.id ) ) .order_by(desc(galaxy.model.History.table.c.create_time)) .first() ) assert history5 is not None, "Problem retrieving history5 from database" self.rename_history(self.security.encode_id(history5.id), history5.name, new_name=urllib.quote("history 5")) # Current history is hostory5 sa_session.refresh(history5) # Due to the limitations of twill ( not functional with the permissions forms ), we're forced # to do this manually. At this point, we just want to restrict the access permission on history5 # to the admin_user global access_action access_action = galaxy.model.Dataset.permitted_actions.DATASET_ACCESS.action dhp = galaxy.model.DefaultHistoryPermissions(history5, access_action, admin_user_private_role) sa_session.add(dhp) sa_session.flush() sa_session.refresh(history5) global history5_default_permissions history5_default_permissions = [dhp.action for dhp in history5.default_permissions] # Sort for later comparison history5_default_permissions.sort() self.upload_file("1.bed", dbkey="hg18") history5_dataset1 = None for hda in history5.datasets: if hda.name == "1.bed": history5_dataset1 = hda.dataset break assert history5_dataset1 is not None, "Problem retrieving history5_dataset1 from the database" # The permissions on the dataset should be restricted from sharing with anyone due to the # inherited history permissions dataset_permissions = [a.action for a in history5_dataset1.actions] dataset_permissions.sort() if dataset_permissions != history5_default_permissions: err_msg = ( "Dataset permissions for history5_dataset1 (%s) were not correctly inherited from history permissions (%s)" % (str(dataset_permissions), str(history5_default_permissions)) ) raise AssertionError, err_msg # Make sure when we logout and login, the history default permissions are preserved self.logout() self.login(email=admin_user.email) sa_session.refresh(history5) current_history_permissions = [dhp.action for dhp in history5.default_permissions] current_history_permissions.sort() if current_history_permissions != history5_default_permissions: raise AssertionError, "With logout and login, the history default permissions are not preserved"
def test_085_reset_data_for_later_test_runs(self): """Reseting data to enable later test runs to to be valid""" # logged in as admin_user # Clean up admin_user # Unshare history3 - shared with regular_user1, regular_user2, regular_user3 self.unshare_history(self.security.encode_id(history3.id), self.security.encode_id(regular_user1.id)) self.unshare_history(self.security.encode_id(history3.id), self.security.encode_id(regular_user2.id)) self.unshare_history(self.security.encode_id(history3.id), self.security.encode_id(regular_user3.id)) # Unshare history4 - shared with regular_user2, regular_user3 self.unshare_history(self.security.encode_id(history4.id), self.security.encode_id(regular_user2.id)) self.unshare_history(self.security.encode_id(history4.id), self.security.encode_id(regular_user3.id)) # Unshare history5 - shared with regular_user1 self.unshare_history(self.security.encode_id(history5.id), self.security.encode_id(regular_user1.id)) # Delete histories self.delete_history(id=self.security.encode_id(history3.id)) self.delete_history(id=self.security.encode_id(history3_clone2.id)) self.delete_history(id=self.security.encode_id(history3_clone3.id)) self.delete_history(id=self.security.encode_id(history4.id)) self.delete_history(id=self.security.encode_id(history5.id)) # Eliminate Sharing role for: [email protected], [email protected] self.mark_role_deleted(self.security.encode_id(sharing_role.id), sharing_role.name) self.purge_role(self.security.encode_id(sharing_role.id), sharing_role.name) # Manually delete the sharing role from the database sa_session.refresh(sharing_role) sa_session.delete(sharing_role) sa_session.flush() # Clean up regular_user_1 self.logout() self.login(email=regular_user1.email) self.delete_history(id=self.security.encode_id(history3_clone1.id)) self.delete_history(id=self.security.encode_id(history5_clone1.id))
def delete_request_type_permissions( id ): rtps = sa_session.query( galaxy.model.RequestTypePermissions ) \ .filter( and_( galaxy.model.RequestTypePermissions.table.c.request_type_id==id ) ) \ .order_by( desc( galaxy.model.RequestTypePermissions.table.c.create_time ) ) for rtp in rtps: sa_session.delete( rtp ) sa_session.flush()
def test_010_user_reqistration_single_user_info_forms( self ): ''' Testing user registration with a single user info form ''' # lets delete the 'Researcher' user info form self.login( '*****@*****.**' ) form_two_latest = get_latest_form(form_two_name) form_two_latest.current.deleted = True sa_session.add( form_two_latest.current ) sa_session.flush() self.home() self.visit_page('forms/manage?sort=create_time&f-deleted=True') self.check_page_for_string(form_two_latest.name) self.logout() # user a new user with 'Student' user info form form_one = get_latest_form(form_one_name) user_info_values=['Educational', 'Penn State', True] self.create_user_with_info( '*****@*****.**', 'testuser', 'test12', user_info_forms='single', user_info_form_id=form_one.id, user_info_values=user_info_values ) self.home() self.visit_page( "user/show_info" ) self.check_page_for_string( "Manage User Information" ) self.check_page_for_string( user_info_values[0] ) self.check_page_for_string( user_info_values[1] ) self.check_page_for_string( '<input type="checkbox" name="field_2" value="true" checked>' )
def delete_request_type_permissions(id): rtps = sa_session.query( galaxy.model.RequestTypePermissions ) \ .filter( and_( galaxy.model.RequestTypePermissions.table.c.request_type_id==id ) ) \ .order_by( desc( galaxy.model.RequestTypePermissions.table.c.create_time ) ) for rtp in rtps: sa_session.delete(rtp) sa_session.flush()
def test_010_user_reqistration_single_user_info_forms(self): ''' Testing user registration with a single user info form ''' # lets delete the 'Researcher' user info form self.login('*****@*****.**') form_two_latest = get_latest_form(form_two_name) form_two_latest.current.deleted = True sa_session.add(form_two_latest.current) sa_session.flush() self.home() self.visit_page('forms/manage?sort=create_time&f-deleted=True') self.check_page_for_string(form_two_latest.name) self.logout() # user a new user with 'Student' user info form form_one = get_latest_form(form_one_name) user_info_values = ['Educational', 'Penn State', True] self.create_user_with_info('*****@*****.**', 'testuser', 'test12', user_info_forms='single', user_info_form_id=form_one.id, user_info_values=user_info_values) self.home() self.visit_page("user/show_info") self.check_page_for_string("Manage User Information") self.check_page_for_string(user_info_values[0]) self.check_page_for_string(user_info_values[1]) self.check_page_for_string( '<input type="checkbox" name="field_2" value="true" checked>')
def test_020_create_user_as_admin( self ): ''' Testing creating users as an admin ''' self.logout() self.login( '*****@*****.**' ) form_one = get_latest_form(form_one_name) user_info_values=['Educational', 'Penn State', True] self.create_user_with_info( '*****@*****.**', 'testuser', 'test13', user_info_forms='single', user_info_form_id=form_one.id, user_info_values=user_info_values ) self.logout() self.login( '*****@*****.**' ) user = sa_session.query( galaxy.model.User ) \ .filter( and_( galaxy.model.User.table.c.email=='*****@*****.**' ) ).first() self.home() page = "admin/users?id=%s&operation=information&f-deleted=False" % self.security.encode_id( user.id ) self.visit_page( page ) self.check_page_for_string( 'Manage User Information' ) self.check_page_for_string( '*****@*****.**' ) self.check_page_for_string( user_info_values[0] ) self.check_page_for_string( user_info_values[1] ) self.check_page_for_string( '<input type="checkbox" name="field_2" value="true" checked>' ) # lets delete the 'Student' user info form self.login( '*****@*****.**' ) form_one_latest = get_latest_form(form_one_name) form_one_latest.current.deleted = True sa_session.add( form_one_latest.current ) sa_session.flush() self.home() self.visit_page('forms/manage?sort=create_time&f-deleted=True') self.check_page_for_string(form_one_latest.name) self.logout()
def test_00_metadata_edit(self): """test_metadata_edit: Testing metadata editing""" self.logout() self.login(email='*****@*****.**', username='******') admin_user = sa_session.query( galaxy.model.User ) \ .filter( galaxy.model.User.table.c.email=='*****@*****.**' ) \ .one() self.new_history(name='Test Metadata Edit') history1 = sa_session.query( galaxy.model.History ) \ .filter( and_( galaxy.model.History.table.c.deleted==False, galaxy.model.History.table.c.user_id==admin_user.id ) ) \ .order_by( desc( galaxy.model.History.table.c.create_time ) ) \ .first() self.upload_file('1.bed') latest_hda = sa_session.query( galaxy.model.HistoryDatasetAssociation ) \ .order_by( desc( galaxy.model.HistoryDatasetAssociation.table.c.create_time ) ) \ .first() self.home() # Due to twill not being able to handle the permissions forms, we'll eliminate # DefaultHistoryPermissions prior to uploading a dataset so that the permission # form will not be displayed on ted edit attributes page. for dp in latest_hda.dataset.actions: sa_session.delete(dp) sa_session.flush() sa_session.refresh(latest_hda.dataset) self.check_history_for_string('1.bed') self.check_metadata_for_string( '1.bed uploaded file unspecified (\?) chromCol value="1" selected endCol value="3" is_strandCol value="true" checked', hid=str(latest_hda.hid)) """test editing attributes""" self.edit_hda_attribute_info(hda_id=str(latest_hda.id), new_name='Testdata', new_info="Uploaded my file", new_dbkey='hg16', new_startcol='6') self.check_metadata_for_string( 'Testdata bed Uploaded my file hg16 "bed" selected="yes" "startCol" value="6" selected', hid=str(latest_hda.hid)) """test Auto-detecting attributes""" self.auto_detect_metadata(hda_id=str(latest_hda.id)) self.check_metadata_for_string( 'Testdata bed Uploaded my file hg16 "bed" selected="yes" "startCol" value="2" selected', hid=str(latest_hda.hid)) """test converting formats""" self.convert_format(hda_id=str(latest_hda.id), target_type='gff') self.check_metadata_for_string('"gff" selected="yes"', hid=str(latest_hda.hid)) """test changing data type""" self.change_datatype(hda_id=str(latest_hda.id), datatype='gff3') self.check_metadata_for_string('gff3', hid=str(latest_hda.hid)) self.delete_history(id=self.security.encode_id(history1.id)) self.logout()
def test_00_metadata_edit( self ): """test_metadata_edit: Testing metadata editing""" self.logout() self.login( email='*****@*****.**' ) admin_user = sa_session.query( galaxy.model.User ) \ .filter( galaxy.model.User.table.c.email=='*****@*****.**' ) \ .one() self.new_history( name='Test Metadata Edit' ) history1 = sa_session.query( galaxy.model.History ) \ .filter( and_( galaxy.model.History.table.c.deleted==False, galaxy.model.History.table.c.user_id==admin_user.id ) ) \ .order_by( desc( galaxy.model.History.table.c.create_time ) ) \ .first() self.upload_file( '1.bed' ) latest_hda = sa_session.query( galaxy.model.HistoryDatasetAssociation ) \ .order_by( desc( galaxy.model.HistoryDatasetAssociation.table.c.create_time ) ) \ .first() self.home() # Due to twill not being able to handle the permissions forms, we'll eliminate # DefaultHistoryPermissions prior to uploading a dataset so that the permission # form will not be displayed on ted edit attributes page. for dp in latest_hda.dataset.actions: sa_session.delete( dp ) sa_session.flush() sa_session.refresh( latest_hda.dataset ) self.check_history_for_string( '1.bed' ) self.check_metadata_for_string( '1.bed uploaded file unspecified (\?) chromCol value="1" selected endCol value="3" is_strandCol value="true" checked', hid=str( latest_hda.hid ) ) """test editing attributes""" self.edit_hda_attribute_info( hda_id=str( latest_hda.id ), new_name='Testdata', new_info="Uploaded my file", new_dbkey='hg16', new_startcol='6' ) self.check_metadata_for_string( 'Testdata bed Uploaded my file hg16 "bed" selected="yes" "startCol" value="6" selected', hid=str( latest_hda.hid ) ) """test Auto-detecting attributes""" self.auto_detect_metadata( hda_id=str( latest_hda.id ) ) self.check_metadata_for_string('Testdata bed Uploaded my file hg16 "bed" selected="yes" "startCol" value="2" selected', hid=str( latest_hda.hid ) ) """test converting formats""" self.convert_format( hda_id=str( latest_hda.id ), target_type='gff' ) self.check_metadata_for_string( '"gff" selected="yes"', hid=str( latest_hda.hid ) ) """test changing data type""" self.change_datatype( hda_id=str( latest_hda.id ), datatype='gff3' ) self.check_metadata_for_string( 'gff3', hid=str( latest_hda.hid ) ) self.delete_history( id=self.security.encode_id( history1.id ) ) self.logout()
def test_020_create_user_as_admin(self): ''' Testing creating users as an admin ''' self.logout() self.login('*****@*****.**') form_one = get_latest_form(form_one_name) user_info_values = ['Educational', 'Penn State', True] self.create_user_with_info('*****@*****.**', 'testuser', 'test13', user_info_forms='single', user_info_form_id=form_one.id, user_info_values=user_info_values) self.logout() self.login('*****@*****.**') user = sa_session.query( galaxy.model.User ) \ .filter( and_( galaxy.model.User.table.c.email=='*****@*****.**' ) ).first() self.home() page = "admin/users?id=%s&operation=information&f-deleted=False" % self.security.encode_id( user.id) self.visit_page(page) self.check_page_for_string('Manage User Information') self.check_page_for_string('*****@*****.**') self.check_page_for_string(user_info_values[0]) self.check_page_for_string(user_info_values[1]) self.check_page_for_string( '<input type="checkbox" name="field_2" value="true" checked>') # lets delete the 'Student' user info form self.login('*****@*****.**') form_one_latest = get_latest_form(form_one_name) form_one_latest.current.deleted = True sa_session.add(form_one_latest.current) sa_session.flush() self.home() self.visit_page('forms/manage?sort=create_time&f-deleted=True') self.check_page_for_string(form_one_latest.name) self.logout()
def delete_obj( obj ): sa_session.delete( obj ) sa_session.flush()
def mark_obj_deleted(obj): obj.deleted = True sa_session.add(obj) sa_session.flush()
def mark_obj_deleted( obj ): obj.deleted = True sa_session.add( obj ) sa_session.flush()
def test_get_DNAseHSS_flanked_genes( self ): self.logout() self.login( email='*****@*****.**' ) admin_user = sa_session.query( galaxy.model.User ) \ .filter( galaxy.model.User.table.c.email=='*****@*****.**' ) \ .one() self.new_history( name='DNAseHSS_flanked_genes' ) history1 = sa_session.query( galaxy.model.History ) \ .filter( and_( galaxy.model.History.table.c.deleted==False, galaxy.model.History.table.c.user_id==admin_user.id ) ) \ .order_by( desc( galaxy.model.History.table.c.create_time ) ) \ .first() track_params = dict( db="hg17", hgta_group="regulation", hgta_table="dukeDnaseCd4Sites", hgta_track="dukeDnaseCd4Sites", hgta_regionType="range", position="chr22", hgta_outputType="bed", sendToGalaxy="1" ) output_params = dict( fbQual="whole", ) # Test 1 self.run_ucsc_main( track_params, output_params ) self.wait() self.verify_dataset_correctness('DNAseHSS.dat') latest_hda = sa_session.query( galaxy.model.HistoryDatasetAssociation ) \ .order_by( desc( galaxy.model.HistoryDatasetAssociation.table.c.create_time ) ) \ .first() # Due to twill not being able to handle the permissions forms, we'll eliminate # DefaultHistoryPermissions prior to uploading a dataset so that the permission # form will not be displayed on ted edit attributes page. for dp in latest_hda.dataset.actions: sa_session.delete( dp ) sa_session.flush() sa_session.refresh( latest_hda.dataset ) self.edit_hda_attribute_info( str( latest_hda.id ), new_name="DNAse HS" ) self.check_metadata_for_string( "DNAse HS" ) track_params = dict( db="hg17", hgta_group="genes", hgta_table="knownGene", hgta_track="knownGene", hgta_regionType="range", position="chr22", hgta_outputType="bed", sendToGalaxy="1" ) output_params = dict( fbQual="whole", ) # Test 2 self.run_ucsc_main( track_params, output_params ) self.wait() self.verify_dataset_correctness('hg17chr22KnownGenes.dat') latest_hda = sa_session.query( galaxy.model.HistoryDatasetAssociation ) \ .order_by( desc( galaxy.model.HistoryDatasetAssociation.table.c.create_time ) ) \ .first() for dp in latest_hda.dataset.actions: sa_session.delete( dp ) sa_session.flush() sa_session.refresh( latest_hda.dataset ) self.edit_hda_attribute_info( str( latest_hda.id ), new_name="Genes" ) self.check_metadata_for_string( "Genes" ) # Test 3 self.run_tool( 'get_flanks1', input="2", region="whole", direction="Upstream", offset="0", size="500" ) self.wait() self.verify_dataset_correctness( 'knownGeneUpstream500Flanks.dat' ) latest_hda = sa_session.query( galaxy.model.HistoryDatasetAssociation ) \ .order_by( desc( galaxy.model.HistoryDatasetAssociation.table.c.create_time ) ) \ .first() for dp in latest_hda.dataset.actions: sa_session.delete( dp ) sa_session.flush() sa_session.refresh( latest_hda.dataset ) self.edit_hda_attribute_info( str( latest_hda.id ), new_name="Flanks" ) self.check_metadata_for_string( "Flanks" ) # Test 4 self.run_tool( 'gops_join_1', input1="3", input2="1", min="1", fill="none" ) self.wait() # We cannot verify this dataset, because this tool spits out data in a non-deterministic order #self.verify_dataset_correctness( 'joinFlanksDNAse.dat' ) # Test 5 self.run_tool( 'Filter1', input="4", cond="c17==1000" ) self.wait() self.verify_dataset_correctness( 'filteredJoinedFlanksDNAse.dat' ) self.delete_history( self.security.encode_id( history1.id ) ) self.logout()
def delete_user_roles(user): for ura in user.roles: sa_session.delete(ura) sa_session.flush()
def flush(obj): sa_session.add(obj) sa_session.flush()
def delete_user_roles( user ): for ura in user.roles: sa_session.delete( ura ) sa_session.flush()
def delete_obj(obj): sa_session.delete(obj) sa_session.flush()
def flush( obj ): sa_session.add( obj ) sa_session.flush()