120 |
120 |
</EntityDescriptor>'''
|
121 |
121 |
meta2 = meta1.replace('eservices', 'passerelle')
|
122 |
122 |
meta3 = meta1.replace('eservices', 'clapiers')
|
123 |
|
metadatas = [meta1, meta2, meta3]
|
|
123 |
meta4 = meta1.replace('eservices', 'portal')
|
|
124 |
metadatas = [meta1, meta2, meta3, meta4]
|
124 |
125 |
monkeypatch.setattr(HoboDeployCommand, 'backoff_factor', 0.0001)
|
125 |
|
side_effect_iter = iter([meta1, meta2, RequestException(), meta3])
|
|
126 |
side_effect_iter = iter([meta1, meta2, RequestException(), meta4, meta3])
|
126 |
127 |
|
127 |
128 |
def side_effect(*args, **kwargs):
|
128 |
129 |
for v in side_effect_iter:
|
... | ... | |
335 |
336 |
'ou-slug': 'ou-slug',
|
336 |
337 |
},
|
337 |
338 |
},
|
|
339 |
{
|
|
340 |
'service-id': 'combo',
|
|
341 |
'template_name': 'portal-user',
|
|
342 |
'slug': 'portal',
|
|
343 |
'title': u'Portail Montpellier-Métropole',
|
|
344 |
'base_url': 'http://portal.example.net',
|
|
345 |
'saml-sp-metadata-url': 'http://portal.example.net/saml/metadata',
|
|
346 |
},
|
338 |
347 |
],
|
339 |
348 |
}
|
340 |
349 |
|
... | ... | |
358 |
367 |
audiences = sorted([arg[0][0]['audience'] for arg in mock_notify.call_args_list])
|
359 |
368 |
assert audiences == [
|
360 |
369 |
['http://clapiers.example.net/saml/metadata'],
|
361 |
|
['http://eservices.example.net/saml/metadata', 'http://passerelle.example.net/saml/metadata'],
|
|
370 |
[
|
|
371 |
'http://eservices.example.net/saml/metadata',
|
|
372 |
'http://passerelle.example.net/saml/metadata',
|
|
373 |
'http://portal.example.net/saml/metadata',
|
|
374 |
],
|
362 |
375 |
]
|
363 |
376 |
assert [arg[0][0]['@type'] for arg in mock_notify.call_args_list] == ['provision', 'provision']
|
364 |
377 |
assert [arg[0][0]['objects']['@type'] for arg in mock_notify.call_args_list] == ['role', 'role']
|
... | ... | |
440 |
453 |
).count()
|
441 |
454 |
== 1
|
442 |
455 |
)
|
443 |
|
assert LibertyProvider.objects.count() == 3
|
|
456 |
assert LibertyProvider.objects.count() == 4
|
444 |
457 |
services = tenant.get_hobo_json()['services']
|
445 |
458 |
from authentic2.a2_rbac.models import Role
|
446 |
459 |
from authentic2.a2_rbac.utils import get_default_ou
|
... | ... | |
464 |
477 |
assert provider.name == service['title']
|
465 |
478 |
assert provider.federation_source == 'hobo'
|
466 |
479 |
assert provider.entity_id == service['saml-sp-metadata-url']
|
|
480 |
if service.get('template_name') == 'portal-user':
|
|
481 |
assert provider.ou.base_url == service['base_url']
|
467 |
482 |
assert LibertyServiceProvider.objects.filter(liberty_provider=provider).count() == 1
|
468 |
483 |
|
469 |
484 |
service_provider = LibertyServiceProvider.objects.get(liberty_provider=provider)
|
... | ... | |
525 |
540 |
field = env['profile']['fields'][9]
|
526 |
541 |
assert field['name'] == 'mobile'
|
527 |
542 |
field['kind'] = 'phone_number'
|
528 |
|
side_effect_iter = iter([meta1, meta2, RequestException(), meta3])
|
|
543 |
side_effect_iter = iter([meta1, meta2, RequestException(), meta4, meta3])
|
529 |
544 |
with mock.patch('hobo.agent.authentic2.provisionning.notify_agents') as mock_notify, mock.patch(
|
530 |
545 |
'hobo.agent.authentic2.management.commands.hobo_deploy.sleep', wraps=time.sleep
|
531 |
546 |
) as sleep_mock:
|
532 |
|
-
|