Changeset View
Changeset View
Standalone View
Standalone View
swh/graphql/tests/functional/test_directory.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 pytest | import pytest | ||||
from . import utils | from . import utils | ||||
from ..data import get_directories | from ..data import get_directories | ||||
@pytest.mark.parametrize("directory", get_directories()) | @pytest.mark.parametrize("directory", get_directories()) | ||||
def test_get_directory(client, directory): | def test_get_directory(client, directory): | ||||
query_str = """ | query_str = """ | ||||
{ | query getDirectory($swhid: SWHID!) { | ||||
directory(swhid: "%s") { | directory(swhid: $swhid) { | ||||
swhid | swhid | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
data, _ = utils.get_query_response(client, query_str % directory.swhid()) | data, _ = utils.get_query_response(client, query_str, swhid=str(directory.swhid())) | ||||
assert data["directory"] == {"swhid": str(directory.swhid())} | assert data["directory"] == {"swhid": str(directory.swhid())} | ||||
def test_get_directory_with_invalid_swhid(client): | def test_get_directory_with_invalid_swhid(client): | ||||
query_str = """ | query_str = """ | ||||
{ | query getDirectory($swhid: SWHID!) { | ||||
directory(swhid: "swh:1:dir:invalid") { | directory(swhid: $swhid) { | ||||
swhid | swhid | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
errors = utils.get_error_response(client, query_str) | errors = utils.get_error_response(client, query_str, swhid="swh:1:dir:invalid") | ||||
# 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 | ||||
assert "Input error: Invalid SWHID" in errors[0]["message"] | assert "Input error: Invalid SWHID" in errors[0]["message"] | ||||
def test_get_revision_directory(client): | def test_get_revision_directory(client): | ||||
query_str = """ | query_str = """ | ||||
{ | query getRevision($swhid: SWHID!) { | ||||
revision(swhid: "swh:1:rev:66c7c1cd9673275037140f2abff7b7b11fc9439c") { | revision(swhid: $swhid) { | ||||
swhid | swhid | ||||
directory { | directory { | ||||
swhid | swhid | ||||
} | } | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
data, _ = utils.get_query_response(client, query_str) | data, _ = utils.get_query_response( | ||||
client, | |||||
query_str, | |||||
swhid="swh:1:rev:66c7c1cd9673275037140f2abff7b7b11fc9439c", | |||||
) | |||||
assert data["revision"]["directory"] == { | assert data["revision"]["directory"] == { | ||||
"swhid": "swh:1:dir:0101010101010101010101010101010101010101" | "swhid": "swh:1:dir:0101010101010101010101010101010101010101" | ||||
} | } | ||||
def test_get_target_directory(client): | def test_get_target_directory(client): | ||||
# TargetDirectoryNode is returned from snapshotbranch, release | # TargetDirectoryNode is returned from snapshotbranch, release | ||||
# and directory entry nodes. Release node is used for testing here | # and directory entry nodes. Release node is used for testing here | ||||
query_str = """ | query_str = """ | ||||
{ | query getRelease($swhid: SWHID!) { | ||||
release(swhid: "swh:1:rel:ee4d20e80af850cc0f417d25dc5073792c5010d2") { | release(swhid: $swhid) { | ||||
swhid | swhid | ||||
target { | target { | ||||
...on Directory { | ...on Directory { | ||||
swhid | swhid | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
data, _ = utils.get_query_response(client, query_str) | data, _ = utils.get_query_response( | ||||
client, | |||||
query_str, | |||||
swhid="swh:1:rel:ee4d20e80af850cc0f417d25dc5073792c5010d2", | |||||
) | |||||
assert data["release"]["target"] == { | assert data["release"]["target"] == { | ||||
"swhid": "swh:1:dir:0505050505050505050505050505050505050505" | "swhid": "swh:1:dir:0505050505050505050505050505050505050505" | ||||
} | } | ||||
def test_get_directory_with_unknown_swhid(client): | def test_get_directory_with_unknown_swhid(client): | ||||
unknown_sha1 = "1" * 40 | unknown_sha1 = "1" * 40 | ||||
query_str = """ | query_str = """ | ||||
{ | query getDirectory($swhid: SWHID!) { | ||||
directory(swhid: "swh:1:dir:%s") { | directory(swhid: $swhid) { | ||||
swhid | swhid | ||||
} | } | ||||
} | } | ||||
""" | """ | ||||
utils.assert_missing_object(client, query_str % unknown_sha1, "directory") | utils.assert_missing_object( | ||||
client, | |||||
query_str, | |||||
obj_type="directory", | |||||
swhid=f"swh:1:dir:{unknown_sha1}", | |||||
) |