Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/api/views/test_origin_save.py
# Copyright (C) 2018-2021 The Software Heritage developers | # Copyright (C) 2018-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 | from datetime import datetime, timedelta | ||||
import pytest | import pytest | ||||
from django.contrib.auth.models import User | |||||
from django.core.exceptions import ObjectDoesNotExist | from django.core.exceptions import ObjectDoesNotExist | ||||
from django.utils import timezone | from django.utils import timezone | ||||
from swh.web.auth.utils import SWH_AMBASSADOR_PERMISSION | from swh.web.auth.utils import SWH_AMBASSADOR_PERMISSION | ||||
from swh.web.common.models import ( | from swh.web.common.models import ( | ||||
SAVE_REQUEST_ACCEPTED, | SAVE_REQUEST_ACCEPTED, | ||||
SAVE_REQUEST_PENDING, | SAVE_REQUEST_PENDING, | ||||
SAVE_REQUEST_REJECTED, | SAVE_REQUEST_REJECTED, | ||||
▲ Show 20 Lines • Show All 465 Lines • ▼ Show 20 Lines | def test_create_save_request_anonymous_user_no_user_id(api_client): | ||||
url = reverse( | url = reverse( | ||||
"api-1-save-origin", url_args={"visit_type": "git", "origin_url": origin_url}, | "api-1-save-origin", url_args={"visit_type": "git", "origin_url": origin_url}, | ||||
) | ) | ||||
check_api_post_responses(api_client, url, status_code=200) | check_api_post_responses(api_client, url, status_code=200) | ||||
sor = SaveOriginRequest.objects.get(origin_url=origin_url) | sor = SaveOriginRequest.objects.get(origin_url=origin_url) | ||||
assert sor.user_id is None | assert sor.user_ids is None | ||||
def test_create_save_request_authenticated_user_id( | def test_create_save_request_authenticated_user_id( | ||||
api_client, origin_to_review, keycloak_oidc, mocker | api_client, origin_to_review, keycloak_oidc, mocker | ||||
): | ): | ||||
oidc_profile = keycloak_oidc.login() | oidc_profile = keycloak_oidc.login() | ||||
api_client.credentials(HTTP_AUTHORIZATION=f"Bearer {oidc_profile['refresh_token']}") | api_client.credentials(HTTP_AUTHORIZATION=f"Bearer {oidc_profile['refresh_token']}") | ||||
origin_url = "https://some.git.hosters/user/repo2" | origin_url = "https://some.git.hosters/user/repo2" | ||||
url = reverse( | url = reverse( | ||||
"api-1-save-origin", url_args={"visit_type": "git", "origin_url": origin_url}, | "api-1-save-origin", url_args={"visit_type": "git", "origin_url": origin_url}, | ||||
) | ) | ||||
response = check_api_post_response(api_client, url, status_code=200) | response = check_api_post_response(api_client, url, status_code=200) | ||||
assert response.wsgi_request.user.id is not None | assert response.wsgi_request.user.id is not None | ||||
user_id = str(response.wsgi_request.user.id) | user_id = str(response.wsgi_request.user.id) | ||||
sor = SaveOriginRequest.objects.get(user_id=user_id) | sor = SaveOriginRequest.objects.get(user_ids=f'"{user_id}"') | ||||
assert sor.user_id == user_id | assert sor.user_ids == f'"{user_id}"' | ||||
def test_create_pending_save_request_multiple_authenticated_users(api_client): | |||||
origin_url = "https://some.git.hosters/user/repo3" | |||||
first_user = User.objects.create_user(username="first_user", password="") | |||||
second_user = User.objects.create_user(username="second_user", password="") | |||||
url = reverse( | |||||
"api-1-save-origin", url_args={"visit_type": "git", "origin_url": origin_url}, | |||||
) | |||||
api_client.force_login(first_user) | |||||
check_api_post_response(api_client, url, status_code=200) | |||||
api_client.force_login(second_user) | |||||
check_api_post_response(api_client, url, status_code=200) | |||||
assert SaveOriginRequest.objects.get(user_ids__contains=f'"{first_user.id}"') | |||||
assert SaveOriginRequest.objects.get(user_ids__contains=f'"{second_user.id}"') |