def test_artifact_summary_get_request(self): # Artifact w/o summary obs = artifact_summary_get_request('*****@*****.**', 1) exp_p_jobs = [ ['063e553b-327c-4818-ab4a-adfe58e49860', 'Split libraries FASTQ', 'queued', None, None], ['bcc7ebcd-39c1-43e4-af2d-822e3589f14d', 'Split libraries', 'running', 'demultiplexing', None]] exp_files = [ (1L, '1_s_G1_L001_sequences.fastq.gz (raw forward seqs)'), (2L, '1_s_G1_L001_sequences_barcodes.fastq.gz (raw barcodes)')] exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': None, 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '1?\')) { set_artifact_visibility(\'sandbox\', 1) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>'), 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1} self.assertEqual(obs, exp) # Artifact with summary being generated job = ProcessingJob.create( User('*****@*****.**'), Parameters.load(Command(7), values_dict={'input_data': 1}) ) job._set_status('queued') obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': None, 'job': [job.id, 'queued', None], 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '1?\')) { set_artifact_visibility(\'sandbox\', 1) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>'), 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1} self.assertEqual(obs, exp) # Artifact with summary fd, fp = mkstemp(suffix=".html") close(fd) with open(fp, 'w') as f: f.write('<b>HTML TEST - not important</b>\n') a = Artifact(1) a.html_summary_fp = fp self._files_to_remove.extend([fp, a.html_summary_fp[1]]) exp_files.append( (a.html_summary_fp[0], '%s (html summary)' % basename(a.html_summary_fp[1]))) obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '1?\')) { set_artifact_visibility(\'sandbox\', 1) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>'), 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1} self.assertEqual(obs, exp) # No access obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'error', 'message': 'User does not have access to study'} self.assertEqual(obs, exp) # A non-owner/share user can't see the files a.visibility = 'public' obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'public', 'buttons': '', 'files': [], 'editable': False, 'prep_id': 1, 'study_id': 1} self.assertEqual(obs, exp) # returnig to private a.visibility = 'sandbox' # admin gets buttons obs = artifact_summary_get_request('*****@*****.**', 2) exp_p_jobs = [ ['d19f76ee-274e-4c1b-b3a2-a12d73507c55', 'Pick closed-reference OTUs', 'error', 'generating demux file', 'Error message']] exp_files = [ (3L, '1_seqs.fna (preprocessed fasta)'), (4L, '1_seqs.qual (preprocessed fastq)'), (5L, '1_seqs.demux (preprocessed demux)')] exp = {'status': 'success', 'files': exp_files, 'errored_jobs': [], 'editable': True, 'visibility': 'private', 'job': None, 'message': '', 'name': 'Demultiplexed 1', 'processing_jobs': exp_p_jobs, 'processing_parameters': { 'max_barcode_errors': 1.5, 'sequence_max_n': 0, 'max_bad_run_length': 3, 'phred_offset': u'auto', 'rev_comp': False, 'phred_quality_threshold': 3, 'input_data': 1, 'rev_comp_barcode': False, 'rev_comp_mapping_barcodes': False, 'min_per_read_length_fraction': 0.75, 'barcode_type': u'golay_12'}, 'summary': None, 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 2?\')) { ' 'set_artifact_visibility(\'public\', 2) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '2?\')) { set_artifact_visibility(\'sandbox\', 2) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button> <a class="btn btn-primary ' 'btn-sm" href="/vamps/2"><span class="glyphicon ' 'glyphicon-export"></span> Submit to VAMPS</a>'), 'study_id': 1, 'prep_id': 1} self.assertEqual(obs, exp)
def test_artifact_summary_get_request(self): # Artifact w/o summary obs = artifact_summary_get_request('*****@*****.**', 1) exp_p_jobs = [[ '063e553b-327c-4818-ab4a-adfe58e49860', 'Split libraries FASTQ', 'queued', None, None ], [ 'bcc7ebcd-39c1-43e4-af2d-822e3589f14d', 'Split libraries', 'running', 'demultiplexing', None ]] exp_files = [ (1L, '1_s_G1_L001_sequences.fastq.gz (raw forward seqs)'), (2L, '1_s_G1_L001_sequences_barcodes.fastq.gz (raw barcodes)') ] exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': None, 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '1?\')) { set_artifact_visibility(\'sandbox\', 1) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>'), 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp) # Artifact with summary being generated job = ProcessingJob.create( User('*****@*****.**'), Parameters.load(Command(7), values_dict={'input_data': 1})) job._set_status('queued') obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': None, 'job': [job.id, 'queued', None], 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '1?\')) { set_artifact_visibility(\'sandbox\', 1) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>'), 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp) # Artifact with summary fd, fp = mkstemp(suffix=".html") close(fd) with open(fp, 'w') as f: f.write('<b>HTML TEST - not important</b>\n') a = Artifact(1) a.html_summary_fp = fp self._files_to_remove.extend([fp, a.html_summary_fp[1]]) exp_files.append( (a.html_summary_fp[0], '%s (html summary)' % basename(a.html_summary_fp[1]))) obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '1?\')) { set_artifact_visibility(\'sandbox\', 1) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>'), 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp) # No access obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'error', 'message': 'User does not have access to study' } self.assertEqual(obs, exp) # A non-owner/share user can't see the files a.visibility = 'public' obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'processing_parameters': {}, 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'public', 'buttons': '', 'files': [], 'editable': False, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp) # returnig to private a.visibility = 'sandbox' # admin gets buttons obs = artifact_summary_get_request('*****@*****.**', 2) exp_p_jobs = [[ 'd19f76ee-274e-4c1b-b3a2-a12d73507c55', 'Pick closed-reference OTUs', 'error', 'generating demux file', 'Error message' ]] exp_files = [(3L, '1_seqs.fna (preprocessed fasta)'), (4L, '1_seqs.qual (preprocessed fastq)'), (5L, '1_seqs.demux (preprocessed demux)')] exp = { 'status': 'success', 'files': exp_files, 'errored_jobs': [], 'editable': True, 'visibility': 'private', 'job': None, 'message': '', 'name': 'Demultiplexed 1', 'processing_jobs': exp_p_jobs, 'processing_parameters': { 'max_barcode_errors': 1.5, 'sequence_max_n': 0, 'max_bad_run_length': 3, 'phred_offset': u'auto', 'rev_comp': False, 'phred_quality_threshold': 3, 'input_data': 1, 'rev_comp_barcode': False, 'rev_comp_mapping_barcodes': False, 'min_per_read_length_fraction': 0.75, 'barcode_type': u'golay_12' }, 'summary': None, 'buttons': ('<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 2?\')) { ' 'set_artifact_visibility(\'public\', 2) }" ' 'class="btn btn-primary btn-sm">Make public' '</button> <button onclick="if (confirm(\'Are you ' 'sure you want to revert to sandbox artifact id: ' '2?\')) { set_artifact_visibility(\'sandbox\', 2) ' '}" class="btn btn-primary btn-sm">Revert to ' 'sandbox</button> <a class="btn btn-primary ' 'btn-sm" href="/vamps/2"><span class="glyphicon ' 'glyphicon-export"></span> Submit to VAMPS</a>'), 'study_id': 1, 'prep_id': 1 } self.assertEqual(obs, exp)
def test_artifact_summary_get_request(self): # Artifact w/o summary obs = artifact_summary_get_request('*****@*****.**', 1) exp_p_jobs = [ ['063e553b-327c-4818-ab4a-adfe58e49860', 'Split libraries FASTQ', 'queued', None, None], ['bcc7ebcd-39c1-43e4-af2d-822e3589f14d', 'Split libraries', 'running', 'demultiplexing', None]] exp_files = [ (1L, '1_s_G1_L001_sequences.fastq.gz (raw forward seqs)'), (2L, '1_s_G1_L001_sequences_barcodes.fastq.gz (raw barcodes)')] exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': None, 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': '<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public</button>' ' <button onclick="if (confirm(\'Are you sure you ' 'want to revert to sandbox artifact id: 1?\')) ' '{ set_artifact_visibility(\'sandbox\', 1) }" ' 'class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>', 'files': exp_files, 'editable': True} self.assertEqual(obs, exp) # Artifact with summary being generated job = ProcessingJob.create( User('*****@*****.**'), Parameters.load(Command(7), values_dict={'input_data': 1}) ) job._set_status('queued') obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': None, 'job': [job.id, 'queued', None], 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': '<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public</button>' ' <button onclick="if (confirm(\'Are you sure you ' 'want to revert to sandbox artifact id: 1?\')) { ' 'set_artifact_visibility(\'sandbox\', 1) }" ' 'class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>', 'files': exp_files, 'editable': True} self.assertEqual(obs, exp) # Artifact with summary fd, fp = mkstemp(suffix=".html") close(fd) with open(fp, 'w') as f: f.write('<b>HTML TEST - not important</b>\n') a = Artifact(1) a.html_summary_fp = fp self._files_to_remove.extend([fp, a.html_summary_fp[1]]) exp_files.append( (a.html_summary_fp[0], '%s (html summary)' % basename(a.html_summary_fp[1]))) obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': '<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public</button>' ' <button onclick="if (confirm(\'Are you sure you ' 'want to revert to sandbox artifact id: 1?\')) { ' 'set_artifact_visibility(\'sandbox\', 1) }" ' 'class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>', 'files': exp_files, 'editable': True} self.assertEqual(obs, exp) # No access obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'error', 'message': 'User does not have access to study'} self.assertEqual(obs, exp) # A non-owner/share user can't see the files a.visibility = 'public' obs = artifact_summary_get_request('*****@*****.**', 1) exp = {'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'public', 'buttons': '', 'files': [], 'editable': False} self.assertEqual(obs, exp)
def test_artifact_summary_get_request(self): # Artifact w/o summary obs = artifact_summary_get_request('*****@*****.**', 1) exp_p_jobs = [[ '063e553b-327c-4818-ab4a-adfe58e49860', 'Split libraries FASTQ', 'queued', None, None ], [ 'bcc7ebcd-39c1-43e4-af2d-822e3589f14d', 'Split libraries', 'running', 'demultiplexing', None ]] exp_files = [ (1L, '1_s_G1_L001_sequences.fastq.gz (raw forward seqs)'), (2L, '1_s_G1_L001_sequences_barcodes.fastq.gz (raw barcodes)') ] exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': None, 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': '<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public</button>' ' <button onclick="if (confirm(\'Are you sure you ' 'want to revert to sandbox artifact id: 1?\')) ' '{ set_artifact_visibility(\'sandbox\', 1) }" ' 'class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>', 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp) # Artifact with summary being generated job = ProcessingJob.create( User('*****@*****.**'), Parameters.load(Command(7), values_dict={'input_data': 1})) job._set_status('queued') obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': None, 'job': [job.id, 'queued', None], 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': '<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public</button>' ' <button onclick="if (confirm(\'Are you sure you ' 'want to revert to sandbox artifact id: 1?\')) { ' 'set_artifact_visibility(\'sandbox\', 1) }" ' 'class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>', 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp) # Artifact with summary fd, fp = mkstemp(suffix=".html") close(fd) with open(fp, 'w') as f: f.write('<b>HTML TEST - not important</b>\n') a = Artifact(1) a.html_summary_fp = fp self._files_to_remove.extend([fp, a.html_summary_fp[1]]) exp_files.append( (a.html_summary_fp[0], '%s (html summary)' % basename(a.html_summary_fp[1]))) obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'private', 'buttons': '<button onclick="if (confirm(\'Are you sure you ' 'want to make public artifact id: 1?\')) { ' 'set_artifact_visibility(\'public\', 1) }" ' 'class="btn btn-primary btn-sm">Make public</button>' ' <button onclick="if (confirm(\'Are you sure you ' 'want to revert to sandbox artifact id: 1?\')) { ' 'set_artifact_visibility(\'sandbox\', 1) }" ' 'class="btn btn-primary btn-sm">Revert to ' 'sandbox</button>', 'files': exp_files, 'editable': True, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp) # No access obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'error', 'message': 'User does not have access to study' } self.assertEqual(obs, exp) # A non-owner/share user can't see the files a.visibility = 'public' obs = artifact_summary_get_request('*****@*****.**', 1) exp = { 'status': 'success', 'message': '', 'name': 'Raw data 1', 'summary': '<b>HTML TEST - not important</b>\n', 'job': None, 'processing_jobs': exp_p_jobs, 'errored_jobs': [], 'visibility': 'public', 'buttons': '', 'files': [], 'editable': False, 'prep_id': 1, 'study_id': 1 } self.assertEqual(obs, exp)