eventcally/tests/views/test_verification_request_review.py
2023-06-30 17:44:57 +02:00

175 lines
5.2 KiB
Python

import pytest
from tests.seeder import Seeder
from tests.utils import UtilActions
@pytest.mark.parametrize("db_error", [True, False])
@pytest.mark.parametrize("is_verified", [True, False])
def test_review_verify(
client, seeder: Seeder, utils: UtilActions, app, mocker, db, db_error, is_verified
):
(
verifier_user_id,
verifier_admin_unit_id,
unverified_user_id,
unverified_admin_unit_id,
) = seeder.setup_admin_unit_missing_verification_scenario(log_in_verifier=True)
verification_request_id = seeder.create_admin_unit_verification_request(
unverified_admin_unit_id, verifier_admin_unit_id
)
url = utils.get_url(
"admin_unit_verification_request_review", id=verification_request_id
)
if is_verified:
with app.app_context():
from project.models import (
AdminUnitVerificationRequest,
AdminUnitVerificationRequestReviewStatus,
)
verification_request = db.session.get(
AdminUnitVerificationRequest, verification_request_id
)
verification_request.review_status = (
AdminUnitVerificationRequestReviewStatus.verified
)
db.session.commit()
response = client.get(url)
utils.assert_response_redirect(
response,
"manage_admin_unit_verification_requests_incoming",
id=verifier_admin_unit_id,
)
return
response = utils.get_ok(url)
if db_error:
utils.mock_db_commit(mocker)
mail_mock = utils.mock_send_mails_async(mocker)
response = utils.post_form(
url,
response,
{
"review_status": 2,
"auto_verify": 1,
},
)
if db_error:
utils.assert_response_db_error(response)
return
utils.assert_response_redirect(
response,
"manage_admin_unit_verification_requests_incoming",
id=verifier_admin_unit_id,
)
utils.assert_send_mail_called(mail_mock, "mitglied@verein.de")
with app.app_context():
from project.models import (
AdminUnitVerificationRequest,
AdminUnitVerificationRequestReviewStatus,
)
from project.services.admin_unit import get_admin_unit_relation
verification_request = db.session.get(
AdminUnitVerificationRequest, verification_request_id
)
assert verification_request.verified
relation = get_admin_unit_relation(
verifier_admin_unit_id, unverified_admin_unit_id
)
assert relation is not None
assert relation.verify
assert relation.auto_verify_event_reference_requests
def test_review_reject(client, seeder: Seeder, utils: UtilActions, app, db, mocker):
(
verifier_user_id,
verifier_admin_unit_id,
unverified_user_id,
unverified_admin_unit_id,
) = seeder.setup_admin_unit_missing_verification_scenario(log_in_verifier=True)
verification_request_id = seeder.create_admin_unit_verification_request(
unverified_admin_unit_id, verifier_admin_unit_id
)
url = utils.get_url(
"admin_unit_verification_request_review", id=verification_request_id
)
response = utils.get_ok(url)
response = utils.post_form(
url,
response,
{
"review_status": 3,
"rejection_reason": 0,
},
)
utils.assert_response_redirect(
response,
"manage_admin_unit_verification_requests_incoming",
id=verifier_admin_unit_id,
)
with app.app_context():
from project.models import (
AdminUnitVerificationRequest,
AdminUnitVerificationRequestReviewStatus,
)
verification_request = db.session.get(
AdminUnitVerificationRequest, verification_request_id
)
assert (
verification_request.review_status
== AdminUnitVerificationRequestReviewStatus.rejected
)
assert verification_request.rejection_reason is None
def test_review_status(client, seeder: Seeder, utils: UtilActions):
(
verifier_user_id,
verifier_admin_unit_id,
unverified_user_id,
unverified_admin_unit_id,
) = seeder.setup_admin_unit_missing_verification_scenario(log_in_verifier=True)
verification_request_id = seeder.create_admin_unit_verification_request(
unverified_admin_unit_id, verifier_admin_unit_id
)
url = utils.get_url(
"admin_unit_verification_request_review_status", id=verification_request_id
)
utils.get_ok(url)
def test_review_status_401_unauthorized(client, seeder: Seeder, utils: UtilActions):
seeder.create_user()
third_user_id = seeder.create_user("third@third.de")
third_admin_unit_id = seeder.create_admin_unit(third_user_id, "Third Crew")
(
other_user_id,
other_admin_unit_id,
verification_request_id,
) = seeder.create_incoming_admin_unit_verification_request(third_admin_unit_id)
url = utils.get_url(
"admin_unit_verification_request_review_status", id=verification_request_id
)
response = client.get(url)
assert response.status_code == 401