mirror of
https://github.com/ae-utbm/sith.git
synced 2026-11-01 06:56:18 +00:00
test is_logged_in_counter
This commit is contained in:
1 parent
7bc980113a
commit
74d17e6a96
1 file changed
+45
-2
@@ -25,8 +25,8 @@ from django.contrib.auth.hashers import make_password
|
|||||||
from django.contrib.auth.models import Permission
|
from django.contrib.auth.models import Permission
|
||||||
from django.contrib.messages import DEFAULT_LEVELS, get_messages
|
from django.contrib.messages import DEFAULT_LEVELS, get_messages
|
||||||
from django.shortcuts import resolve_url
|
from django.shortcuts import resolve_url
|
||||||
from django.test import Client, TestCase
|
from django.test import Client, RequestFactory, TestCase
|
||||||
from django.urls import reverse
|
from django.urls import resolve, reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.timezone import localdate, now
|
from django.utils.timezone import localdate, now
|
||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
@@ -48,6 +48,7 @@ from counter.models import (
|
|||||||
ReturnableProduct,
|
ReturnableProduct,
|
||||||
Selling,
|
Selling,
|
||||||
)
|
)
|
||||||
|
from counter.utils import is_logged_in_counter
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
@@ -921,6 +922,48 @@ class TestBarmanConnection(TestCase):
|
|||||||
assert self.barman in response.wsgi_request.barmen
|
assert self.barman in response.wsgi_request.barmen
|
||||||
|
|
||||||
|
|
||||||
|
class TestIsLoggedInCounter(TestCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
cls.counter = baker.make(Counter, type="BAR")
|
||||||
|
cls.other_counter = baker.make(Counter, type="BAR")
|
||||||
|
cls.barman = subscriber_user.make()
|
||||||
|
cls.other_barman = subscriber_user.make()
|
||||||
|
cls.url = reverse("counter:details", kwargs={"counter_id": cls.counter.id})
|
||||||
|
|
||||||
|
def make_request(self, barmen):
|
||||||
|
"""Requête émise depuis une vue du namespace `counter`."""
|
||||||
|
request = RequestFactory().get(self.url)
|
||||||
|
request.resolver_match = resolve(self.url)
|
||||||
|
request.barmen = set(barmen)
|
||||||
|
return request
|
||||||
|
|
||||||
|
def test_denied(self):
|
||||||
|
# nobody is logged
|
||||||
|
request = self.make_request([])
|
||||||
|
assert not is_logged_in_counter(request)
|
||||||
|
|
||||||
|
# somebody is logged, but on another counter
|
||||||
|
self.other_counter.permanencies.create(user=self.barman, start=now())
|
||||||
|
assert not is_logged_in_counter(request, counter=self.counter)
|
||||||
|
|
||||||
|
def test_ok(self):
|
||||||
|
request = self.make_request([self.barman])
|
||||||
|
assert is_logged_in_counter(request)
|
||||||
|
|
||||||
|
self.counter.permanencies.create(user=self.barman, start=now())
|
||||||
|
assert is_logged_in_counter(request, counter=self.counter)
|
||||||
|
|
||||||
|
def test_request_outside_counter_app(self):
|
||||||
|
"""A request coming from outside the counter app is denied."""
|
||||||
|
request = self.make_request([self.barman])
|
||||||
|
request.resolver_match = resolve(reverse("core:index"))
|
||||||
|
assert not is_logged_in_counter(request)
|
||||||
|
|
||||||
|
self.counter.permanencies.create(user=self.barman, start=now())
|
||||||
|
assert not is_logged_in_counter(request, counter=self.counter)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_barman_timeout(client: Client):
|
def test_barman_timeout(client: Client):
|
||||||
"""Test that barmen timeout is well managed."""
|
"""Test that barmen timeout is well managed."""
|
||||||
|
|||||||
Reference in new issue
Block a user