Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/api/views/test_metadata.py
# Copyright (C) 2021 The Software Heritage developers | # Copyright (C) 2021 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import attr | import attr | ||||
from hypothesis import given, strategies | from hypothesis import given | ||||
from hypothesis.strategies._internal.core import sampled_from | from hypothesis.strategies import composite, sampled_from, sets | ||||
import pytest | import pytest | ||||
from swh.model.hypothesis_strategies import ( | from swh.model.hypothesis_strategies import ( | ||||
raw_extrinsic_metadata as raw_extrinsic_metadata_orig, | raw_extrinsic_metadata as raw_extrinsic_metadata_orig, | ||||
) | ) | ||||
from swh.model.hypothesis_strategies import sha1_git | from swh.model.hypothesis_strategies import sha1_git | ||||
from swh.model.identifiers import ExtendedObjectType, ExtendedSWHID, ObjectType | from swh.model.identifiers import ExtendedObjectType, ExtendedSWHID, ObjectType | ||||
from swh.web.common.utils import reverse | from swh.web.common.utils import reverse | ||||
from swh.web.tests.api.views.utils import scroll_results | from swh.web.tests.api.views.utils import scroll_results | ||||
from swh.web.tests.utils import check_api_get_responses, check_http_get_response | from swh.web.tests.utils import check_api_get_responses, check_http_get_response | ||||
# public Web API endpoint for raw extrinsic metadata does not support | # public Web API endpoint for raw extrinsic metadata does not support | ||||
# extended SWHIDs so we ensure only core ones will be used in test inputs. | # extended SWHIDs so we ensure only core ones will be used in test inputs. | ||||
@strategies.composite | @composite | ||||
def raw_extrinsic_metadata(draw): | def raw_extrinsic_metadata(draw): | ||||
remd = draw(raw_extrinsic_metadata_orig()) | remd = draw(raw_extrinsic_metadata_orig()) | ||||
remd = attr.evolve( | remd = attr.evolve( | ||||
remd, | remd, | ||||
target=ExtendedSWHID( | target=ExtendedSWHID( | ||||
object_type=ExtendedObjectType(draw(sampled_from(ObjectType)).value), | object_type=ExtendedObjectType(draw(sampled_from(ObjectType)).value), | ||||
object_id=draw(sha1_git()), | object_id=draw(sha1_git()), | ||||
), | ), | ||||
Show All 36 Lines | def test_inner(archive_data): | ||||
assert ( | assert ( | ||||
rv["Content-Disposition"] | rv["Content-Disposition"] | ||||
== f'attachment; filename="{metadata.target}_metadata"' | == f'attachment; filename="{metadata.target}_metadata"' | ||||
) | ) | ||||
assert rv.content == metadata.metadata | assert rv.content == metadata.metadata | ||||
@pytest.mark.parametrize("limit", [1, 2, 10, 100]) | @pytest.mark.parametrize("limit", [1, 2, 10, 100]) | ||||
@given(strategies.sets(raw_extrinsic_metadata(), min_size=1)) | @given(sets(raw_extrinsic_metadata(), min_size=1)) | ||||
def test_api_raw_extrinsic_metadata_scroll(api_client, subtest, limit, meta): | def test_api_raw_extrinsic_metadata_scroll(api_client, subtest, limit, meta): | ||||
# ensure archive_data fixture will be reset between each hypothesis | # ensure archive_data fixture will be reset between each hypothesis | ||||
# example test run | # example test run | ||||
@subtest | @subtest | ||||
def test_inner(archive_data): | def test_inner(archive_data): | ||||
# Make all metadata objects use the same authority and target | # Make all metadata objects use the same authority and target | ||||
metadata0 = next(iter(meta)) | metadata0 = next(iter(meta)) | ||||
metadata = { | metadata = { | ||||
▲ Show 20 Lines • Show All 124 Lines • Show Last 20 Lines |