Files
cvat-ai--cvat/tests/python/rest_api/test_check_objects_integrity.py
T
2026-07-13 13:32:23 +08:00

74 lines
2.5 KiB
Python

# Copyright (C) 2021-2022 Intel Corporation
# Copyright (C) CVAT.ai Corporation
#
# SPDX-License-Identifier: MIT
import json
from pathlib import Path
import pytest
from deepdiff import DeepDiff
from shared.utils import config
@pytest.mark.usefixtures("restore_db_per_class")
class TestGetResources:
@pytest.mark.parametrize("path", config.ASSETS_DIR.glob("*.json"))
def test_check_objects_integrity(self, path: Path):
with open(path) as f:
endpoint = path.stem
if endpoint in [
"quality_settings",
"quality_reports",
"quality_conflicts",
"consensus_settings",
]:
endpoint = "/".join(endpoint.split("_"))
elif endpoint == "access_tokens":
endpoint = "auth/access_tokens"
if endpoint == "annotations":
objects = json.load(f)
for jid, annotations in objects["job"].items():
response = config.get_method("admin1", f"jobs/{jid}/annotations").json()
assert (
DeepDiff(
annotations,
response,
ignore_order=True,
exclude_paths="root['version']",
)
== {}
)
elif endpoint == "auth/access_tokens":
objects = json.load(f)
assert set(objects) == {"user"}
for username, tokens in objects["user"].items():
response = config.get_method(
username, "auth/access_tokens", page_size=100, sort="id"
).json()["results"]
assert (
DeepDiff(
tokens,
response,
ignore_order=True,
)
== {}
)
else:
response = config.get_method("admin1", endpoint, page_size="all")
json_objs = json.load(f)
resp_objs = response.json()
assert (
DeepDiff(
json_objs,
resp_objs,
ignore_order=True,
exclude_regex_paths=r"root\['results'\]\[\d+\]\['last_login'\]",
)
== {}
)