mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-11-04 11:03:04 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import pytest
 | 
						|
from django.conf import settings
 | 
						|
from django.contrib.auth.models import Permission
 | 
						|
from django.test import Client
 | 
						|
from django.urls import reverse
 | 
						|
from model_bakery import baker
 | 
						|
from pytest_django.asserts import assertRedirects
 | 
						|
 | 
						|
from core.baker_recipes import board_user, subscriber_user
 | 
						|
from core.models import AnonymousUser, Page, User
 | 
						|
from sith.settings import SITH_GROUP_OLD_SUBSCRIBERS_ID, SITH_GROUP_SUBSCRIBERS_ID
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.django_db
 | 
						|
def test_edit_page(client: Client):
 | 
						|
    user = board_user.make()
 | 
						|
    page = baker.prepare(Page)
 | 
						|
    page.save(force_lock=True)
 | 
						|
    page.view_groups.add(user.groups.first())
 | 
						|
    client.force_login(user)
 | 
						|
 | 
						|
    url = reverse("core:page_edit", kwargs={"page_name": page._full_name})
 | 
						|
    res = client.get(url)
 | 
						|
    assert res.status_code == 200
 | 
						|
 | 
						|
    res = client.post(url, data={"content": "Hello World"})
 | 
						|
    assertRedirects(res, reverse("core:page", kwargs={"page_name": page._full_name}))
 | 
						|
    revision = page.revisions.last()
 | 
						|
    assert revision.content == "Hello World"
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.django_db
 | 
						|
def test_viewable_by():
 | 
						|
    # remove existing pages to prevent side effect
 | 
						|
    Page.objects.all().delete()
 | 
						|
    view_groups = [
 | 
						|
        [settings.SITH_GROUP_PUBLIC_ID],
 | 
						|
        [settings.SITH_GROUP_PUBLIC_ID, SITH_GROUP_SUBSCRIBERS_ID],
 | 
						|
        [SITH_GROUP_SUBSCRIBERS_ID],
 | 
						|
        [SITH_GROUP_SUBSCRIBERS_ID, SITH_GROUP_OLD_SUBSCRIBERS_ID],
 | 
						|
        [],
 | 
						|
    ]
 | 
						|
    pages = baker.make(Page, _quantity=len(view_groups), _bulk_create=True)
 | 
						|
    for page, groups in zip(pages, view_groups, strict=True):
 | 
						|
        page.view_groups.set(groups)
 | 
						|
 | 
						|
    viewable = Page.objects.viewable_by(AnonymousUser()).values_list("id", flat=True)
 | 
						|
    assert set(viewable) == {pages[0].id, pages[1].id}
 | 
						|
 | 
						|
    subscriber = subscriber_user.make()
 | 
						|
    viewable = Page.objects.viewable_by(subscriber).values_list("id", flat=True)
 | 
						|
    assert set(viewable) == {p.id for p in pages[0:4]}
 | 
						|
 | 
						|
    root_user = baker.make(
 | 
						|
        User, user_permissions=[Permission.objects.get(codename="view_page")]
 | 
						|
    )
 | 
						|
    viewable = Page.objects.viewable_by(root_user).values_list("id", flat=True)
 | 
						|
    assert set(viewable) == {p.id for p in pages}
 |