38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.test import SimpleTestCase, TestCase
|
|
from django.urls import resolve
|
|
|
|
from ocyan.plugin.contact_form.entrypoint import SHOP_BASE_URL
|
|
|
|
from contact_form.views import post_contact_form
|
|
from mandelstudio.models import ContactMessage
|
|
from mandelstudio.wagtail_hooks import SuperuserOnlyPermissionPolicy
|
|
|
|
|
|
class ContactFormRoutingTests(SimpleTestCase):
|
|
def test_shop_contact_form_uses_project_handler(self):
|
|
match = resolve(f"/{SHOP_BASE_URL}/contact-form/")
|
|
|
|
self.assertIs(match.func, post_contact_form)
|
|
|
|
|
|
class ContactMessagePermissionPolicyTests(TestCase):
|
|
def test_only_superusers_have_contact_message_permissions(self):
|
|
user_model = get_user_model()
|
|
superuser = user_model.objects.create_superuser(
|
|
"contact-superuser",
|
|
"superuser@example.com",
|
|
"password",
|
|
)
|
|
staff_user = user_model.objects.create_user(
|
|
"contact-staff",
|
|
"staff@example.com",
|
|
"password",
|
|
is_staff=True,
|
|
)
|
|
policy = SuperuserOnlyPermissionPolicy(ContactMessage)
|
|
|
|
self.assertTrue(policy.user_has_permission(superuser, "view"))
|
|
self.assertFalse(policy.user_has_permission(staff_user, "view"))
|
|
self.assertFalse(policy.user_has_any_permission(staff_user, {"view", "change"}))
|