This repository has been archived on 2023-02-22. You can view files and clone it, but cannot push or open issues or pull requests.
passerelle-atreal-openads/tests/test_forms.py

131 lines
4.0 KiB
Python

# -*- coding: utf-8 -*-
import pytest
import os
import base64
import datetime
from django.core.files import File
from atreal_openads.forms import (
ForwardFileForm,
CollectiviteForm,
GuichetForm
)
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)
)
def test_forwardfile_form(atreal_openads, collectivite_1):
form = ForwardFileForm()
assert form.instance is not None
ff = ForwardFile(
connecteur = None,
collectivite = None,
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'
)
form_with_instance = ForwardFileForm(instance=ff, collectivite=collectivite_1)
assert form_with_instance.instance is ff
assert form_with_instance.instance.collectivite is collectivite_1
form_with_instance = ForwardFileForm(instance=ff, connecteur=atreal_openads)
assert form_with_instance.instance is ff
assert form_with_instance.instance.connecteur is atreal_openads
# TODO check the queryset of the collectivite
def test_collectivite_form(atreal_openads):
form = CollectiviteForm()
assert form.instance is not None
col = Collectivite(
connecteur = None,
name = u'Ma collectivité',
openADS_id = 3
)
form_with_instance = CollectiviteForm(instance=col, connecteur=atreal_openads)
assert form_with_instance.instance is col
assert form_with_instance.instance.connecteur is atreal_openads
def test_guichet_form(atreal_openads, collectivite_1):
form = GuichetForm()
assert form.instance is not None
gui = Guichet(
collectivite = None,
ouverture_jour_h = datetime.time(9, 0, 0),
fermeture_jour_h = datetime.time(18, 0, 0),
ouverture_sem_d = 1,
fermeture_sem_d = 5,
ouverture_sem_h = datetime.time(10, 30, 0),
fermeture_sem_h = datetime.time(12, 15, 0)
)
form_with_instance = GuichetForm(instance=gui, collectivite=collectivite_1)
assert form_with_instance.instance is gui
assert form_with_instance.instance.collectivite is collectivite_1