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

167 lines
4.7 KiB
Python

import pytest
from tests.seeder import Seeder
from tests.utils import UtilActions
@pytest.mark.parametrize("db_error", [True, False])
def test_create(client, app, utils: UtilActions, seeder: Seeder, mocker, db_error):
(
verifier_user_id,
verifier_admin_unit_id,
unverified_user_id,
unverified_admin_unit_id,
) = seeder.setup_admin_unit_missing_verification_scenario()
url = utils.get_url(
"manage_admin_unit_verification_requests_outgoing_create",
id=unverified_admin_unit_id,
target_id=verifier_admin_unit_id,
)
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,
{},
)
if db_error:
utils.assert_response_db_error(response)
return
utils.assert_response_redirect(
response,
"manage_admin_unit_verification_requests_outgoing",
id=unverified_admin_unit_id,
)
utils.assert_send_mail_called(mail_mock, "test@test.de")
with app.app_context():
from project.models import (
AdminUnitVerificationRequest,
AdminUnitVerificationRequestReviewStatus,
)
verification_request = (
AdminUnitVerificationRequest.query.filter(
AdminUnitVerificationRequest.source_admin_unit_id
== unverified_admin_unit_id
)
.filter(
AdminUnitVerificationRequest.target_admin_unit_id
== verifier_admin_unit_id
)
.first()
)
assert verification_request is not None
assert (
verification_request.review_status
== AdminUnitVerificationRequestReviewStatus.inbox
)
def test_admin_unit_verification_requests_incoming(
client, utils: UtilActions, seeder: Seeder
):
user_id, admin_unit_id = seeder.setup_base()
seeder.create_incoming_admin_unit_verification_request(admin_unit_id)
utils.get_endpoint_ok(
"manage_admin_unit_verification_requests_incoming", id=admin_unit_id
)
def test_verification_requests_outgoing(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()
response = utils.get_endpoint(
"manage_admin_unit_verification_requests_outgoing", id=unverified_admin_unit_id
)
utils.assert_response_redirect(
response,
"manage_admin_unit_verification_requests_outgoing_create_select",
id=unverified_admin_unit_id,
)
response = utils.get_endpoint_ok(
"manage_admin_unit_verification_requests_outgoing_create_select",
id=unverified_admin_unit_id,
)
utils.assert_response_contains(response, "Stadtmarketing")
utils.assert_response_contains(response, "Please give us a call")
seeder.create_admin_unit_verification_request(
unverified_admin_unit_id, verifier_admin_unit_id
)
response = utils.get_endpoint_ok(
"manage_admin_unit_verification_requests_outgoing",
id=unverified_admin_unit_id,
)
@pytest.mark.parametrize("db_error", [True, False])
@pytest.mark.parametrize("non_match", [True, False])
def test_delete(
client, seeder: Seeder, utils: UtilActions, app, db, mocker, db_error, non_match
):
(
verifier_user_id,
verifier_admin_unit_id,
unverified_user_id,
unverified_admin_unit_id,
) = seeder.setup_admin_unit_missing_verification_scenario()
request_id = seeder.create_admin_unit_verification_request(
unverified_admin_unit_id, verifier_admin_unit_id
)
url = utils.get_url("admin_unit_verification_request_delete", id=request_id)
response = utils.get_ok(url)
if db_error:
utils.mock_db_commit(mocker)
form_name = "Stadtmarketing"
if non_match:
form_name = "Falscher Name"
response = utils.post_form(
url,
response,
{
"name": form_name,
},
)
if non_match:
utils.assert_response_error_message(
response, "Der eingegebene Name entspricht nicht dem Namen der Organisation"
)
return
if db_error:
utils.assert_response_db_error(response)
return
utils.assert_response_redirect(
response,
"manage_admin_unit_verification_requests_outgoing",
id=unverified_admin_unit_id,
)
with app.app_context():
from project.models import AdminUnitVerificationRequest
request = db.session.get(AdminUnitVerificationRequest, request_id)
assert request is None