Changeset View
Changeset View
Standalone View
Standalone View
swh/graphql/tests/functional/test_release_node.py
# Copyright (C) 2022 The Software Heritage developers | # Copyright (C) 2022 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 General Public License version 3, or any later version | # License: GNU 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 base64 | import base64 | ||||
import pytest | import pytest | ||||
from swh.model.model import ObjectType | |||||
from . import utils | from . import utils | ||||
from ..data import get_releases | from ..data import ( | ||||
get_contents, | |||||
get_directories, | |||||
get_releases, | |||||
get_releases_with_target, | |||||
get_revisions, | |||||
) | |||||
@pytest.mark.parametrize("release", get_releases()) | @pytest.mark.parametrize("release", get_releases()) | ||||
def test_get_release(client, release): | def test_get_release(client, release): | ||||
query_str = ( | query_str = ( | ||||
""" | """ | ||||
{ | { | ||||
release(swhid: "%s") { | release(swhid: "%s") { | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | query_str = """ | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
errors = utils.get_error_response(client, query_str) | errors = utils.get_error_response(client, query_str) | ||||
# API will throw an error in case of an invalid SWHID | # API will throw an error in case of an invalid SWHID | ||||
assert len(errors) == 1 | assert len(errors) == 1 | ||||
def test_get_release_target_revision(client): | @pytest.mark.parametrize("release_with_target", get_releases_with_target()) | ||||
swhid = "swh:1:rel:9129dc4e14acd0e51ca3bcd6b80f4577d281fd25" | def test_get_release_targets(client, release_with_target): | ||||
query_str = """ | query_str = """ | ||||
{ | { | ||||
release(swhid: "%s") { | release(swhid: "%s") { | ||||
targetType | targetType | ||||
target { | target { | ||||
...on Revision { | ...on Revision { | ||||
swhid | swhid | ||||
} | } | ||||
} | |||||
} | |||||
} | |||||
""" | |||||
data, _ = utils.get_query_response(client, query_str % swhid) | |||||
assert data["release"] == { | |||||
"target": {"swhid": "swh:1:rev:66c7c1cd9673275037140f2abff7b7b11fc9439c"}, | |||||
"targetType": "revision", | |||||
} | |||||
def test_get_release_target_release(client): | |||||
swhid = "swh:1:rel:6429dc4e14acd0e51ca3bcd6b80f4577d281fd32" | |||||
query_str = """ | |||||
{ | |||||
release(swhid: "%s") { | |||||
targetType | |||||
target { | |||||
...on Release { | ...on Release { | ||||
swhid | swhid | ||||
} | } | ||||
} | |||||
} | |||||
} | |||||
""" | |||||
data, _ = utils.get_query_response(client, query_str % swhid) | |||||
assert data["release"] == { | |||||
"target": {"swhid": "swh:1:rel:8059dc4e17fcd0e51ca3bcd6b80f4577d281fd08"}, | |||||
"targetType": "release", | |||||
} | |||||
def test_get_release_target_directory(client): | |||||
swhid = "swh:1:rel:3129dc4e14acd0e51ca3bcd6b80f4577d281fd42" | |||||
query_str = """ | |||||
{ | |||||
release(swhid: "%s") { | |||||
targetType | |||||
target { | |||||
...on Directory { | ...on Directory { | ||||
swhid | swhid | ||||
} | } | ||||
} | |||||
} | |||||
} | |||||
""" | |||||
data, _ = utils.get_query_response(client, query_str % swhid) | |||||
assert data["release"] == { | |||||
"target": {"swhid": "swh:1:dir:4b825dc642cb6eb9a060e54bf8d69288fbee4904"}, | |||||
"targetType": "directory", | |||||
} | |||||
def test_get_release_target_content(client): | |||||
swhid = "swh:1:rel:7589dc4e14acd0e51ca3bcd6b80f4577d281fd34" | |||||
query_str = """ | |||||
{ | |||||
release(swhid: "%s") { | |||||
targetType | |||||
target { | |||||
...on Content { | ...on Content { | ||||
swhid | swhid | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
data, _ = utils.get_query_response(client, query_str % swhid) | data, _ = utils.get_query_response(client, query_str % release_with_target.swhid()) | ||||
if release_with_target.target_type == ObjectType.REVISION: | |||||
target_swhid = get_revisions()[0].swhid() | |||||
elif release_with_target.target_type == ObjectType.RELEASE: | |||||
target_swhid = get_releases()[0].swhid() | |||||
elif release_with_target.target_type == ObjectType.DIRECTORY: | |||||
target_swhid = get_directories()[0].swhid() | |||||
elif release_with_target.target_type == ObjectType.CONTENT: | |||||
target_swhid = get_contents()[0].swhid() | |||||
assert data["release"] == { | assert data["release"] == { | ||||
"target": {"swhid": "swh:1:cnt:86bc6b377e9d25f9d26777a4a28d08e63e7c5779"}, | "targetType": release_with_target.target_type.value, | ||||
"targetType": "content", | "target": {"swhid": str(target_swhid)}, | ||||
} | } | ||||
def test_get_release_target_unknown(client): | def test_get_release_target_unknown(client): | ||||
# Clinet can request all the possible options if the target type | # Clinet can request all the possible options if the target type | ||||
# is unknown. The data under the right type will be returned | # is unknown. The data under the right type will be returned | ||||
# The target is of type Revision in this case | # The target is of type Revision in this case | ||||
# ie: both swhid and message will be available in the response | # ie: both swhid and message will be available in the response | ||||
swhid = "swh:1:rel:9129dc4e14acd0e51ca3bcd6b80f4577d281fd25" | swhid = get_releases_with_target()[0].swhid() | ||||
query_str = """ | query_str = """ | ||||
{ | { | ||||
release(swhid: "%s") { | release(swhid: "%s") { | ||||
targetType | targetType | ||||
target { | target { | ||||
...on Revision { | ...on Revision { | ||||
swhid | swhid | ||||
message { | message { | ||||
Show All 12 Lines | query_str = """ | ||||
} | } | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
data, _ = utils.get_query_response(client, query_str % swhid) | data, _ = utils.get_query_response(client, query_str % swhid) | ||||
assert data["release"] == { | assert data["release"] == { | ||||
"target": { | "target": { | ||||
"message": {"text": "hello"}, | "message": {"text": "hello"}, | ||||
"swhid": "swh:1:rev:66c7c1cd9673275037140f2abff7b7b11fc9439c", | "swhid": str(get_revisions()[0].swhid()), | ||||
}, | }, | ||||
"targetType": "revision", | "targetType": "revision", | ||||
} | } |