Projet

Général

Profil

0001-agent-authentic-store-portal-user-url-on-correpondin.patch

Emmanuel Cazenave, 26 janvier 2022 12:22

Télécharger (5,04 ko)

Voir les différences:

Subject: [PATCH] agent/authentic: store portal-user url on correponding OU
 (#61029)

 .../management/commands/hobo_deploy.py        |  3 +++
 tests_authentic/test_hobo_deploy.py           | 25 +++++++++++++++----
 2 files changed, 23 insertions(+), 5 deletions(-)
hobo/agent/authentic2/management/commands/hobo_deploy.py
192 192
                    if service_created or not provider.ou:
193 193
                        provider.ou = ou
194 194
                        provision_target_ous[provider.ou.id] = provider.ou
195
                    if service.get('template_name') == 'portal-user':
196
                        provider.ou.base_url = service['base_url']
197
                        provider.ou.save()
195 198
                    provider.save()
196 199
                    if service_created:
197 200
                        service_provider = LibertyServiceProvider(
tests_authentic/test_hobo_deploy.py
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
-