Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/browse/views/test_release.py
# Copyright (C) 2018-2020 The Software Heritage developers | # Copyright (C) 2018-2020 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 | ||||
import random | import random | ||||
from hypothesis import given | from hypothesis import given | ||||
from django.utils.html import escape | from django.utils.html import escape | ||||
from swh.web.common.identifiers import gen_swhid | from swh.web.common.identifiers import gen_swhid | ||||
from swh.web.common.utils import format_utc_iso_date, reverse | from swh.web.common.utils import format_utc_iso_date, reverse | ||||
from swh.web.tests.django_asserts import assert_contains, assert_template_used | from swh.web.tests.django_asserts import assert_contains | ||||
from swh.web.tests.strategies import origin_with_releases, release, unknown_release | from swh.web.tests.strategies import origin_with_releases, release, unknown_release | ||||
from swh.web.tests.utils import check_html_get_response | |||||
@given(release()) | @given(release()) | ||||
def test_release_browse(client, archive_data, release): | def test_release_browse(client, archive_data, release): | ||||
_release_browse_checks(client, release, archive_data) | _release_browse_checks(client, release, archive_data) | ||||
@given(origin_with_releases()) | @given(origin_with_releases()) | ||||
Show All 16 Lines | _release_browse_checks( | ||||
origin_url=origin["url"], | origin_url=origin["url"], | ||||
snapshot_id=snapshot["id"], | snapshot_id=snapshot["id"], | ||||
) | ) | ||||
@given(unknown_release()) | @given(unknown_release()) | ||||
def test_release_browse_not_found(client, archive_data, unknown_release): | def test_release_browse_not_found(client, archive_data, unknown_release): | ||||
url = reverse("browse-release", url_args={"sha1_git": unknown_release}) | url = reverse("browse-release", url_args={"sha1_git": unknown_release}) | ||||
resp = client.get(url) | |||||
assert resp.status_code == 404 | resp = check_html_get_response( | ||||
assert_template_used(resp, "error.html") | client, url, status_code=404, template_used="error.html" | ||||
) | |||||
err_msg = "Release with sha1_git %s not found" % unknown_release | err_msg = "Release with sha1_git %s not found" % unknown_release | ||||
assert_contains(resp, err_msg, status_code=404) | assert_contains(resp, err_msg, status_code=404) | ||||
@given(release()) | @given(release()) | ||||
def test_release_uppercase(client, release): | def test_release_uppercase(client, release): | ||||
url = reverse( | url = reverse( | ||||
"browse-release-uppercase-checksum", url_args={"sha1_git": release.upper()} | "browse-release-uppercase-checksum", url_args={"sha1_git": release.upper()} | ||||
) | ) | ||||
resp = client.get(url) | resp = check_html_get_response(client, url, status_code=302) | ||||
assert resp.status_code == 302 | |||||
redirect_url = reverse("browse-release", url_args={"sha1_git": release}) | redirect_url = reverse("browse-release", url_args={"sha1_git": release}) | ||||
assert resp["location"] == redirect_url | assert resp["location"] == redirect_url | ||||
def _release_browse_checks( | def _release_browse_checks( | ||||
client, release, archive_data, origin_url=None, snapshot_id=None | client, release, archive_data, origin_url=None, snapshot_id=None | ||||
): | ): | ||||
query_params = {"origin_url": origin_url, "snapshot": snapshot_id} | query_params = {"origin_url": origin_url, "snapshot": snapshot_id} | ||||
url = reverse( | url = reverse( | ||||
"browse-release", url_args={"sha1_git": release}, query_params=query_params | "browse-release", url_args={"sha1_git": release}, query_params=query_params | ||||
) | ) | ||||
release_data = archive_data.release_get(release) | release_data = archive_data.release_get(release) | ||||
resp = client.get(url) | |||||
release_id = release_data["id"] | release_id = release_data["id"] | ||||
release_name = release_data["name"] | release_name = release_data["name"] | ||||
author_name = release_data["author"]["name"] | author_name = release_data["author"]["name"] | ||||
release_date = release_data["date"] | release_date = release_data["date"] | ||||
message = release_data["message"] | message = release_data["message"] | ||||
target_type = release_data["target_type"] | target_type = release_data["target_type"] | ||||
target = release_data["target"] | target = release_data["target"] | ||||
target_url = reverse( | target_url = reverse( | ||||
"browse-revision", url_args={"sha1_git": target}, query_params=query_params | "browse-revision", url_args={"sha1_git": target}, query_params=query_params | ||||
) | ) | ||||
message_lines = message.split("\n") | message_lines = message.split("\n") | ||||
assert resp.status_code == 200 | resp = check_html_get_response( | ||||
assert_template_used(resp, "browse/release.html") | client, url, status_code=200, template_used="browse/release.html" | ||||
) | |||||
assert_contains(resp, author_name) | assert_contains(resp, author_name) | ||||
assert_contains(resp, format_utc_iso_date(release_date)) | assert_contains(resp, format_utc_iso_date(release_date)) | ||||
assert_contains( | assert_contains( | ||||
resp, | resp, | ||||
"<h6>%s</h6>%s" % (message_lines[0] or "None", "\n".join(message_lines[1:])), | "<h6>%s</h6>%s" % (message_lines[0] or "None", "\n".join(message_lines[1:])), | ||||
) | ) | ||||
assert_contains(resp, release_id) | assert_contains(resp, release_id) | ||||
assert_contains(resp, release_name) | assert_contains(resp, release_name) | ||||
Show All 40 Lines |