444 lines
16 KiB
Python
444 lines
16 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""Testing views."""
|
|
|
|
import os
|
|
import base64
|
|
import datetime
|
|
|
|
import pytest
|
|
|
|
from django.http.request import HttpRequest, QueryDict
|
|
from django.urls.base import resolve
|
|
from django.core.files import File
|
|
|
|
from atreal_openads.views import (
|
|
get_connecteur_from_request,
|
|
get_collectivite_from_request,
|
|
AtrealOpenadsView,
|
|
ForwardFileView,
|
|
ForwardFileListView,
|
|
ForwardFileUpdateView,
|
|
ForwardFileDeleteView,
|
|
CollectiviteView,
|
|
CollectiviteListView,
|
|
CollectiviteCreateView,
|
|
CollectiviteUpdateView,
|
|
CollectiviteDeleteView,
|
|
GuichetView,
|
|
GuichetCreateView,
|
|
GuichetUpdateView,
|
|
GuichetDeleteView
|
|
)
|
|
|
|
from atreal_openads.models import (
|
|
ForwardFile,
|
|
Guichet,
|
|
Collectivite,
|
|
AtrealOpenads
|
|
)
|
|
|
|
|
|
CONNECTOR_NAME = 'atreal-openads'
|
|
CONNECTOR_SLUG = 'atreal'
|
|
COLLECTIVITE = 79
|
|
OPENADS_API_LOGIN = 'publik-passerelle'
|
|
OPENADS_API_PASSWORD = base64.urlsafe_b64encode(os.urandom(20))
|
|
OPENADS_API_URL = 'http://openads.api/'
|
|
|
|
FAKE_COOKIE_CRSF = base64.urlsafe_b64encode(os.urandom(20))
|
|
FAKE_NUMERO_DOSSIER = base64.urlsafe_b64encode(os.urandom(10))
|
|
|
|
TESTS_DIR = os.path.dirname(__file__)
|
|
RESOURCES_DIR = os.path.join(TESTS_DIR, 'resources')
|
|
TEST_FILE_CERFA_DIA = os.path.join(RESOURCES_DIR, 'cerfa_10072-02.pdf')
|
|
TEST_FILE_PLAN_CADASTRAL = os.path.join(RESOURCES_DIR, 'plancadastral.pdf')
|
|
|
|
|
|
@pytest.fixture
|
|
# pylint: disable=unused-argument,invalid-name
|
|
def atreal_openads(db):
|
|
"""Return an instance of a connector AtrealOpenads."""
|
|
return AtrealOpenads.objects.create(
|
|
slug=CONNECTOR_SLUG,
|
|
default_collectivite_openADS_id=COLLECTIVITE,
|
|
openADS_API_url=OPENADS_API_URL,
|
|
basic_auth_username=OPENADS_API_LOGIN,
|
|
basic_auth_password=OPENADS_API_PASSWORD
|
|
)
|
|
|
|
@pytest.fixture
|
|
# pylint: disable=unused-argument,redefined-outer-name,invalid-name
|
|
def collectivite_1(db, atreal_openads):
|
|
"""Return an instance of a 'Collectivite'."""
|
|
return Collectivite.objects.create( # pylint: disable=no-member
|
|
name=u'Macollectivité',
|
|
connecteur=atreal_openads,
|
|
openADS_id='3'
|
|
)
|
|
|
|
@pytest.fixture
|
|
# pylint: disable=unused-argument,redefined-outer-name,invalid-name
|
|
def collectivite_1_guichet(db, atreal_openads, collectivite_1):
|
|
"""Return an instance of a 'Guichet'."""
|
|
return Guichet.objects.create( # pylint: disable=no-member
|
|
collectivite=collectivite_1,
|
|
ouverture_jour_h=datetime.time(9, 0),
|
|
fermeture_jour_h=datetime.time(17, 0),
|
|
ouverture_sem_d=1, # Lundi
|
|
fermeture_sem_d=5, # Vendredi
|
|
ouverture_sem_h=datetime.time(8, 30),
|
|
fermeture_sem_h=datetime.time(12, 15)
|
|
)
|
|
|
|
@pytest.fixture
|
|
# pylint: disable=unused-argument,redefined-outer-name,invalid-name
|
|
def forwardfile_1(db, atreal_openads, collectivite_1):
|
|
"""Return an instance of a 'ForwardFile'."""
|
|
return ForwardFile.objects.create( # pylint: disable=no-member
|
|
connecteur=atreal_openads,
|
|
collectivite=collectivite_1,
|
|
numero_demande='45641531',
|
|
numero_dossier=FAKE_NUMERO_DOSSIER,
|
|
type_fichier='CERFA',
|
|
orig_filename=os.path.basename(TEST_FILE_CERFA_DIA),
|
|
content_type='application/pdf',
|
|
file_hash='ffdf456fdsvgb4bgfb6g4f5b',
|
|
upload_file=File(open(TEST_FILE_CERFA_DIA, 'r')),
|
|
upload_status='pending'
|
|
)
|
|
|
|
|
|
# pylint: disable=unused-argument,redefined-outer-name
|
|
def test_get_connecteur_from_request(atreal_openads, forwardfile_1): # pylint: disable=invalid-name
|
|
"""Test for function 'get_connecteur_from_request()'."""
|
|
|
|
req = HttpRequest()
|
|
req.path = '/manage/atreal-openads/%s/forward-file/%s' % (
|
|
atreal_openads.slug, forwardfile_1.id)
|
|
req.method = 'GET'
|
|
req.encoding = 'utf-8'
|
|
req.GET = QueryDict(mutable=True) # required because of encoding setter
|
|
req.POST = QueryDict(mutable=True) # required because of encoding setter
|
|
req.content_params = None
|
|
req.COOKIES = {}
|
|
req.META = {}
|
|
req._read_started = False # pylint: disable=protected-access
|
|
req.resolver_match = resolve(req.path)
|
|
|
|
view = ForwardFileView()
|
|
view.request = req
|
|
|
|
connecteur = get_connecteur_from_request(view)
|
|
assert connecteur is not None
|
|
assert connecteur.slug == atreal_openads.slug
|
|
|
|
|
|
# pylint: disable=unused-argument,redefined-outer-name
|
|
def test_get_collectivite_from_request(atreal_openads, collectivite_1): # pylint: disable=invalid-name
|
|
"""Test for function 'get_collectivite_from_request()'."""
|
|
|
|
req = HttpRequest()
|
|
req.path = '/manage/atreal-openads/%s/collectivite/%s/forward-files' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
req.method = 'GET'
|
|
req.encoding = 'utf-8'
|
|
req.GET = QueryDict(mutable=True) # required because of encoding setter
|
|
req.POST = QueryDict(mutable=True) # required because of encoding setter
|
|
req.content_params = None
|
|
req.COOKIES = {}
|
|
req.META = {}
|
|
req._read_started = False # pylint: disable=protected-access
|
|
req.resolver_match = resolve(req.path)
|
|
|
|
view = ForwardFileListView()
|
|
view.request = req
|
|
|
|
collectivite = get_collectivite_from_request(view)
|
|
assert collectivite is not None
|
|
assert collectivite.id == collectivite_1.id
|
|
|
|
|
|
# pylint: disable=too-many-statements
|
|
def test_forwardfile_view(atreal_openads, collectivite_1, forwardfile_1):
|
|
"""Test for views 'ForwardFile*View'."""
|
|
|
|
req = HttpRequest()
|
|
req.path = '/manage/atreal-openads/%s/forward-file/%s' % (
|
|
atreal_openads.slug, forwardfile_1.id)
|
|
req.method = 'GET'
|
|
req.encoding = 'utf-8'
|
|
req.GET = QueryDict(mutable=True) # required because of encoding setter
|
|
req.POST = QueryDict(mutable=True) # required because of encoding setter
|
|
req.content_params = None
|
|
req.COOKIES = {}
|
|
req.META = {}
|
|
req._read_started = False # pylint: disable=protected-access
|
|
req.resolver_match = resolve(req.path)
|
|
|
|
view = ForwardFileView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
|
|
view = ForwardFileUpdateView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/forward-file/%s' % (
|
|
atreal_openads.slug, forwardfile_1.id)
|
|
req.GET['back-to'] = 'list-forward-files'
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/forward-files' % atreal_openads.slug
|
|
req.GET['back-to'] = 'col-list-forward-files'
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivite/%s/forward-files' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
|
|
view = ForwardFileDeleteView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
del req.GET['back-to']
|
|
url = view.get_success_url()
|
|
assert url == u'/atreal-openads/%s/' % atreal_openads.slug
|
|
req.GET['back-to'] = 'list-forward-files'
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/forward-files' % atreal_openads.slug
|
|
req.GET['back-to'] = 'col-list-forward-files'
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivite/%s/forward-files' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
|
|
req.path = '/manage/atreal-openads/%s/collectivite/%s/forward-files' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
req.resolver_match = resolve(req.path)
|
|
view = ForwardFileListView()
|
|
view.request = req
|
|
view.object_list = []
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
assert context['collectivite'].id == collectivite_1.id
|
|
|
|
queryset = view.get_queryset()
|
|
assert queryset.query is not None
|
|
assert queryset.query.order_by == ['id']
|
|
assert queryset.query.default_ordering
|
|
assert queryset.query.get_meta().ordering == ['-last_update_datetime']
|
|
assert queryset.ordered
|
|
|
|
req.GET['order-by'] = '-id'
|
|
queryset = view.get_queryset()
|
|
assert queryset.query is not None
|
|
assert queryset.query.order_by == ['-id']
|
|
assert queryset.query.default_ordering
|
|
|
|
req.path = '/manage/atreal-openads/%s/forward-files' % atreal_openads.slug
|
|
req.resolver_match = resolve(req.path)
|
|
del req.GET['back-to']
|
|
del req.GET['order-by']
|
|
view = ForwardFileListView()
|
|
view.request = req
|
|
view.object_list = []
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
|
|
queryset = view.get_queryset()
|
|
assert queryset.query is not None
|
|
assert queryset.query.order_by == ['id']
|
|
assert queryset.query.default_ordering
|
|
assert queryset.query.get_meta().ordering == ['-last_update_datetime']
|
|
assert queryset.ordered
|
|
|
|
|
|
# pylint: disable=too-many-statements
|
|
def test_collectivite_view(atreal_openads, collectivite_1, forwardfile_1):
|
|
"""Test for views 'Collectivite*View'."""
|
|
|
|
req = HttpRequest()
|
|
req.path = '/manage/atreal-openads/%s/collectivite/%s' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
req.method = 'GET'
|
|
req.encoding = 'utf-8'
|
|
req.GET = QueryDict(mutable=True) # required because of encoding setter
|
|
req.POST = QueryDict(mutable=True) # required because of encoding setter
|
|
req.content_params = None
|
|
req.COOKIES = {}
|
|
req.META = {}
|
|
req._read_started = False # pylint: disable=protected-access
|
|
req.resolver_match = resolve(req.path)
|
|
|
|
view = CollectiviteView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
assert context['guichet_add_url'] == (
|
|
u'/manage/atreal-openads/%s/collectivite/%s/create-guichet' % (
|
|
atreal_openads.slug, collectivite_1.id))
|
|
assert context['forward_files_list_url'] == (
|
|
u'/manage/atreal-openads/%s/collectivite/%s/forward-files' % (
|
|
atreal_openads.slug, collectivite_1.id))
|
|
|
|
view = CollectiviteUpdateView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivite/%s' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
req.GET['back-to'] = 'list-collectivites'
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivites' % atreal_openads.slug
|
|
|
|
view = CollectiviteDeleteView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
del req.GET['back-to']
|
|
url = view.get_success_url()
|
|
assert url == u'/atreal-openads/%s/' % atreal_openads.slug
|
|
req.GET['back-to'] = 'list-collectivites'
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivites' % atreal_openads.slug
|
|
|
|
view = CollectiviteCreateView()
|
|
req.path = '/manage/atreal-openads/%s/create-collectivite' % atreal_openads.slug
|
|
req.resolver_match = resolve(req.path)
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
kwargs = view.get_form_kwargs()
|
|
assert kwargs['connecteur'].slug == atreal_openads.slug
|
|
del req.GET['back-to']
|
|
url = view.get_success_url()
|
|
assert url == u'/atreal-openads/%s/' % atreal_openads.slug
|
|
req.GET['back-to'] = 'list-collectivites'
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivites' % atreal_openads.slug
|
|
|
|
req.path = '/manage/atreal-openads/%s/collectivites' % atreal_openads.slug
|
|
req.resolver_match = resolve(req.path)
|
|
view = CollectiviteListView()
|
|
view.request = req
|
|
view.object_list = []
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
assert context['collectivite_add_url'] == (
|
|
u'/manage/atreal-openads/%s/create-collectivite' % atreal_openads.slug)
|
|
|
|
queryset = view.get_queryset()
|
|
assert queryset.query is not None
|
|
assert queryset.query.order_by == ['id']
|
|
assert queryset.query.default_ordering
|
|
assert queryset.query.get_meta().ordering == ['name']
|
|
assert queryset.ordered
|
|
|
|
req.GET['order-by'] = '-id'
|
|
queryset = view.get_queryset()
|
|
assert queryset.query is not None
|
|
assert queryset.query.order_by == ['-id']
|
|
assert queryset.query.default_ordering
|
|
|
|
|
|
def test_guichet_view(atreal_openads, collectivite_1, collectivite_1_guichet):
|
|
"""Test for views 'Guichet*View'."""
|
|
|
|
req = HttpRequest()
|
|
req.path = '/manage/atreal-openads/%s/collectivite/%s/guichet/%s' % (
|
|
atreal_openads.slug, collectivite_1.id, collectivite_1_guichet.id)
|
|
req.method = 'GET'
|
|
req.encoding = 'utf-8'
|
|
req.GET = QueryDict(mutable=True) # required because of encoding setter
|
|
req.POST = QueryDict(mutable=True) # required because of encoding setter
|
|
req.content_params = None
|
|
req.COOKIES = {}
|
|
req.META = {}
|
|
req._read_started = False # pylint: disable=protected-access
|
|
req.resolver_match = resolve(req.path)
|
|
|
|
view = GuichetView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
assert context['collectivite'].id == collectivite_1.id
|
|
|
|
view = GuichetUpdateView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
assert context['collectivite'].id == collectivite_1.id
|
|
|
|
view = GuichetDeleteView()
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
assert context['collectivite'].id == collectivite_1.id
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivite/%s' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
|
|
view = GuichetCreateView()
|
|
req.path = '/manage/atreal-openads/%s/collectivite/%s/create-guichet' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
req.resolver_match = resolve(req.path)
|
|
view.request = req
|
|
view.object = None
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['connecteur'].slug == atreal_openads.slug
|
|
assert context['collectivite'].id == collectivite_1.id
|
|
kwargs = view.get_form_kwargs()
|
|
assert kwargs['collectivite'].id == collectivite_1.id
|
|
url = view.get_success_url()
|
|
assert url == u'/manage/atreal-openads/%s/collectivite/%s' % (
|
|
atreal_openads.slug, collectivite_1.id)
|
|
|
|
|
|
def test_connecteur_view(atreal_openads):
|
|
"""Test for views 'AtrealOpenadsView'."""
|
|
|
|
req = HttpRequest()
|
|
req.path = '/atreal-openads/%s/' % atreal_openads.slug
|
|
req.method = 'GET'
|
|
req.encoding = 'utf-8'
|
|
req.GET = QueryDict(mutable=True) # required because of encoding setter
|
|
req.POST = QueryDict(mutable=True) # required because of encoding setter
|
|
req.content_params = None
|
|
req.COOKIES = {}
|
|
req.META = {}
|
|
req._read_started = False # pylint: disable=protected-access
|
|
req.resolver_match = resolve(req.path)
|
|
|
|
view = AtrealOpenadsView()
|
|
view.request = req
|
|
view.object = atreal_openads
|
|
view.kwargs = req.resolver_match.kwargs
|
|
context = view.get_context_data()
|
|
assert context['collectivite_fields'] == Collectivite.get_fields()
|
|
assert context['collectivite_add_url'] == (
|
|
u'/manage/atreal-openads/%s/create-collectivite' % atreal_openads.slug)
|