def test_import_netcdf_dataset_incomplete(import_job_data, tmp_file_data, dataset_import_data): import_job_data = copy.copy(import_job_data) import_job_data['message'] = json.dumps({'next_uri': '/datasets/import/a1b2c3/overview/'}) with requests_mock.mock() as m: m.post('https://databasin.org/uploads/upload-temporary-file/', text=json.dumps({'uuid': 'abcd'})) m.get('https://databasin.org/api/v1/uploads/temporary-files/abcd/', text=json.dumps(tmp_file_data)) m.post('https://databasin.org/api/v1/jobs/', headers={'Location': 'https://databasin.org/api/v1/jobs/1234/'}) m.get('https://databasin.org/api/v1/jobs/1234/', text=json.dumps(import_job_data)) m.get('https://databasin.org/api/v1/dataset_imports/a1b2c3/', text=json.dumps(dataset_import_data)) m.delete('https://databasin.org/api/v1/dataset_imports/a1b2c3/') f = six.BytesIO() with zipfile.ZipFile(f, 'w') as zf: zf.writestr('test.nc', '') zf.writestr('style.json', '') f.seek(0) with mock.patch.object(builtins, 'open', mock.Mock(return_value=f)) as open_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' with pytest.raises(DatasetImportError): c.import_netcdf_dataset('test.zip') assert m.call_count == 6
def test_import_netcdf_dataset_incomplete(import_job_data, tmp_file_data, dataset_import_data): import_job_data = copy.copy(import_job_data) import_job_data['message'] = json.dumps( {'next_uri': '/datasets/import/a1b2c3/overview/'}) with requests_mock.mock() as m: m.post('https://databasin.org/uploads/upload-temporary-file/', text=json.dumps({'uuid': 'abcd'})) m.get('https://databasin.org/api/v1/uploads/temporary-files/abcd/', text=json.dumps(tmp_file_data)) m.post('https://databasin.org/api/v1/jobs/', headers={'Location': 'https://databasin.org/api/v1/jobs/1234/'}) m.get('https://databasin.org/api/v1/jobs/1234/', text=json.dumps(import_job_data)) m.get('https://databasin.org/api/v1/dataset_imports/a1b2c3/', text=json.dumps(dataset_import_data)) m.delete('https://databasin.org/api/v1/dataset_imports/a1b2c3/') f = six.BytesIO() with zipfile.ZipFile(f, 'w') as zf: zf.writestr('test.nc', '') zf.writestr('style.json', '') f.seek(0) with mock.patch.object(builtins, 'open', mock.Mock(return_value=f)) as open_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' with pytest.raises(DatasetImportError): c.import_netcdf_dataset('test.zip') assert m.call_count == 6
def test_import_netcdf_dataset_with_no_style(): f = six.BytesIO() with zipfile.ZipFile(f, 'w') as zf: zf.writestr('test.nc', '') f.seek(0) with mock.patch.object(builtins, 'open', mock.Mock(return_value=f)) as open_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' with pytest.raises(ValueError): c.import_netcdf_dataset('test.zip')
def test_import_netcdf_dataset_with_no_style(): f = six.BytesIO() with zipfile.ZipFile(f, 'w') as zf: zf.writestr('test.nc', '') f.seek(0) with mock.patch.object(builtins, 'open', mock.Mock(return_value=f)) as open_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' with pytest.raises(ValueError): c.import_netcdf_dataset('test.zip')
def test_import_netcdf_dataset_with_zip(import_job_data, dataset_data, tmp_file_data): with requests_mock.mock() as m: m.post('https://databasin.org/uploads/upload-temporary-file/', text=json.dumps({'uuid': 'abcd'})) m.get('https://databasin.org/api/v1/uploads/temporary-files/abcd/', text=json.dumps(tmp_file_data)) m.post('https://databasin.org/api/v1/jobs/', headers={'Location': 'https://databasin.org/api/v1/jobs/1234/'}) m.get('https://databasin.org/api/v1/jobs/1234/', text=json.dumps(import_job_data)) m.get('https://databasin.org/api/v1/datasets/a1b2c3/', text=json.dumps(dataset_data)) f = six.BytesIO() with zipfile.ZipFile(f, 'w') as zf: zf.writestr('test.nc', '') zf.writestr('style.json', '') f.seek(0) with mock.patch.object(builtins, 'open', mock.Mock(return_value=f)) as open_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' dataset = c.import_netcdf_dataset('test.zip') open_mock.assert_called_once_with('test.zip', 'a+b') assert m.call_count == 5 assert dataset.id == 'a1b2c3' request_data = json.loads(m.request_history[2].text) assert request_data['job_name'] == 'create_import_job' assert request_data['job_args']['file'] == 'abcd' assert request_data['job_args']['dataset_type'] == 'NetCDF_Native'
def test_import_netcdf_dataset_with_nc(import_job_data, dataset_data, tmp_file_data): with requests_mock.mock() as m: m.post('https://databasin.org/uploads/upload-temporary-file/', text=json.dumps({'uuid': 'abcd'})) m.get('https://databasin.org/api/v1/uploads/temporary-files/abcd/', text=json.dumps(tmp_file_data)) m.post('https://databasin.org/api/v1/jobs/', headers={'Location': 'https://databasin.org/api/v1/jobs/1234/'}) m.get('https://databasin.org/api/v1/jobs/1234/', text=json.dumps(import_job_data)) m.get('https://databasin.org/api/v1/datasets/a1b2c3/', text=json.dumps(dataset_data)) with mock.patch.object(zipfile, 'ZipFile', mock.MagicMock()) as zf_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' dataset = c.import_netcdf_dataset('test.nc', style={'foo': 'bar'}) zf_mock().write.assert_called_once_with('test.nc', 'test.nc') assert m.call_count == 5 assert dataset.id == 'a1b2c3' request_data = json.loads(m.request_history[2].text) assert request_data['job_name'] == 'create_import_job' assert request_data['job_args']['file'] == 'abcd' assert request_data['job_args']['dataset_type'] == 'NetCDF_Native'
def test_import_netcdf_dataset_with_zip(import_job_data, dataset_data, tmp_file_data): with requests_mock.mock() as m: m.post('https://databasin.org/uploads/upload-temporary-file/', text=json.dumps({'uuid': 'abcd'})) m.get('https://databasin.org/api/v1/uploads/temporary-files/abcd/', text=json.dumps(tmp_file_data)) m.post('https://databasin.org/api/v1/jobs/', headers={'Location': 'https://databasin.org/api/v1/jobs/1234/'}) m.get('https://databasin.org/api/v1/jobs/1234/', text=json.dumps(import_job_data)) m.get('https://databasin.org/api/v1/datasets/a1b2c3/', text=json.dumps(dataset_data)) f = six.BytesIO() with zipfile.ZipFile(f, 'w') as zf: zf.writestr('test.nc', '') zf.writestr('style.json', '') f.seek(0) with mock.patch.object(builtins, 'open', mock.Mock(return_value=f)) as open_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' dataset = c.import_netcdf_dataset('test.zip') open_mock.assert_called_once_with('test.zip', 'a+b') assert m.call_count == 5 assert dataset.id == 'a1b2c3' request_data = json.loads(m.request_history[2].text) assert request_data['job_name'] == 'create_import_job' assert request_data['job_args']['file'] == 'abcd' assert request_data['job_args']['dataset_type'] == 'NetCDF_Native'
def test_import_netcdf_dataset_with_nc(import_job_data, dataset_data, tmp_file_data): with requests_mock.mock() as m: m.post('https://databasin.org/uploads/upload-temporary-file/', text=json.dumps({'uuid': 'abcd'})) m.get('https://databasin.org/api/v1/uploads/temporary-files/abcd/', text=json.dumps(tmp_file_data)) m.post('https://databasin.org/api/v1/jobs/', headers={'Location': 'https://databasin.org/api/v1/jobs/1234/'}) m.get('https://databasin.org/api/v1/jobs/1234/', text=json.dumps(import_job_data)) m.get('https://databasin.org/api/v1/datasets/a1b2c3/', text=json.dumps(dataset_data)) with mock.patch.object(zipfile, 'ZipFile', mock.MagicMock()) as zf_mock: c = Client() c._session.cookies['csrftoken'] = 'abcd' dataset = c.import_netcdf_dataset('test.nc', style={'foo': 'bar'}) zf_mock().write.assert_called_once_with('test.nc', 'test.nc') assert m.call_count == 5 assert dataset.id == 'a1b2c3' request_data = json.loads(m.request_history[2].text) assert request_data['job_name'] == 'create_import_job' assert request_data['job_args']['file'] == 'abcd' assert request_data['job_args']['dataset_type'] == 'NetCDF_Native'
def test_import_netcdf_dataset_with_invalid_file(): c = Client() with pytest.raises(ValueError): c.import_netcdf_dataset('test.foo')
def test_import_netcdf_dataset_with_invalid_file(): c = Client() with pytest.raises(ValueError): c.import_netcdf_dataset('test.foo')