Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/misc/test_origin_save.py
# Copyright (C) 2019-2021 The Software Heritage developers | # Copyright (C) 2019-2021 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 datetime import datetime, timedelta, timezone | from datetime import datetime, timedelta, timezone | ||||
import json | import json | ||||
import pytest | import pytest | ||||
from swh.auth.django.utils import oidc_user_from_profile | from swh.auth.django.utils import oidc_user_from_profile | ||||
from swh.web.auth.utils import SWH_AMBASSADOR_PERMISSION | |||||
from swh.web.common.models import SaveOriginRequest | from swh.web.common.models import SaveOriginRequest | ||||
from swh.web.common.origin_save import SAVE_REQUEST_ACCEPTED, SAVE_TASK_SUCCEEDED | from swh.web.common.origin_save import SAVE_REQUEST_ACCEPTED, SAVE_TASK_SUCCEEDED | ||||
from swh.web.common.utils import reverse | from swh.web.common.utils import reverse | ||||
from swh.web.tests.utils import check_http_get_response | from swh.web.tests.utils import check_http_get_response | ||||
VISIT_TYPES = ("git", "svn", "hg") | VISIT_TYPES = ("git", "svn", "hg") | ||||
PRIVILEGED_VISIT_TYPES = tuple(list(VISIT_TYPES) + ["archives"]) | PRIVILEGED_VISIT_TYPES = tuple(list(VISIT_TYPES) + ["archives"]) | ||||
def test_old_save_url_redirection(client): | def test_old_save_url_redirection(client): | ||||
url = reverse("browse-origin-save") | url = reverse("browse-origin-save") | ||||
redirect_url = reverse("origin-save") | redirect_url = reverse("origin-save") | ||||
resp = check_http_get_response(client, url, status_code=302) | resp = check_http_get_response(client, url, status_code=302) | ||||
assert resp["location"] == redirect_url | assert resp["location"] == redirect_url | ||||
def test_save_types_list_default(client): | |||||
"""Unprivileged listing should display default list of visit types. | |||||
""" | |||||
url = reverse("origin-save-types-list") | |||||
resp = check_http_get_response(client, url, status_code=200) | |||||
actual_response = resp.json() | |||||
assert set(actual_response) == set(VISIT_TYPES) | |||||
@pytest.mark.django_db | |||||
def test_save_types_list_privileged(client, keycloak_oidc): | |||||
"""Privileged listing should display all visit types. | |||||
""" | |||||
keycloak_oidc.realm_permissions = [SWH_AMBASSADOR_PERMISSION] | |||||
client.login(code="", code_verifier="", redirect_uri="") | |||||
url = reverse("origin-save-types-list") | |||||
resp = check_http_get_response(client, url, status_code=200) | |||||
actual_response = resp.json() | |||||
assert set(actual_response) == set(PRIVILEGED_VISIT_TYPES) | |||||
@pytest.mark.django_db | @pytest.mark.django_db | ||||
def test_save_origin_requests_list(client, mocker): | def test_save_origin_requests_list(client, mocker): | ||||
nb_origins_per_type = 10 | nb_origins_per_type = 10 | ||||
for visit_type in VISIT_TYPES: | for visit_type in VISIT_TYPES: | ||||
for i in range(nb_origins_per_type): | for i in range(nb_origins_per_type): | ||||
SaveOriginRequest.objects.create( | SaveOriginRequest.objects.create( | ||||
request_date=datetime.now(tz=timezone.utc), | request_date=datetime.now(tz=timezone.utc), | ||||
visit_type=visit_type, | visit_type=visit_type, | ||||
▲ Show 20 Lines • Show All 117 Lines • Show Last 20 Lines |