Skip to content

test_dataset_catalogs#

catalog_datasets#

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
@pytest.fixture
def catalog_datasets(reference_data):
    # Catalog allows fairdata users to create datasets and edit their own datasets
    ida_catalog = factories.DataCatalogFactory(id="data-catalog-ida")
    fairdata_users, _ = Group.objects.get_or_create(name="fairdata_users")
    ida_catalog.dataset_groups_create.set([fairdata_users])

    # Catalog allows test service to create and edit any datasets
    service_catalog = factories.DataCatalogFactory(id="data-catalog-test")
    service_group, _ = Group.objects.get_or_create(name="test")
    service_catalog.dataset_groups_create.set([service_group])
    service_catalog.dataset_groups_admin.set([service_group])

    factories.PublishedDatasetFactory(
        persistent_identifier="ida-public-dataset", data_catalog=ida_catalog
    )
    factories.DatasetFactory(persistent_identifier="ida-draft-dataset", data_catalog=ida_catalog)
    factories.PublishedDatasetFactory(
        persistent_identifier="test-public-dataset", data_catalog=service_catalog
    )
    factories.DatasetFactory(
        persistent_identifier="test-draft-dataset", data_catalog=service_catalog
    )

test_catalog_datasets_list_public#

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_list_public(user_client, catalog_datasets):
    res = user_client.get("/v3/datasets?pagination=false")
    assert [d["persistent_identifier"] for d in res.data] == [
        "test-public-dataset",
        "ida-public-dataset",
    ]

test_catalog_datasets_list_service#

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_list_service(service_client, catalog_datasets):
    res = service_client.get("/v3/datasets?pagination=false")
    assert [d["persistent_identifier"] for d in res.data] == [
        "test-draft-dataset",
        "test-public-dataset",
        "ida-public-dataset",
    ]

test_catalog_datasets_list_admin#

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_list_admin(admin_client, catalog_datasets):
    res = admin_client.get("/v3/datasets?pagination=false")
    assert [d["persistent_identifier"] for d in res.data] == [
        "test-draft-dataset",
        "test-public-dataset",
        "ida-draft-dataset",
        "ida-public-dataset",
    ]

test_catalog_datasets_create_fairdata#

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_create_fairdata(user_client, catalog_datasets, dataset_a_json):
    res = user_client.post(
        "/v3/datasets",
        {**dataset_a_json, "data_catalog": "data-catalog-ida"},
        content_type="application/json",
    )
    assert res.status_code == 201

    res = user_client.post(
        "/v3/datasets",
        {**dataset_a_json, "data_catalog": "data-catalog-test"},
        content_type="application/json",
    )
    assert res.status_code == 403

test_catalog_datasets_create_service#

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_create_service(service_client, catalog_datasets, dataset_a_json):
    res = service_client.post(
        "/v3/datasets",
        {**dataset_a_json, "data_catalog": "data-catalog-ida"},
        content_type="application/json",
    )
    assert res.status_code == 403

    res = service_client.post(
        "/v3/datasets",
        {**dataset_a_json, "data_catalog": "data-catalog-test"},
        content_type="application/json",
    )
    assert res.status_code == 201

test_catalog_datasets_create_admin#

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_create_admin(admin_client, catalog_datasets, dataset_a_json):
    res = admin_client.post(
        "/v3/datasets",
        {**dataset_a_json, "data_catalog": "data-catalog-ida"},
        content_type="application/json",
    )
    assert res.status_code == 201

    res = admin_client.post(
        "/v3/datasets",
        {**dataset_a_json, "data_catalog": "data-catalog-test"},
        content_type="application/json",
    )
    assert res.status_code == 201

test_catalog_datasets_update_fairdata#

Fairdata user should not be able to update datasets they don't own.

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_update_fairdata(user_client, catalog_datasets, dataset_a_json):
    """Fairdata user should not be able to update datasets they don't own."""
    dataset_id = Dataset.objects.get(persistent_identifier="ida-public-dataset").id
    res = user_client.patch(f"/v3/datasets/{dataset_id}", {}, content_type="application/json")
    assert res.status_code == 403

    dataset_id = Dataset.objects.get(persistent_identifier="test-public-dataset").id
    res = user_client.patch(f"/v3/datasets/{dataset_id}", {}, content_type="application/json")
    assert res.status_code == 403

test_catalog_datasets_update_service#

Service should be able to update all datasets in their catalogs.

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_update_service(service_client, catalog_datasets, dataset_a_json):
    """Service should be able to update all datasets in their catalogs."""
    dataset_id = Dataset.objects.get(persistent_identifier="ida-public-dataset").id
    res = service_client.patch(f"/v3/datasets/{dataset_id}", {}, content_type="application/json")
    assert res.status_code == 403

    dataset_id = Dataset.objects.get(persistent_identifier="test-public-dataset").id
    res = service_client.patch(f"/v3/datasets/{dataset_id}", {}, content_type="application/json")
    assert res.status_code == 200

test_catalog_datasets_update_admin#

Admin should be able to update all datasets in all catalogs.

Source code in tests/unit/apps/core/api/dataset/test_dataset_catalogs.py
def test_catalog_datasets_update_admin(admin_client, catalog_datasets, dataset_a_json):
    """Admin should be able to update all datasets in all catalogs."""
    dataset_id = Dataset.objects.get(persistent_identifier="ida-public-dataset").id
    res = admin_client.patch(f"/v3/datasets/{dataset_id}", {}, content_type="application/json")
    assert res.status_code == 200

    dataset_id = Dataset.objects.get(persistent_identifier="test-public-dataset").id
    res = admin_client.patch(f"/v3/datasets/{dataset_id}", {}, content_type="application/json")
    assert res.status_code == 200