mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-11-04 02:53:06 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			fix-poster
			...
			trombi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2a9cbfdf77 | |||
| 0a460b46b9 | 
@@ -2,6 +2,7 @@ from datetime import timedelta
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.core.cache import cache
 | 
				
			||||||
from django.core.management import call_command
 | 
					from django.core.management import call_command
 | 
				
			||||||
from django.test import Client, TestCase
 | 
					from django.test import Client, TestCase
 | 
				
			||||||
from django.urls import reverse
 | 
					from django.urls import reverse
 | 
				
			||||||
@@ -9,7 +10,9 @@ from django.utils.timezone import now
 | 
				
			|||||||
from model_bakery import baker, seq
 | 
					from model_bakery import baker, seq
 | 
				
			||||||
from model_bakery.recipe import Recipe, foreign_key
 | 
					from model_bakery.recipe import Recipe, foreign_key
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from club.models import Club, Membership
 | 
				
			||||||
from core.baker_recipes import (
 | 
					from core.baker_recipes import (
 | 
				
			||||||
 | 
					    board_user,
 | 
				
			||||||
    old_subscriber_user,
 | 
					    old_subscriber_user,
 | 
				
			||||||
    subscriber_user,
 | 
					    subscriber_user,
 | 
				
			||||||
    very_old_subscriber_user,
 | 
					    very_old_subscriber_user,
 | 
				
			||||||
@@ -17,6 +20,7 @@ from core.baker_recipes import (
 | 
				
			|||||||
from core.models import User
 | 
					from core.models import User
 | 
				
			||||||
from counter.models import Counter, Refilling, Selling
 | 
					from counter.models import Counter, Refilling, Selling
 | 
				
			||||||
from eboutic.models import Invoice, InvoiceItem
 | 
					from eboutic.models import Invoice, InvoiceItem
 | 
				
			||||||
 | 
					from trombi.models import Trombi, TrombiUser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestSearchUsers(TestCase):
 | 
					class TestSearchUsers(TestCase):
 | 
				
			||||||
@@ -187,3 +191,103 @@ def test_generate_username(first_name: str, last_name: str, expected: str):
 | 
				
			|||||||
    new_user = User(first_name=first_name, last_name=last_name, email="a@example.com")
 | 
					    new_user = User(first_name=first_name, last_name=last_name, email="a@example.com")
 | 
				
			||||||
    new_user.generate_username()
 | 
					    new_user.generate_username()
 | 
				
			||||||
    assert new_user.username == expected
 | 
					    assert new_user.username == expected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pytest.mark.django_db
 | 
				
			||||||
 | 
					class TestUserPreferences:
 | 
				
			||||||
 | 
					    @pytest.fixture
 | 
				
			||||||
 | 
					    def subscriber(self) -> User:
 | 
				
			||||||
 | 
					        return subscriber_user.make()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.fixture
 | 
				
			||||||
 | 
					    def other_subscriber(self) -> User:
 | 
				
			||||||
 | 
					        return subscriber_user.make()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.fixture
 | 
				
			||||||
 | 
					    def trombi_user(self) -> User:
 | 
				
			||||||
 | 
					        user = subscriber_user.make()
 | 
				
			||||||
 | 
					        club = baker.make(Club)
 | 
				
			||||||
 | 
					        baker.make(
 | 
				
			||||||
 | 
					            Membership,
 | 
				
			||||||
 | 
					            club=club,
 | 
				
			||||||
 | 
					            start_date=now() - timedelta(days=30),
 | 
				
			||||||
 | 
					            role=settings.SITH_CLUB_ROLES_ID["Curious"],
 | 
				
			||||||
 | 
					            user=user,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        trombi = baker.make(Trombi, club=club)
 | 
				
			||||||
 | 
					        baker.make(TrombiUser, user=user, trombi=trombi)
 | 
				
			||||||
 | 
					        return user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.fixture
 | 
				
			||||||
 | 
					    def non_subscriber(self) -> User:
 | 
				
			||||||
 | 
					        return baker.make(User)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.fixture
 | 
				
			||||||
 | 
					    def club_admin(self) -> User:
 | 
				
			||||||
 | 
					        user = baker.make(User)
 | 
				
			||||||
 | 
					        baker.make(
 | 
				
			||||||
 | 
					            Membership,
 | 
				
			||||||
 | 
					            start_date=now() - timedelta(days=30),
 | 
				
			||||||
 | 
					            role=settings.SITH_CLUB_ROLES_ID["Board member"],
 | 
				
			||||||
 | 
					            user=user,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.fixture
 | 
				
			||||||
 | 
					    def board_member(self) -> User:
 | 
				
			||||||
 | 
					        return board_user.make()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.fixture
 | 
				
			||||||
 | 
					    def admin(self) -> User:
 | 
				
			||||||
 | 
					        return baker.make(User, is_superuser=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.mark.parametrize(
 | 
				
			||||||
 | 
					        ("tested_user", "accessing_user", "expected_code"),
 | 
				
			||||||
 | 
					        [
 | 
				
			||||||
 | 
					            ("subscriber", None, 403),  # Anonymous user
 | 
				
			||||||
 | 
					            ("subscriber", "non_subscriber", 403),
 | 
				
			||||||
 | 
					            ("subscriber", "club_admin", 403),
 | 
				
			||||||
 | 
					            ("subscriber", "other_subscriber", 403),
 | 
				
			||||||
 | 
					            ("subscriber", "trombi_user", 403),
 | 
				
			||||||
 | 
					            ("subscriber", "subscriber", 200),
 | 
				
			||||||
 | 
					            ("subscriber", "board_member", 200),
 | 
				
			||||||
 | 
					            ("subscriber", "admin", 200),
 | 
				
			||||||
 | 
					            ("non_subscriber", None, 403),  # Anonymous user
 | 
				
			||||||
 | 
					            ("non_subscriber", "club_admin", 403),
 | 
				
			||||||
 | 
					            ("non_subscriber", "subscriber", 403),
 | 
				
			||||||
 | 
					            ("non_subscriber", "other_subscriber", 403),
 | 
				
			||||||
 | 
					            ("non_subscriber", "trombi_user", 403),
 | 
				
			||||||
 | 
					            ("non_subscriber", "non_subscriber", 200),
 | 
				
			||||||
 | 
					            ("non_subscriber", "board_member", 200),
 | 
				
			||||||
 | 
					            ("non_subscriber", "admin", 200),
 | 
				
			||||||
 | 
					            ("trombi_user", None, 403),  # Anonymous user
 | 
				
			||||||
 | 
					            ("trombi_user", "club_admin", 403),
 | 
				
			||||||
 | 
					            ("trombi_user", "subscriber", 403),
 | 
				
			||||||
 | 
					            ("trombi_user", "other_subscriber", 403),
 | 
				
			||||||
 | 
					            ("trombi_user", "non_subscriber", 403),
 | 
				
			||||||
 | 
					            ("trombi_user", "trombi_user", 200),
 | 
				
			||||||
 | 
					            ("trombi_user", "board_member", 200),
 | 
				
			||||||
 | 
					            ("trombi_user", "admin", 200),
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    @pytest.mark.django_db
 | 
				
			||||||
 | 
					    def test_user_preferences_access(
 | 
				
			||||||
 | 
					        self,
 | 
				
			||||||
 | 
					        client: Client,
 | 
				
			||||||
 | 
					        request: pytest.FixtureRequest,
 | 
				
			||||||
 | 
					        tested_user: str,
 | 
				
			||||||
 | 
					        accessing_user: str | None,
 | 
				
			||||||
 | 
					        expected_code: int,
 | 
				
			||||||
 | 
					    ):
 | 
				
			||||||
 | 
					        cache.clear()
 | 
				
			||||||
 | 
					        if accessing_user is not None:
 | 
				
			||||||
 | 
					            client.force_login(request.getfixturevalue(accessing_user))
 | 
				
			||||||
 | 
					        assert (
 | 
				
			||||||
 | 
					            client.get(
 | 
				
			||||||
 | 
					                reverse(
 | 
				
			||||||
 | 
					                    "core:user_prefs",
 | 
				
			||||||
 | 
					                    kwargs={"user_id": request.getfixturevalue(tested_user).pk},
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            ).status_code
 | 
				
			||||||
 | 
					            == expected_code
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user