Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/api/views/test_content.py
# Copyright (C) 2015-2019 The Software Heritage developers | # Copyright (C) 2015-2019 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 Affero General Public License version 3, or any later version | # License: GNU Affero 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 | ||||
from hypothesis import given | from hypothesis import given | ||||
import pytest | import pytest | ||||
from swh.web.common.utils import reverse | from swh.web.common.utils import reverse | ||||
from swh.web.tests.api.views import check_api_get_responses, check_api_post_responses | |||||
from swh.web.tests.conftest import ctags_json_missing, fossology_missing | from swh.web.tests.conftest import ctags_json_missing, fossology_missing | ||||
from swh.web.tests.data import random_content | from swh.web.tests.data import random_content | ||||
from swh.web.tests.strategies import content, contents_with_ctags | from swh.web.tests.strategies import content, contents_with_ctags | ||||
from swh.web.tests.utils import ( | |||||
check_api_get_responses, | |||||
check_api_post_responses, | |||||
check_http_get_response, | |||||
) | |||||
@given(content()) | @given(content()) | ||||
def test_api_content_filetype(api_client, indexer_data, content): | def test_api_content_filetype(api_client, indexer_data, content): | ||||
indexer_data.content_add_mimetype(content["sha1"]) | indexer_data.content_add_mimetype(content["sha1"]) | ||||
url = reverse( | url = reverse( | ||||
"api-1-content-filetype", url_args={"q": "sha1_git:%s" % content["sha1_git"]} | "api-1-content-filetype", url_args={"q": "sha1_git:%s" % content["sha1_git"]} | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 223 Lines • ▼ Show 20 Lines | assert rv.data == { | ||||
% unknown_content_["sha1"], | % unknown_content_["sha1"], | ||||
} | } | ||||
@given(content()) | @given(content()) | ||||
def test_api_content_raw_text(api_client, archive_data, content): | def test_api_content_raw_text(api_client, archive_data, content): | ||||
url = reverse("api-1-content-raw", url_args={"q": "sha1:%s" % content["sha1"]}) | url = reverse("api-1-content-raw", url_args={"q": "sha1:%s" % content["sha1"]}) | ||||
rv = api_client.get(url) | rv = check_http_get_response(api_client, url, status_code=200) | ||||
assert rv.status_code == 200, rv.data | |||||
assert rv["Content-Type"] == "application/octet-stream" | assert rv["Content-Type"] == "application/octet-stream" | ||||
assert ( | assert ( | ||||
rv["Content-disposition"] | rv["Content-disposition"] | ||||
== "attachment; filename=content_sha1_%s_raw" % content["sha1"] | == "attachment; filename=content_sha1_%s_raw" % content["sha1"] | ||||
) | ) | ||||
assert rv["Content-Type"] == "application/octet-stream" | |||||
expected_data = archive_data.content_get_data(content["sha1"]) | expected_data = archive_data.content_get_data(content["sha1"]) | ||||
assert rv.content == expected_data["data"] | assert rv.content == expected_data["data"] | ||||
@given(content()) | @given(content()) | ||||
def test_api_content_raw_text_with_filename(api_client, archive_data, content): | def test_api_content_raw_text_with_filename(api_client, archive_data, content): | ||||
url = reverse( | url = reverse( | ||||
"api-1-content-raw", | "api-1-content-raw", | ||||
url_args={"q": "sha1:%s" % content["sha1"]}, | url_args={"q": "sha1:%s" % content["sha1"]}, | ||||
query_params={"filename": "filename.txt"}, | query_params={"filename": "filename.txt"}, | ||||
) | ) | ||||
rv = api_client.get(url) | rv = check_http_get_response(api_client, url, status_code=200) | ||||
assert rv.status_code == 200, rv.data | |||||
assert rv["Content-Type"] == "application/octet-stream" | |||||
assert rv["Content-disposition"] == "attachment; filename=filename.txt" | assert rv["Content-disposition"] == "attachment; filename=filename.txt" | ||||
assert rv["Content-Type"] == "application/octet-stream" | assert rv["Content-Type"] == "application/octet-stream" | ||||
expected_data = archive_data.content_get_data(content["sha1"]) | expected_data = archive_data.content_get_data(content["sha1"]) | ||||
assert rv.content == expected_data["data"] | assert rv.content == expected_data["data"] | ||||
@given(content()) | @given(content()) | ||||
def test_api_check_content_known(api_client, content): | def test_api_check_content_known(api_client, content): | ||||
Show All 30 Lines | |||||
@given(content()) | @given(content()) | ||||
def test_api_content_uppercase(api_client, content): | def test_api_content_uppercase(api_client, content): | ||||
url = reverse( | url = reverse( | ||||
"api-1-content-uppercase-checksum", url_args={"q": content["sha1"].upper()} | "api-1-content-uppercase-checksum", url_args={"q": content["sha1"].upper()} | ||||
) | ) | ||||
rv = api_client.get(url) | rv = check_http_get_response(api_client, url, status_code=302) | ||||
assert rv.status_code == 302, rv.data | |||||
redirect_url = reverse("api-1-content", url_args={"q": content["sha1"]}) | redirect_url = reverse("api-1-content", url_args={"q": content["sha1"]}) | ||||
assert rv["location"] == redirect_url | assert rv["location"] == redirect_url |