75 |
75 |
with ResponsesSoap(
|
76 |
76 |
wsdl_url='https://example.org/InvoiceService?wsdl',
|
77 |
77 |
wsdl_content=get_xml_file('InvoiceService.wsdl'),
|
78 |
78 |
settings=Settings(strict=False, xsd_ignore_sequence_order=True),
|
79 |
79 |
)() as mock:
|
80 |
80 |
yield mock
|
81 |
81 |
|
82 |
82 |
|
|
83 |
@pytest.fixture()
|
|
84 |
def all_services():
|
|
85 |
family_service = ResponsesSoap(
|
|
86 |
wsdl_url='https://example.org/FamilyService?wsdl',
|
|
87 |
wsdl_content=get_xml_file('FamilyService.wsdl'),
|
|
88 |
settings=Settings(strict=False, xsd_ignore_sequence_order=True),
|
|
89 |
)
|
|
90 |
invoice_service = ResponsesSoap(
|
|
91 |
wsdl_url='https://example.org/InvoiceService?wsdl',
|
|
92 |
wsdl_content=get_xml_file('InvoiceService.wsdl'),
|
|
93 |
settings=Settings(strict=False, xsd_ignore_sequence_order=True),
|
|
94 |
)
|
|
95 |
with responses.RequestsMock() as mock:
|
|
96 |
mock.add(responses.GET, family_service.wsdl_url, body=family_service.wsdl_content, status=200)
|
|
97 |
mock.add(responses.GET, invoice_service.wsdl_url, body=invoice_service.wsdl_content, status=200)
|
|
98 |
|
|
99 |
def add_soap_response(service, *args, **kwargs):
|
|
100 |
if service == 'family':
|
|
101 |
family_service.add_soap_response(mock, *args, **kwargs)
|
|
102 |
elif service == 'invoice':
|
|
103 |
invoice_service.add_soap_response(mock, *args, **kwargs)
|
|
104 |
else:
|
|
105 |
assert False, 'service not defined'
|
|
106 |
|
|
107 |
mock.add_soap_response = add_soap_response
|
|
108 |
yield mock
|
|
109 |
|
|
110 |
|
83 |
111 |
@pytest.fixture(scope='module')
|
84 |
112 |
def django_db_setup(django_db_setup, django_db_blocker):
|
85 |
113 |
with django_db_blocker.unblock():
|
86 |
114 |
con = setup_access_rights(
|
87 |
115 |
ToulouseMaelis.objects.get_or_create(
|
88 |
116 |
slug='test',
|
89 |
117 |
base_wsdl_url='https://example.org/',
|
90 |
118 |
zeep_wsse_username='maelis-webservice',
|
... | ... | |
3267 |
3295 |
resp = app.post_json(url + '?NameID=local&child_id=613880', params=params)
|
3268 |
3296 |
assert resp.json['err'] == 'wrong-key'
|
3269 |
3297 |
assert (
|
3270 |
3298 |
resp.json['err_desc']
|
3271 |
3299 |
== "indicatorList/0/code key value 'plop' do not belong to 'ChildIndicator' required referential"
|
3272 |
3300 |
)
|
3273 |
3301 |
|
3274 |
3302 |
|
3275 |
|
def test_add_direct_debit_order(invoice_service, con, app):
|
|
3303 |
def test_add_rl1_direct_debit_order(all_services, con, app):
|
3276 |
3304 |
def request_check(request):
|
3277 |
3305 |
assert request.dossierNumber == 1312
|
3278 |
3306 |
|
3279 |
|
invoice_service.add_soap_response(
|
3280 |
|
'addDirectDebitOrder', get_xml_file('R_add_direct_debit_order.xml'), request_check=request_check
|
|
3307 |
all_services.add_soap_response('family', 'readFamily', get_xml_file('R_read_family.xml'))
|
|
3308 |
all_services.add_soap_response(
|
|
3309 |
'invoice',
|
|
3310 |
'addDirectDebitOrder',
|
|
3311 |
get_xml_file('R_add_direct_debit_order.xml'),
|
|
3312 |
request_check=request_check,
|
3281 |
3313 |
)
|
3282 |
|
url = get_endpoint('add-direct-debit-order')
|
|
3314 |
url = get_endpoint('add-rl1-direct-debit-order')
|
3283 |
3315 |
params = {
|
3284 |
|
'numPerson': '613878',
|
3285 |
3316 |
'codeRegie': '22',
|
3286 |
3317 |
'bank/bankBIC': 'BDFEFR2T',
|
3287 |
3318 |
'bank/bankIBAN': 'FR7630001007941234567890185',
|
3288 |
3319 |
'bank/bankRUM': 'xxx',
|
3289 |
3320 |
'bank/dateStart': '2023-01-01',
|
3290 |
3321 |
'bank/bankAddress': '75049 PARIS cedex 01',
|
3291 |
3322 |
'bank/civility': 'x',
|
3292 |
3323 |
'bank/lastName': 'Ewing',
|
... | ... | |
3294 |
3325 |
}
|
3295 |
3326 |
|
3296 |
3327 |
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
3297 |
3328 |
resp = app.post_json(url + '?NameID=local', params=params)
|
3298 |
3329 |
assert resp.json['err'] == 0
|
3299 |
3330 |
assert resp.json['data'] == 'ok'
|
3300 |
3331 |
|
3301 |
3332 |
|
3302 |
|
def test_add_direct_debit_order_not_linked_error(con, app):
|
3303 |
|
url = get_endpoint('add-direct-debit-order')
|
|
3333 |
def test_add_rl1_direct_debit_order_not_linked_error(con, app):
|
|
3334 |
url = get_endpoint('add-rl1-direct-debit-order')
|
3304 |
3335 |
params = {
|
3305 |
|
'numPerson': '613878',
|
3306 |
3336 |
'codeRegie': '22',
|
3307 |
3337 |
'bank/bankBIC': 'BDFEFR2T',
|
3308 |
3338 |
'bank/bankIBAN': 'FR7630001007941234567890185',
|
3309 |
3339 |
'bank/bankRUM': 'xxx',
|
3310 |
3340 |
'bank/dateStart': '2023-01-01',
|
3311 |
3341 |
'bank/bankAddress': '75049 PARIS cedex 01',
|
3312 |
3342 |
'bank/civility': 'x',
|
3313 |
3343 |
'bank/lastName': 'Ewing',
|
3314 |
3344 |
'bank/firstName': 'John Ross',
|
3315 |
3345 |
}
|
3316 |
3346 |
|
3317 |
3347 |
resp = app.post_json(url + '?NameID=local', params=params)
|
3318 |
3348 |
assert resp.json['err'] == 'not-linked'
|
3319 |
3349 |
assert resp.json['err_desc'] == 'User not linked to family'
|
3320 |
3350 |
|
3321 |
3351 |
|
3322 |
|
def test_add_direct_debit_order_soap_error(invoice_service, con, app):
|
3323 |
|
invoice_service.add_soap_response(
|
3324 |
|
'addDirectDebitOrder', get_xml_file('R_direct_debit_order_soap_error.xml'), status=500
|
|
3352 |
def test_add_rl1_direct_debit_order_soap_error(all_services, con, app):
|
|
3353 |
all_services.add_soap_response('family', 'readFamily', get_xml_file('R_read_family.xml'))
|
|
3354 |
all_services.add_soap_response(
|
|
3355 |
'invoice', 'addDirectDebitOrder', get_xml_file('R_direct_debit_order_soap_error.xml'), status=500
|
3325 |
3356 |
)
|
3326 |
|
|
3327 |
|
url = get_endpoint('add-direct-debit-order')
|
|
3357 |
url = get_endpoint('add-rl1-direct-debit-order')
|
3328 |
3358 |
params = {
|
3329 |
|
'numPerson': '613878',
|
3330 |
3359 |
'codeRegie': '12345',
|
3331 |
3360 |
'bank/bankBIC': 'BDFEFR2T',
|
3332 |
3361 |
'bank/bankIBAN': 'FR7630001007941234567890185',
|
3333 |
3362 |
'bank/bankRUM': 'xxx',
|
3334 |
3363 |
'bank/dateStart': '2023-01-01',
|
3335 |
3364 |
'bank/bankAddress': '75049 PARIS cedex 01',
|
3336 |
3365 |
'bank/civility': 'x',
|
3337 |
3366 |
'bank/lastName': 'Ewing',
|
... | ... | |
3339 |
3368 |
}
|
3340 |
3369 |
|
3341 |
3370 |
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
3342 |
3371 |
resp = app.post_json(url + '?NameID=local', params=params)
|
3343 |
3372 |
assert resp.json['err'] == 'Invoice-addDirectDebitOrder-soap:Server'
|
3344 |
3373 |
assert resp.json['err_desc'] == "E520 : La REGIE CS [{0}] n''existe pas dans la base Maelis"
|
3345 |
3374 |
|
3346 |
3375 |
|
3347 |
|
def test_get_direct_debit_order(invoice_service, con, app):
|
|
3376 |
def test_get_rl1_direct_debit_order(all_services, con, app):
|
3348 |
3377 |
def request_check(request):
|
3349 |
3378 |
assert request.dossierNumber == 1312
|
3350 |
3379 |
|
3351 |
|
invoice_service.add_soap_response(
|
3352 |
|
'getDirectDebitOrder', get_xml_file('R_get_direct_debit_order.xml'), request_check=request_check
|
|
3380 |
all_services.add_soap_response('family', 'readFamily', get_xml_file('R_read_family.xml'))
|
|
3381 |
all_services.add_soap_response(
|
|
3382 |
'invoice',
|
|
3383 |
'getDirectDebitOrder',
|
|
3384 |
get_xml_file('R_get_direct_debit_order.xml'),
|
|
3385 |
request_check=request_check,
|
3353 |
3386 |
)
|
3354 |
|
url = get_endpoint('get-direct-debit-order')
|
|
3387 |
url = get_endpoint('get-rl1-direct-debit-order')
|
3355 |
3388 |
params = {
|
3356 |
|
'numPerson': '613878',
|
3357 |
3389 |
'codeRegie': '22',
|
3358 |
3390 |
'dateRef': '2023-01-01',
|
3359 |
3391 |
}
|
3360 |
3392 |
|
3361 |
3393 |
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
3362 |
3394 |
resp = app.post_json(url + '?NameID=local', params=params)
|
3363 |
3395 |
assert resp.json['err'] == 0
|
3364 |
3396 |
assert resp.json['data'] == {
|
... | ... | |
3368 |
3400 |
'dateStart': '2023-01-01T00:00:00+01:00',
|
3369 |
3401 |
'bankAddress': '75049 PARIS cedex 01',
|
3370 |
3402 |
'civility': 'x',
|
3371 |
3403 |
'lastName': 'Ewing',
|
3372 |
3404 |
'firstName': 'John Ross',
|
3373 |
3405 |
}
|
3374 |
3406 |
|
3375 |
3407 |
|
3376 |
|
def test_get_direct_debit_order_not_linked_error(con, app):
|
3377 |
|
url = get_endpoint('get-direct-debit-order')
|
|
3408 |
def test_get_rl1_direct_debit_order_parameter_error(con, app):
|
|
3409 |
url = get_endpoint('get-rl1-direct-debit-order')
|
|
3410 |
params = {
|
|
3411 |
'codeRegie': '22',
|
|
3412 |
'dateRef': 'plop',
|
|
3413 |
}
|
|
3414 |
|
|
3415 |
resp = app.post_json(url + '?NameID=local', params=params, status=400)
|
|
3416 |
assert resp.json['err'] == 1
|
|
3417 |
assert resp.json['err_class'] == 'passerelle.utils.jsonresponse.APIError'
|
|
3418 |
assert resp.json['err_desc'] == "dateRef: 'plop' does not match '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'"
|
|
3419 |
|
|
3420 |
|
|
3421 |
def test_get_rl1_direct_debit_order_not_linked_error(con, app):
|
|
3422 |
url = get_endpoint('get-rl1-direct-debit-order')
|
3378 |
3423 |
params = {
|
3379 |
|
'numPerson': '613878',
|
3380 |
3424 |
'codeRegie': '22',
|
3381 |
3425 |
'dateRef': '2023-01-01',
|
3382 |
3426 |
}
|
3383 |
3427 |
|
3384 |
3428 |
resp = app.post_json(url + '?NameID=local', params=params)
|
3385 |
3429 |
assert resp.json['err'] == 'not-linked'
|
3386 |
3430 |
assert resp.json['err_desc'] == 'User not linked to family'
|
3387 |
3431 |
|
3388 |
3432 |
|
3389 |
|
def test_get_direct_debit_order_soap_error(invoice_service, con, app):
|
3390 |
|
invoice_service.add_soap_response(
|
3391 |
|
'getDirectDebitOrder', get_xml_file('R_direct_debit_order_soap_error.xml'), status=500
|
|
3433 |
def test_get_rl1_direct_debit_order_soap_error(all_services, con, app):
|
|
3434 |
all_services.add_soap_response('family', 'readFamily', get_xml_file('R_read_family.xml'))
|
|
3435 |
all_services.add_soap_response(
|
|
3436 |
'invoice', 'getDirectDebitOrder', get_xml_file('R_direct_debit_order_soap_error.xml'), status=500
|
3392 |
3437 |
)
|
3393 |
|
url = get_endpoint('get-direct-debit-order')
|
|
3438 |
url = get_endpoint('get-rl1-direct-debit-order')
|
3394 |
3439 |
params = {
|
3395 |
|
'numPerson': '613878',
|
3396 |
3440 |
'codeRegie': '12345',
|
3397 |
3441 |
'dateRef': '2023-01-01',
|
3398 |
3442 |
}
|
3399 |
3443 |
|
3400 |
3444 |
Link.objects.create(resource=con, family_id='1312', name_id='local')
|
3401 |
3445 |
resp = app.post_json(url + '?NameID=local', params=params)
|
3402 |
3446 |
assert resp.json['err'] == 'Invoice-getDirectDebitOrder-soap:Server'
|
3403 |
3447 |
assert resp.json['err_desc'] == "E520 : La REGIE CS [{0}] n''existe pas dans la base Maelis"
|
3404 |
|
-
|