414 lines
15 KiB
Python
414 lines
15 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import pytest
|
|
import os
|
|
import base64
|
|
import datetime
|
|
|
|
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
|
|
def atreal_openads(db):
|
|
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
|
|
def collectivite_1(db, atreal_openads):
|
|
return Collectivite.objects.create(
|
|
name = u'Macollectivité',
|
|
connecteur = atreal_openads,
|
|
openADS_id = '3'
|
|
)
|
|
|
|
@pytest.fixture
|
|
def collectivite_1_guichet(db, atreal_openads, collectivite_1):
|
|
return Guichet.objects.create(
|
|
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
|
|
def forwardfile_1(db, atreal_openads, collectivite_1):
|
|
return ForwardFile.objects.create(
|
|
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'
|
|
)
|
|
|
|
|
|
def test_get_connecteur_from_request(atreal_openads, forwardfile_1):
|
|
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
|
|
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
|
|
|
|
|
|
def test_get_collectivite_from_request(atreal_openads, collectivite_1):
|
|
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
|
|
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
|
|
|
|
|
|
def test_forwardfile_view(atreal_openads, collectivite_1, forwardfile_1):
|
|
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
|
|
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
|
|
|
|
qs = view.get_queryset()
|
|
assert qs.query is not None
|
|
assert qs.query.order_by == ['id']
|
|
assert qs.query.default_ordering == True
|
|
assert qs.query.get_meta().ordering == ['-last_update_datetime']
|
|
assert qs.ordered
|
|
|
|
req.GET['order-by'] = '-id'
|
|
qs = view.get_queryset()
|
|
assert qs.query is not None
|
|
assert qs.query.order_by == ['-id']
|
|
assert qs.query.default_ordering == True
|
|
|
|
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
|
|
|
|
qs = view.get_queryset()
|
|
assert qs.query is not None
|
|
assert qs.query.order_by == ['id']
|
|
assert qs.query.default_ordering == True
|
|
assert qs.query.get_meta().ordering == ['-last_update_datetime']
|
|
assert qs.ordered
|
|
|
|
|
|
def test_collectivite_view(atreal_openads, collectivite_1, forwardfile_1):
|
|
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
|
|
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
|
|
|
|
qs = view.get_queryset()
|
|
assert qs.query is not None
|
|
assert qs.query.order_by == ['id']
|
|
assert qs.query.default_ordering == True
|
|
assert qs.query.get_meta().ordering == ['name']
|
|
assert qs.ordered
|
|
|
|
req.GET['order-by'] = '-id'
|
|
qs = view.get_queryset()
|
|
assert qs.query is not None
|
|
assert qs.query.order_by == ['-id']
|
|
assert qs.query.default_ordering == True
|
|
|
|
|
|
def test_guichet_view(atreal_openads, collectivite_1, collectivite_1_guichet):
|
|
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
|
|
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):
|
|
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
|
|
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
|
|
|