chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
# Copyright (C) CVAT.ai Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
from http import HTTPStatus
|
||||
from time import sleep
|
||||
from typing import Any
|
||||
|
||||
import pytest
|
||||
|
||||
from shared.utils.config import get_method, post_method
|
||||
|
||||
|
||||
def _post_task_remote_data(username, task_id, resources):
|
||||
data = {
|
||||
"remote_files": resources,
|
||||
"image_quality": 30,
|
||||
}
|
||||
|
||||
return post_method(username, f"tasks/{task_id}/data", data)
|
||||
|
||||
|
||||
def _wait_until_task_is_created(username: str, rq_id: str) -> dict[str, Any]:
|
||||
url = f"requests/{rq_id}"
|
||||
|
||||
for _ in range(100):
|
||||
response = get_method(username, url)
|
||||
request_details = response.json()
|
||||
if request_details["status"] in ("finished", "failed"):
|
||||
return request_details
|
||||
sleep(1)
|
||||
raise Exception("Cannot create task")
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("restore_db_per_function")
|
||||
class TestCreateFromRemote:
|
||||
task_id = 12
|
||||
|
||||
def _test_can_create(self, user, task_id, resources):
|
||||
response = _post_task_remote_data(user, task_id, resources)
|
||||
assert response.status_code == HTTPStatus.ACCEPTED
|
||||
response = response.json()
|
||||
rq_id = response.get("rq_id")
|
||||
assert rq_id, "The rq_id param was not found in the server response"
|
||||
|
||||
response_json = _wait_until_task_is_created(user, rq_id)
|
||||
assert response_json["status"] == "finished"
|
||||
|
||||
def _test_cannot_create(self, user, task_id, resources):
|
||||
response = _post_task_remote_data(user, task_id, resources)
|
||||
assert response.status_code == HTTPStatus.ACCEPTED
|
||||
response = response.json()
|
||||
rq_id = response.get("rq_id")
|
||||
assert rq_id, "The rq_id param was not found in the server response"
|
||||
|
||||
response_json = _wait_until_task_is_created(user, rq_id)
|
||||
assert response_json["status"] == "failed"
|
||||
return response_json
|
||||
|
||||
def test_can_report_failed_remote_file_download(self, find_users):
|
||||
user = find_users(privilege="admin")[0]["username"]
|
||||
remote_resources = ["http://localhost/favicon.ico"]
|
||||
|
||||
response_json = self._test_cannot_create(user, self.task_id, remote_resources)
|
||||
|
||||
message = response_json["message"]
|
||||
assert "rest_framework.exceptions.ValidationError" in message, message
|
||||
assert f"Failed to download {remote_resources[0]}" in message, message
|
||||
|
||||
def test_can_create(self, find_users):
|
||||
user = find_users(privilege="admin")[0]["username"]
|
||||
remote_resources = ["https://docs.cvat.ai/favicons/favicon-32x32.png"]
|
||||
|
||||
self._test_can_create(user, self.task_id, remote_resources)
|
||||
Reference in New Issue
Block a user