diff --git a/swh/graphql/tests/data.py b/swh/graphql/tests/data.py index 95e2603..0ccfa1c 100644 --- a/swh/graphql/tests/data.py +++ b/swh/graphql/tests/data.py @@ -1,20 +1,24 @@ # Copyright (C) 2022 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information from swh.model.tests import swh_model_data def populate_dummy_data(storage): for object_type, objects in swh_model_data.TEST_OBJECTS.items(): method = getattr(storage, object_type + "_add") method(objects) def get_origins(): return swh_model_data.ORIGINS def get_snapshots(): return swh_model_data.SNAPSHOTS + + +def get_releases(): + return swh_model_data.RELEASES diff --git a/swh/graphql/tests/functional/test_release_node.py b/swh/graphql/tests/functional/test_release_node.py new file mode 100644 index 0000000..51792f1 --- /dev/null +++ b/swh/graphql/tests/functional/test_release_node.py @@ -0,0 +1,64 @@ +# Copyright (C) 2022 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +import base64 + +import pytest + +from ..data import get_releases +from .utils import get_query_response + + +@pytest.mark.parametrize("release", get_releases()) +def test_get_release(client, release): + query_str = ( + """ + { + release(swhid: "%s") { + swhid + name { + text + base64 + } + message { + text + } + author { + email { + text + } + name { + text + } + fullname { + text + } + } + date + targetType + } + } + """ + % release.swhid() + ) + data, _ = get_query_response(client, query_str) + + assert data["release"] == { + "swhid": str(release.swhid()), + "name": { + "text": release.name.decode(), + "base64": base64.b64encode(release.name).decode("ascii"), + }, + "message": {"text": release.message.decode()}, + "author": { + "email": {"text": release.author.email.decode()}, + "name": {"text": release.author.name.decode()}, + "fullname": {"text": release.author.fullname.decode()}, + } + if release.author + else None, + "date": release.date.to_datetime().isoformat() if release.date else None, + "targetType": release.target_type.value, + }