from base.twilltestcase import TwillTestCase from base.test_db_util import ( get_user, get_latest_history_for_user, get_latest_hda, ) admin_user = None class UploadData( TwillTestCase ): def test_0000_setup_upload_tests( self ): """ Configuring upload tests, setting admin_user """ self.logout() self.login( email='test@bx.psu.edu' ) global admin_user admin_user = get_user( email='test@bx.psu.edu' ) def create_fresh_history( self, user ): """ Deletes latest history for the given user, checks for an empty history, and returns that new, empty history """ # in order to remove a lot of boiler plate - and not have cascading errors history = get_latest_history_for_user( user ) self.delete_history( id=self.security.encode_id( history.id ) ) self.is_history_empty() return get_latest_history_for_user( user ) def test_0005_upload_file( self ): """ Test uploading 1.bed, NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '1.bed' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '1.bed', hid=str( hda.hid ) ) self.check_history_for_string( "1.Chrom2.Start3.End" ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0006_upload_file( self ): """ Test uploading 1.bed.spaces, with space to tab selected, NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '1.bed.spaces', space_to_tab=True ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '1.bed', hid=str( hda.hid ) ) self.check_history_for_string( "1.Chrom2.Start3.End" ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0010_upload_file( self ): """ Test uploading 4.bed.gz, manually setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '4.bed.gz', dbkey='hg17', ftype='bed' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '4.bed', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "peek", "1.Chrom2.Start3.End", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0012_upload_file( self ): """ Test uploading 4.bed.bz2, manually setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '4.bed.bz2', dbkey='hg17', ftype='bed' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '4.bed', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "peek", "1.Chrom2.Start3.End", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0015_upload_file( self ): """ Test uploading 1.scf, manually setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '1.scf', ftype='scf' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '1.scf', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "peek", "Binary scf sequence file", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0020_upload_file( self ): """ Test uploading 1.scf, NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '1.scf' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "misc_info", "File Format' to 'Scf' when uploading scf files", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0025_upload_file( self ): """ Test uploading 4.bed.zip, manually setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '4.bed.zip', ftype='bed' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '4.bed', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "peek", "1.Chrom2.Start3.End", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0030_upload_file( self ): """ Test uploading 4.bed.zip, NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '4.bed.zip' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '4.bed', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "peek", "1.Chrom2.Start3.End", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0035_upload_file( self ): """ Test uploading 1.sam NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '1.sam' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '1.sam', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "peek", "1.QNAME2.FLAG3.RNAME4.POS", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0040_upload_file( self ): """ Test uploading 1.sff, NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '1.sff' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '1.sff', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "misc_info", "sff", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0045_upload_file( self ): """ Test uploading 454Score.pdf, NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '454Score.pdf' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "name", "454Score.pdf" ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0050_upload_file( self ): """ Test uploading 454Score.png, NOT setting the file format """ history = self.create_fresh_history( admin_user ) self.upload_file( '454Score.png' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "name", "454Score.png" ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0055_upload_file( self ): """ Test uploading lped composite datatype file, manually setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) # lped data types include a ped_file and a map_file ( which is binary ) self.upload_file( None, ftype='lped', metadata=[ { 'name':'base_name', 'value':'rgenetics' } ], composite_data=[ { 'name':'ped_file', 'value':'tinywga.ped' }, { 'name':'map_file', 'value':'tinywga.map'} ] ) # Get the latest hid for testing hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" # We'll test against the resulting ped file and map file for correctness self.verify_composite_datatype_file_content( 'tinywga.ped', str( hda.id ), base_name='rgenetics.ped' ) self.verify_composite_datatype_file_content( 'tinywga.map', str( hda.id ), base_name='rgenetics.map' ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "metadata_base_name", "rgenetics", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0056_upload_file( self ): """ Test uploading lped composite datatype file, manually setting the file format, and using space to tab on one file (tinywga.ped) """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) # lped data types include a ped_file and a map_file ( which is binary ) self.upload_file( None, ftype='lped', metadata=[ { 'name':'base_name', 'value':'rgenetics' } ], composite_data=[ { 'name':'ped_file', 'value':'tinywga.ped', 'space_to_tab':True }, { 'name':'map_file', 'value':'tinywga.map'} ] ) # Get the latest hid for testing hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" # We'll test against the resulting ped file and map file for correctness self.verify_composite_datatype_file_content( 'tinywga.ped.space_to_tab', str( hda.id ), base_name='rgenetics.ped' ) self.verify_composite_datatype_file_content( 'tinywga.map', str( hda.id ), base_name='rgenetics.map' ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "metadata_base_name", "rgenetics", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0060_upload_file( self ): """ Test uploading pbed composite datatype file, manually setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) # pbed data types include a bim_file, a bed_file and a fam_file self.upload_file( None, ftype='pbed', metadata=[ { 'name':'base_name', 'value':'rgenetics' } ], composite_data=[ { 'name':'bim_file', 'value':'tinywga.bim' }, { 'name':'bed_file', 'value':'tinywga.bed' }, { 'name':'fam_file', 'value':'tinywga.fam' } ]) # Get the latest hid for testing hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" # We'll test against the resulting ped file and map file for correctness self.verify_composite_datatype_file_content( 'tinywga.bim', str( hda.id ), base_name='rgenetics.bim' ) self.verify_composite_datatype_file_content( 'tinywga.bed', str( hda.id ), base_name='rgenetics.bed' ) self.verify_composite_datatype_file_content( 'tinywga.fam', str( hda.id ), base_name='rgenetics.fam' ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "metadata_base_name", "rgenetics", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0065_upload_file( self ): """ Test uploading asian_chars_1.txt, NOT setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) self.upload_file( 'asian_chars_1.txt' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( 'asian_chars_1.txt', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "misc_info", "uploaded multi-byte char file", use_string_contains=True ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0070_upload_file( self ): """ Test uploading 2gen.fastq, NOT setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) self.upload_file( '2gen.fastq' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '2gen.fastq', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "data_type", "fastq" ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0075_upload_file( self ): """ Test uploading 1.wig, NOT setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) self.upload_file( '1.wig' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '1.wig', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "data_type", "wig" ) self.check_metadata_for_string( 'value="1.wig" value="\?"' ) self.check_metadata_for_string( 'Change data type selected value="wig" selected="yes"' ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0080_upload_file( self ): """ Test uploading 1.tabular, NOT setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) self.upload_file( '1.tabular' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '1.tabular', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "data_type", "tabular" ) self.check_metadata_for_string( 'value="1.tabular" value="\?"' ) self.check_metadata_for_string( 'Change data type selected value="tabular" selected="yes"' ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0085_upload_file( self ): """ Test uploading qualscores.qualsolid, NOT setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) self.upload_file( 'qualscores.qualsolid' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( 'qualscores.qualsolid', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "data_type", "qualsolid" ) self.check_metadata_for_string( 'Change data type value="qualsolid" selected="yes">qualsolid' ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0090_upload_file( self ): """ Test uploading qualscores.qual454, NOT setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) self.upload_file( 'qualscores.qual454' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( 'qualscores.qual454', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "data_type", "qual454" ) self.check_metadata_for_string( 'Change data type value="qual454" selected="yes">qual454' ) self.delete_history( id=self.security.encode_id( history.id ) ) def test_0095_upload_file( self ): """ Test uploading 3.maf, NOT setting the file format """ # Logged in as admin_user history = self.create_fresh_history( admin_user ) self.upload_file( '3.maf' ) hda = get_latest_hda() assert hda is not None, "Problem retrieving hda from database" self.verify_dataset_correctness( '3.maf', hid=str( hda.hid ) ) self.check_hda_json_for_key_value( self.security.encode_id( hda.id ), "data_type", "maf" ) self.check_metadata_for_string( 'value="3.maf" value="\?"' ) self.check_metadata_for_string( 'Convert to new format