Skip to content

Commit

Permalink
Remove test aspects requiring published datasets
Browse files Browse the repository at this point in the history
ATM we are no capable of cleaning up such datasets after a testrun,
because we do not have superuser permissions on demo.dataverse.org

This also removed the now obsolete test fixtures.

Issue datalad#216 tracks a suitable fix.

Closes datalad#215
  • Loading branch information
mih committed Mar 13, 2023
1 parent a61ba00 commit f791033
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 59 deletions.
2 changes: 0 additions & 2 deletions datalad_dataverse/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,4 @@
dataverse_dataset,
dataverse_demoinstance_url,
dataverse_instance_url,
dataverse_published_collection,
dataverse_publishable_dataset,
)
35 changes: 0 additions & 35 deletions datalad_dataverse/tests/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,27 +77,6 @@ def dataverse_collection(dataverse_admin_api,
dataverse_admin_api.delete_dataverse(collection_alias)


@pytest.fixture(autouse=False, scope='session')
def dataverse_published_collection(dataverse_admin_api, dataverse_collection):
# This may not work in all test setups due to lack of permissions or /root
# not being published or it being published already. Try though, since it's
# necessary to publish datasets in order to test against dataverse datasets
# with several versions.
from pyDataverse.exceptions import (
ApiAuthorizationError,
OperationFailedError,
)
try:
dataverse_admin_api.publish_dataverse(dataverse_collection)
except ApiAuthorizationError:
# Test setup doesn't allow for it
pass
except OperationFailedError as e:
print(str(e))

yield dataverse_collection


@pytest.fixture(autouse=False, scope='function')
def dataverse_dataset(dataverse_admin_api, dataverse_collection):
dspid = create_test_dataverse_dataset(
Expand All @@ -109,20 +88,6 @@ def dataverse_dataset(dataverse_admin_api, dataverse_collection):
dataverse_admin_api.destroy_dataset(dspid)


@pytest.fixture(autouse=False, scope='function')
def dataverse_publishable_dataset(dataverse_admin_api,
dataverse_published_collection):
"""Same as `dataverse_dataset` but dataset is part of a published
collection. This is required to be able to publish the dataset."""
dspid = create_test_dataverse_dataset(
dataverse_admin_api, dataverse_published_collection, 'testds')

yield dspid

# cleanup
dataverse_admin_api.destroy_dataset(dspid)


@pytest.fixture(autouse=False, scope='function')
def dataverse_admin_credential_setup(
dataverse_admin_token, dataverse_instance_url, credman):
Expand Down
25 changes: 3 additions & 22 deletions datalad_dataverse/tests/test_pydataverse.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ def check_upload(api, dsid, fcontent, fpath, src_md5):
def test_file_removal(
tmp_path,
dataverse_admin_api,
dataverse_publishable_dataset,
dataverse_dataset,
):

# the starting point of `dataverse_dataset` is a freshly
Expand All @@ -184,7 +184,7 @@ def test_file_removal(
fpath = tmp_path / 'dummy.txt'
fpath.write_text(fcontent)
response = dataverse_admin_api.upload_datafile(
identifier=dataverse_publishable_dataset,
identifier=dataverse_dataset,
filename=fpath,
)
# worked
Expand All @@ -207,27 +207,8 @@ def test_file_removal(

# Re-upload
response = dataverse_admin_api.upload_datafile(
identifier=dataverse_publishable_dataset,
identifier=dataverse_dataset,
filename=fpath,
)
assert response.status_code == 200, \
f"failed to upload file {response.status_code}: {response.json()}"

fid2 = response.json()['data']['files'][0]['dataFile']['id']

# Publish the dataset
# Note, that "major" release is required. We can't publish a "minor" when
# there's no major yet.
response = dataverse_admin_api.publish_dataset(
dataverse_publishable_dataset, release_type="major")
assert response.status_code == 200, \
f"publishing dataset failed with {response.status_code}: {response.json()}"

# We can't remove a file that is part of a published dataset:
status = delete(
f'{dataverse_admin_api.base_url}/dvn/api/data-deposit/v1.1/swordv2/'
f'edit-media/file/{fid2}',
auth=HTTPBasicAuth(dataverse_admin_api.api_token, ''))

assert status.status_code == 400, \
f"unexpected status on deletion {status.status_code}: {status.json()}"

0 comments on commit f791033

Please sign in to comment.