def test_create_index(base_get_mock, base_post_mock): client = youcat.YoucatClient(net.Subject()) response1 = Mock() response1.status_code = 303 job_location = 'http://go.here' response1.headers = {'Location': job_location} base_post_mock.return_value = response1 response2 = Mock() response2.status_code = 200 response2.text = "EXECUTING" base_get_mock.side_effect = [response2] response3 = Mock() response3.status_code = 200 response3.text = "COMPLETED" base_get_mock.side_effect = [response2, response3] client.create_index('schema.sometable', 'col1', unique=True) # expected post calls post_calls = [ call((youcat.TABLE_UPDATE_CAPABILITY_ID, None), allow_redirects=False, data={ 'table': 'schema.sometable', 'uniquer': True, 'index': 'col1' }), call('{}/phase'.format(job_location), data={'PHASE': 'RUN'}) ] base_post_mock.assert_has_calls(post_calls) # expected get calls get_calls = [ call('{}/phase'.format(job_location), data={'WAIT': 1}), call('{}/phase'.format(job_location), data={'WAIT': 1}) ] base_get_mock.assert_has_calls(get_calls) # error cases with pytest.raises(AttributeError): client.create_index(None, 'col1') with pytest.raises(AttributeError): client.create_index('sometable', None) response4 = Mock() response4.status_code = 200 response4.text = 'ABORTED' base_get_mock.side_effect = [response4] client = youcat.YoucatClient(net.Subject()) with pytest.raises(RuntimeError): client.create_index('sometable', 'col1') response5 = Mock() response5.status_code = 500 base_get_mock.side_effect = [response1, response4] client = youcat.YoucatClient(net.Subject()) with pytest.raises(RuntimeError): client.create_index('sometable', 'col1')
def test_delete_table(base_delete_mock): client = youcat.YoucatClient(net.Subject()) client.delete_table('sometable') base_delete_mock.assert_called_with( (youcat.TABLES_CAPABILITY_ID, 'sometable')) # error case with pytest.raises(AttributeError): client.delete(None)
def test_query(base_post_mock): client = youcat.YoucatClient(net.Subject()) # default format def_name = 'tmptable' def_table = os.path.join(TESTDATA_DIR, 'votable.xml') fields = {'LANG': 'ADQL', 'QUERY': 'query', 'FORMAT': 'VOTable'} tablefile = os.path.basename(def_table) fields['UPLOAD'] = '{},param:{}'.format(def_name, tablefile) fields[tablefile] = (def_table, open(def_table, 'rb')) client.query('query', tmptable='tmptable:' + def_table) print(base_post_mock.call_args_list[0][0][0]) assert base_post_mock.call_args_list[0][0][0] == \ (youcat.QUERY_CAPABILITY_ID, None)
def test_load_table(base_put_mock): client = youcat.YoucatClient(net.Subject()) test_load_tb = os.path.join(TESTDATA_DIR, 'loadTable.txt') # default format (tsv) with open(test_load_tb, 'rb') as fh: with patch('cadctap.youcat.open') as open_mock: open_mock.return_value = fh client.load('schema.sometable', [test_load_tb]) base_put_mock.assert_called_with( (youcat.TABLES_CAPABILITY_ID, 'schema.sometable'), data=fh, headers={'Content-Type': str(youcat.ALLOWED_CONTENT_TYPES['tsv'])}) # tsv format with open(test_load_tb, 'rb') as fh: with patch('cadctap.youcat.open') as open_mock: open_mock.return_value = fh client.load('schema.sometable', [test_load_tb], fformat='tsv') base_put_mock.assert_called_with( (youcat.TABLES_CAPABILITY_ID, 'schema.sometable'), data=fh, headers={'Content-Type': str(youcat.ALLOWED_CONTENT_TYPES['tsv'])}) # csv format with open(test_load_tb, 'rb') as fh: with patch('cadctap.youcat.open') as open_mock: open_mock.return_value = fh client.load('schema.sometable', [test_load_tb], fformat='csv') base_put_mock.assert_called_with( (youcat.TABLES_CAPABILITY_ID, 'schema.sometable'), data=fh, headers={'Content-Type': str(youcat.ALLOWED_CONTENT_TYPES['csv'])}) # error cases with pytest.raises(AttributeError): client.load(None, [test_load_table]) with pytest.raises(AttributeError): client.load('sometable', None) with pytest.raises(AttributeError): client.load('sometable', [])
def test_create_table(base_put_mock): client = youcat.YoucatClient(net.Subject()) # default format def_table = os.path.join(TESTDATA_DIR, 'createTable.vosi') def_table_content = open(def_table, 'rb').read() client.create_table('sometable', def_table) base_put_mock.assert_called_with( (youcat.TABLES_CAPABILITY_ID, 'sometable'), data=def_table_content, headers={ 'Content-Type': '{}'.format(youcat.ALLOWED_TB_DEF_TYPES['VOSITable']) }) # FITSTable format base_put_mock.reset_mock() client.create_table('sometable', def_table, 'FITSTable') base_put_mock.assert_called_with( (youcat.TABLES_CAPABILITY_ID, 'sometable'), data=def_table_content, headers={ 'Content-Type': '{}'.format(youcat.ALLOWED_TB_DEF_TYPES['FITSTable']) }) # VOTable format base_put_mock.reset_mock() client.create_table('sometable', def_table, 'VOTable') base_put_mock.assert_called_with( (youcat.TABLES_CAPABILITY_ID, 'sometable'), data=def_table_content, headers={ 'Content-Type': '{}'.format(youcat.ALLOWED_TB_DEF_TYPES['VOTable']) }) # error cases with pytest.raises(AttributeError): client.create_table(None, def_table) with pytest.raises(AttributeError): client.create_table('sometable', None)
def test_schema(base_get_mock): client = youcat.YoucatClient(net.Subject()) # default format client.schema() base_get_mock.assert_called_with((youcat.TABLES_CAPABILITY_ID, None))