tests: define a MEDIA_ROOT (#32516)
To prevent cluttering project root with tests files. Some connector's test had to be changed: * family connector tests had to be changed as it magically used a local file path as a Django stored file path. * mdel tests where completely bogus around storage
This commit is contained in:
parent
6c934db41c
commit
95446af6ce
|
@ -10,6 +10,11 @@ from io import BytesIO
|
|||
from .utils import make_resource
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def media(settings, tmpdir):
|
||||
settings.MEDIA_ROOT = str(tmpdir.mkdir('media'))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def app(request):
|
||||
wtm = django_webtest.WebTestMixin()
|
||||
|
|
|
@ -45,14 +45,6 @@ def actesweb(db):
|
|||
return utils.make_resource(ActesWeb, **{'slug': 'test'})
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def media_dir(tmpdir, settings):
|
||||
tmp_dir = tmpdir.mkdir('actesweb').dirname
|
||||
settings.MEDIA_ROOT = tmp_dir
|
||||
yield tmp_dir
|
||||
shutil.rmtree(tmp_dir, ignore_errors=True)
|
||||
|
||||
|
||||
PAYLOAD = [
|
||||
{
|
||||
'birth': json.loads(get_file_from_test_base_dir('payload_birth.json'))
|
||||
|
|
|
@ -32,6 +32,8 @@ from passerelle.apps.cityweb.models import CityWeb
|
|||
from passerelle.apps.cityweb.cityweb import DateType
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
|
||||
from django.core.files.storage import default_storage
|
||||
|
||||
|
||||
def get_test_base_dir(name):
|
||||
return os.path.join(os.path.dirname(__file__), 'data', name)
|
||||
|
@ -81,13 +83,12 @@ def assert_xml_doc(filename, assertions):
|
|||
assert path.find(root) == value
|
||||
|
||||
|
||||
@mock.patch('passerelle.apps.cityweb.models.default_storage.path', get_test_base_dir)
|
||||
def test_demand_creation(app, setup, payload):
|
||||
url = '/cityweb/test/create/'
|
||||
if 'birth' in payload:
|
||||
response = app.post_json(url, params=payload['birth'])
|
||||
assert response.json['data']['demand_id'] == 'N201610154'
|
||||
filename = os.path.join(get_test_base_dir('cityweb'), 'test', 'N201610154.xml')
|
||||
filename = default_storage.path(os.path.join('cityweb', 'test', 'N201610154.xml'))
|
||||
assertions = {
|
||||
'identifiant': 'N201610154',
|
||||
'demandeur.qualiteDemandeur': 'concerne',
|
||||
|
@ -115,7 +116,7 @@ def test_demand_creation(app, setup, payload):
|
|||
elif 'mariage' in payload:
|
||||
response = app.post_json(url, params=payload['mariage'])
|
||||
assert response.json['data']['demand_id'] == 'M201610161'
|
||||
filename = os.path.join(get_test_base_dir('cityweb'), 'test', 'M201610161.xml')
|
||||
filename = default_storage.path(os.path.join('cityweb', 'test', 'M201610161.xml'))
|
||||
assertions = {
|
||||
'identifiant': 'M201610161',
|
||||
'demandeur.qualiteDemandeur': 'concerne',
|
||||
|
@ -147,7 +148,7 @@ def test_demand_creation(app, setup, payload):
|
|||
else:
|
||||
response = app.post_json(url, params=payload['death'])
|
||||
assert response.json['data']['demand_id'] == 'D201610171'
|
||||
filename = os.path.join(get_test_base_dir('cityweb'), 'test', 'D201610171.xml')
|
||||
filename = default_storage.path(os.path.join('cityweb', 'test', 'D201610171.xml'))
|
||||
assertions = {
|
||||
'identifiant': 'D201610171',
|
||||
'demandeur.qualiteDemandeur': 'concerne',
|
||||
|
|
|
@ -20,6 +20,7 @@ from django.core.files.storage import default_storage
|
|||
from passerelle.apps.family.models import GenericFamily, Family, FamilyLink
|
||||
from passerelle.apps.family.models import Invoice, Adult, Child, DATETIME_FORMAT
|
||||
|
||||
from django.core.files import File
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from passerelle.base.models import ApiUser, AccessRight
|
||||
|
@ -33,7 +34,8 @@ API_KEY = 'family'
|
|||
@pytest.fixture
|
||||
def resource(db):
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'family_data.zip')
|
||||
resource = GenericFamily.objects.create(title='test', slug='test', archive=filepath)
|
||||
with open(filepath) as fd:
|
||||
resource = GenericFamily.objects.create(title='test', slug='test', archive=File(fd, 'family_data.zip'))
|
||||
api = ApiUser.objects.create(username='family', keytype='API', key=API_KEY)
|
||||
obj_type = ContentType.objects.get_for_model(GenericFamily)
|
||||
AccessRight.objects.create(codename='can_access', apiuser=api,
|
||||
|
@ -200,8 +202,10 @@ def test_pay_invoice(app, resource):
|
|||
def test_fondettes_concerto_loader():
|
||||
Invoice.objects.all().delete()
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'family_data_fondettes.zip')
|
||||
resource = GenericFamily.objects.create(title='test fondettes',
|
||||
slug='test-fondettes', archive=filepath, file_format='concerto_fondettes')
|
||||
with open(filepath) as fd:
|
||||
resource = GenericFamily.objects.create(title='test fondettes',
|
||||
slug='test-fondettes', archive=File(fd, 'family_data_fondettes.zip'),
|
||||
file_format='concerto_fondettes')
|
||||
assert Invoice.objects.filter(resource=resource).count() == 630
|
||||
assert len([x for x in Invoice.objects.filter(resource=resource) if x.has_pdf]) == 4
|
||||
assert Invoice.objects.filter(paid=True).count() == 314
|
||||
|
@ -209,20 +213,20 @@ def test_fondettes_concerto_loader():
|
|||
|
||||
def test_archive_validation():
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'iparapheur.wsdl')
|
||||
resource = GenericFamily.objects.create(title='test', slug='test', archive=filepath)
|
||||
resource.archive = File(open(filepath))
|
||||
with open(filepath) as fd:
|
||||
resource = GenericFamily.objects.create(title='test', slug='test', archive=File(fd, 'iparapheur.wsdl'))
|
||||
with pytest.raises(ValidationError):
|
||||
resource.clean()
|
||||
|
||||
def test_fondettes_concerto_validation():
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'family_data_fondettes.zip')
|
||||
resource = GenericFamily.objects.create(title='test fondettes',
|
||||
slug='test fondettes', archive=filepath, file_format='concerto_fondettes')
|
||||
resource.archive = File(open(filepath))
|
||||
with open(filepath) as fd:
|
||||
resource = GenericFamily.objects.create(title='test fondettes',
|
||||
slug='test fondettes', archive=File(fd, 'family_data_fondettes.zip'), file_format='concerto_fondettes')
|
||||
resource.clean()
|
||||
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'family_data.zip')
|
||||
resource.archive = File(open(filepath))
|
||||
resource.archive = File(open(filepath), 'family_data.zip')
|
||||
with pytest.raises(ValidationError):
|
||||
resource.clean()
|
||||
|
||||
|
@ -232,7 +236,7 @@ def test_orleans_concerto_loader():
|
|||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'orleans',
|
||||
'family_data_orleans.zip')
|
||||
resource = GenericFamily(title='test orleans',
|
||||
slug='test-orleans', archive=filepath, file_format='concerto_orleans')
|
||||
slug='test-orleans', archive=File(open(filepath), 'family_data_orleans.zip'), file_format='concerto_orleans')
|
||||
from passerelle.apps.family.loaders.concerto_orleans import Loader
|
||||
loader = Loader(resource)
|
||||
loader.archive = zipfile.ZipFile(filepath)
|
||||
|
@ -294,9 +298,10 @@ def test_orleans_data_import_command():
|
|||
cur_dir = os.path.dirname(__file__)
|
||||
data_dir = os.path.join(cur_dir, 'data', 'orleans')
|
||||
|
||||
resource = GenericFamily.objects.create(title='test orleans',
|
||||
archive=os.path.join(data_dir, 'family_data_orleans.zip'),
|
||||
slug='test-orleans', file_format='concerto_orleans')
|
||||
with open(os.path.join(data_dir, 'family_data_orleans.zip')) as fd:
|
||||
resource = GenericFamily.objects.create(title='test orleans',
|
||||
archive=File(fd, 'family_data_orleans.zip'),
|
||||
slug='test-orleans', file_format='concerto_orleans')
|
||||
|
||||
# cleanup data before launching import
|
||||
Family.objects.filter(resource=resource).delete()
|
||||
|
@ -348,7 +353,7 @@ def test_incorrect_orleans_data(caplog):
|
|||
filepath = os.path.join(os.path.dirname(__file__), 'data',
|
||||
'family_incorrect_data_orleans.zip')
|
||||
resource = GenericFamily.objects.create(title='test orleans',
|
||||
slug='test-orleans', archive=filepath,
|
||||
slug='test-orleans', archive=File(open(filepath), 'family_incorrect_data_orleans.zip'),
|
||||
file_format='concerto_orleans')
|
||||
for record in caplog.records:
|
||||
assert 'Error occured while importing data:' in record.message
|
||||
|
|
|
@ -16,18 +16,17 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import shutil
|
||||
import os
|
||||
import json
|
||||
import base64
|
||||
import copy
|
||||
import shutil
|
||||
from xml.etree import ElementTree as etree
|
||||
|
||||
import pytest
|
||||
import mock
|
||||
|
||||
from passerelle.contrib.mdel.models import MDEL, Demand
|
||||
from passerelle.contrib.mdel.mdel import Message, Description, AttachedFile
|
||||
from passerelle.contrib.mdel.mdel import Message, Description, AttachedFile, get_resource_base_dir
|
||||
from passerelle.contrib.mdel.utils import parse_date
|
||||
|
||||
import utils
|
||||
|
@ -117,14 +116,13 @@ def test_create_rco_demand_type(app, setup):
|
|||
assert resp.json['err_desc'] == "RCO-LA processing not implemented"
|
||||
|
||||
|
||||
@mock.patch('passerelle.contrib.mdel.mdel.get_resource_base_dir', get_mdel_base_dir)
|
||||
def test_create_aec_demand_type(app, setup, aec_payload):
|
||||
resp = app.post_json('/mdel/test/create', params=aec_payload, status=200)
|
||||
|
||||
if aec_payload['display_id'] == '15-4':
|
||||
assert resp.json['data']['demand_id'] == '15-4-AEC-LA'
|
||||
|
||||
doc = os.path.join(get_mdel_base_dir(), 'test', 'inputs', '15-4-AEC-LA--0', '15-4-AEC-LA-doc-.xml')
|
||||
doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '15-4-AEC-LA--0', '15-4-AEC-LA-doc-.xml')
|
||||
root = etree.parse(doc).getroot()
|
||||
|
||||
assert root.tag == 'EnveloppeMetierType'
|
||||
|
@ -166,7 +164,7 @@ def test_create_aec_demand_type(app, setup, aec_payload):
|
|||
|
||||
assert resp.json['data']['demand_id'] == '16-1-AEC-LA'
|
||||
|
||||
doc = os.path.join(get_mdel_base_dir(), 'test', 'inputs', '16-1-AEC-LA--0', '16-1-AEC-LA-doc-.xml')
|
||||
doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '16-1-AEC-LA--0', '16-1-AEC-LA-doc-.xml')
|
||||
root = etree.parse(doc).getroot()
|
||||
|
||||
assert root.tag == 'EnveloppeMetierType'
|
||||
|
@ -217,7 +215,7 @@ def test_create_aec_demand_type(app, setup, aec_payload):
|
|||
else:
|
||||
assert resp.json['data']['demand_id'] == '17-1-AEC-LA'
|
||||
|
||||
doc = os.path.join(get_mdel_base_dir(), 'test', 'inputs', '17-1-AEC-LA--0', '17-1-AEC-LA-doc-.xml')
|
||||
doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '17-1-AEC-LA--0', '17-1-AEC-LA-doc-.xml')
|
||||
root = etree.parse(doc).getroot()
|
||||
|
||||
assert root.tag == 'EnveloppeMetierType'
|
||||
|
@ -255,7 +253,6 @@ def test_create_aec_demand_type(app, setup, aec_payload):
|
|||
assert root.find('DemandeActe/Titulaire/Filiation/Pere/Prenoms').text == 'Ryu'
|
||||
|
||||
|
||||
@mock.patch('passerelle.contrib.mdel.mdel.get_resource_base_dir', get_mdel_base_dir)
|
||||
def test_create_aec_demand_type_without_date_acte(app, setup):
|
||||
payload = json.loads(get_file_from_test_base_dir('formdata_aec_deces.json'))
|
||||
payload['fields'].pop('date_acte')
|
||||
|
@ -263,12 +260,11 @@ def test_create_aec_demand_type_without_date_acte(app, setup):
|
|||
assert resp.json['err_desc'] == '<date_acte> is required'
|
||||
|
||||
|
||||
@mock.patch('passerelle.contrib.mdel.mdel.get_resource_base_dir', get_mdel_base_dir)
|
||||
def test_create_ile_demand_type(app, setup):
|
||||
resp = app.post_json('/mdel/test/create', params=ILE_PAYLOAD, status=200)
|
||||
assert resp.json['data']['demand_id'] == '1-14-ILE-LA'
|
||||
|
||||
base_doc = os.path.join(get_mdel_base_dir(), 'test', 'inputs', '1-14-ILE-LA--0')
|
||||
base_doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '1-14-ILE-LA--0')
|
||||
doc = os.path.join(base_doc, '1-14-ILE-LA-doc-.xml')
|
||||
root = etree.parse(doc).getroot()
|
||||
|
||||
|
@ -338,7 +334,6 @@ def test_create_ile_demand_type(app, setup):
|
|||
assert resp.json['err_desc'] == 'anterieur_situation_raw is required'
|
||||
|
||||
|
||||
@mock.patch('passerelle.contrib.mdel.mdel.get_resource_base_dir', get_mdel_base_dir)
|
||||
def test_create_ile_demand_type_invalid_document_proof(app, setup):
|
||||
# test with missing key
|
||||
payload = json.loads(get_file_from_test_base_dir('formdata.json'))
|
||||
|
@ -354,8 +349,10 @@ def test_create_ile_demand_type_invalid_document_proof(app, setup):
|
|||
assert resp.json['err_desc'] == 'justificatif_identite and all its attributes are required'
|
||||
|
||||
|
||||
@mock.patch('passerelle.contrib.mdel.mdel.get_resource_base_dir', get_mdel_base_dir)
|
||||
def test_get_status(app, setup):
|
||||
shutil.copytree(
|
||||
os.path.join(get_mdel_base_dir(), 'test', 'outputs'),
|
||||
os.path.join(get_resource_base_dir(), 'test', 'outputs'))
|
||||
resp = app.post_json('/mdel/test/create', params=ILE_PAYLOAD, status=200)
|
||||
demand_id = resp.json['data']['demand_id']
|
||||
assert demand_id == '1-14-ILE-LA'
|
||||
|
@ -393,8 +390,10 @@ def test_get_status_unknown_demand(app, setup):
|
|||
assert resp.json['err_desc'] == 'Demand matching query does not exist.'
|
||||
|
||||
|
||||
@mock.patch('passerelle.contrib.mdel.mdel.get_resource_base_dir', get_mdel_base_dir)
|
||||
def test_get_status_no_response(app, setup):
|
||||
shutil.copytree(
|
||||
os.path.join(get_mdel_base_dir(), 'test', 'outputs'),
|
||||
os.path.join(get_resource_base_dir(), 'test', 'outputs'))
|
||||
Demand.objects.create(resource=setup, num='1-15', flow_type='ILE-LA', demand_id='1-15-ILE-LA')
|
||||
|
||||
resp = app.get('/mdel/test/status', params={'demand_id': '1-15-ILE-LA'}, status=200)
|
||||
|
@ -406,8 +405,10 @@ def test_get_status_no_response(app, setup):
|
|||
assert Demand.objects.get(demand_id='1-15-ILE-LA').status is None
|
||||
|
||||
|
||||
@mock.patch('passerelle.contrib.mdel.mdel.get_resource_base_dir', get_mdel_base_dir)
|
||||
def test_get_not_closed_status(app, setup):
|
||||
shutil.copytree(
|
||||
os.path.join(get_mdel_base_dir(), 'test', 'outputs'),
|
||||
os.path.join(get_resource_base_dir(), 'test', 'outputs'))
|
||||
Demand.objects.create(resource=setup, num='15-9', flow_type='AEC-LA', demand_id='15-9-AEC-LA')
|
||||
|
||||
resp = app.get('/mdel/test/status', params={'demand_id': '15-9-AEC-LA'}, status=200)
|
||||
|
@ -474,9 +475,3 @@ def test_date_parsing():
|
|||
with pytest.raises(APIError) as error:
|
||||
date = parse_date('28-02-2018')
|
||||
assert 'date u\'28-02-2018\' not iso-formated' in str(error)
|
||||
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
# remove test/inputs from fs
|
||||
shutil.rmtree(os.path.join(get_mdel_base_dir(), 'test', 'inputs'), ignore_errors=True)
|
||||
|
|
|
@ -21,7 +21,6 @@ from passerelle.utils.files import atomic_write
|
|||
|
||||
|
||||
def test_atomic_write(settings, tmpdir):
|
||||
settings.MEDIA_ROOT = str(tmpdir.mkdir('media'))
|
||||
target_dir = tmpdir.mkdir('target')
|
||||
filepath = str(target_dir.join('test'))
|
||||
|
||||
|
|
Loading…
Reference in New Issue