mirror of https://github.com/interlegis/sapl.git
5 changed files with 141 additions and 1 deletions
@ -0,0 +1,85 @@ |
|||||
|
from django.contrib.auth import get_user_model |
||||
|
from django.core.cache import cache |
||||
|
from model_bakery import baker |
||||
|
import pytest |
||||
|
|
||||
|
from sapl.sessao.models import Orador, SessaoPlenaria |
||||
|
|
||||
|
|
||||
|
@pytest.fixture(autouse=True) |
||||
|
def limpa_cache_appconfig(): |
||||
|
# o cache em arquivo sobrevive ao rollback do teste |
||||
|
cache.clear() |
||||
|
yield |
||||
|
cache.clear() |
||||
|
|
||||
|
|
||||
|
@pytest.fixture |
||||
|
def sessoes(): |
||||
|
previa = baker.make(SessaoPlenaria, iniciada=False, publicar_pauta=False) |
||||
|
iniciada = baker.make(SessaoPlenaria, iniciada=True, publicar_pauta=False) |
||||
|
baker.make(Orador, sessao_plenaria=previa) |
||||
|
baker.make(Orador, sessao_plenaria=iniciada) |
||||
|
return previa, iniciada |
||||
|
|
||||
|
|
||||
|
def _listados(client, endpoint, campo, sessoes): |
||||
|
"""Sessões de `sessoes` referenciadas na listagem completa do endpoint.""" |
||||
|
valores, page = set(), 1 |
||||
|
while page: |
||||
|
response = client.get('/api/sessao/%s/?page_size=100&page=%s' % ( |
||||
|
endpoint, page)) |
||||
|
assert response.status_code == 200 |
||||
|
dados = response.json() |
||||
|
valores |= {r[campo] for r in dados['results']} |
||||
|
page = dados['pagination']['next_page'] |
||||
|
return valores & {s.pk for s in sessoes} |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_api_oculta_sessao_previa_do_anonimo(client, sessoes): |
||||
|
previa, iniciada = sessoes |
||||
|
|
||||
|
assert _listados(client, 'sessaoplenaria', 'id', sessoes) == { |
||||
|
iniciada.pk} |
||||
|
|
||||
|
assert client.get('/api/sessao/sessaoplenaria/%s/' % previa.pk |
||||
|
).status_code == 404 |
||||
|
assert client.get('/api/sessao/sessaoplenaria/%s/ecidadania/' % previa.pk |
||||
|
).status_code == 404 |
||||
|
assert client.get('/api/sessao/sessaoplenaria/%s/expedientes/' % previa.pk |
||||
|
).status_code == 404 |
||||
|
assert client.get('/api/sessao/sessaoplenaria/%s/expedientes/' |
||||
|
% iniciada.pk).status_code == 200 |
||||
|
|
||||
|
assert _listados(client, 'orador', 'sessao_plenaria', sessoes) == { |
||||
|
iniciada.pk} |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_api_mostra_sessao_previa_ao_usuario_autenticado(client, sessoes): |
||||
|
previa, iniciada = sessoes |
||||
|
client.force_login(baker.make(get_user_model())) |
||||
|
|
||||
|
assert _listados(client, 'sessaoplenaria', 'id', sessoes) == { |
||||
|
previa.pk, iniciada.pk} |
||||
|
assert client.get('/api/sessao/sessaoplenaria/%s/' % previa.pk |
||||
|
).status_code == 200 |
||||
|
assert _listados(client, 'orador', 'sessao_plenaria', sessoes) == { |
||||
|
previa.pk, iniciada.pk} |
||||
|
|
||||
|
|
||||
|
@pytest.mark.django_db(transaction=False) |
||||
|
def test_media_de_sessao_previa_oculta_do_anonimo(client, settings, sessoes): |
||||
|
settings.DEBUG = False |
||||
|
previa, iniciada = sessoes |
||||
|
|
||||
|
def get(sessao): |
||||
|
return client.get('/media/sapl/public/sessaoplenaria/%s/pauta/p.pdf' |
||||
|
% sessao.pk) |
||||
|
|
||||
|
assert get(previa).status_code == 404 |
||||
|
assert get(iniciada).status_code == 200 |
||||
|
|
||||
|
client.force_login(baker.make(get_user_model())) |
||||
|
assert get(previa).status_code == 200 |
||||
Loading…
Reference in new issue