Projet

Général

Profil

0001-tests-add-cache-clearance-autouse-fixture-41813.patch

Paul Marillonnet, 17 avril 2020 14:51

Télécharger (9,42 ko)

Voir les différences:

Subject: [PATCH] tests: add cache clearance autouse fixture (#41813)

 tests/auth_fc/conftest.py |  2 --
 tests/conftest.py         |  8 ++++++--
 tests/test_auth_oidc.py   | 13 -------------
 tests/test_idp_oidc.py    | 13 -------------
 tests/test_manager.py     |  8 --------
 5 files changed, 6 insertions(+), 38 deletions(-)
tests/auth_fc/conftest.py
105 105
class AllHook(object):
106 106
    def __init__(self):
107 107
        self.calls = {}
108
        from authentic2 import hooks
109
        hooks.get_hooks.cache.clear()
110 108

  
111 109
    def __call__(self, hook_name, *args, **kwargs):
112 110
        calls = self.calls.setdefault(hook_name, [])
tests/conftest.py
22 22
import django_webtest
23 23

  
24 24
from django.contrib.auth import get_user_model
25
from django.core.cache import cache
25 26
from django_rbac.utils import get_ou_model, get_role_model
26 27
from django.conf import settings
27 28
from django.utils.six.moves.urllib import parse as urlparse
......
270 271
class AllHook(object):
271 272
    def __init__(self):
272 273
        self.calls = {}
273
        from authentic2 import hooks
274
        hooks.get_hooks.cache.clear()
275 274

  
276 275
    def __call__(self, hook_name, *args, **kwargs):
277 276
        calls = self.calls.setdefault(hook_name, [])
......
381 380
        ou=get_default_ou(),
382 381
        slug='service',
383 382
        name='Service')
383

  
384

  
385
@pytest.fixture(autouse=True)
386
def clear_cache():
387
    cache.clear()
tests/test_auth_oidc.py
153 153
        idtoken_algo=OIDCProvider._meta.get_field('idtoken_algo').default,
154 154
        jwkset=None,
155 155
        claims_parameter_supported=False):
156
    from authentic2_auth_oidc.utils import get_provider, get_provider_by_issuer
157
    get_provider.cache.clear()
158
    get_provider_by_issuer.cache.clear()
159 156

  
160 157
    if jwkset is not None:
161 158
        jwkset = json.loads(jwkset.export())
......
453 450
def test_sso(app, caplog, code, oidc_provider, oidc_provider_jwkset, hooks):
454 451
    OU = get_ou_model()
455 452
    cassis = OU.objects.create(name='Cassis', slug='cassis')
456
    OU.cached.cache.clear()
457 453

  
458 454
    response = app.get('/admin/').maybe_follow()
459 455
    assert oidc_provider.name in response.text
......
567 563

  
568 564

  
569 565
def test_show_on_login_page(app, oidc_provider):
570
    # we have a 5 seconds cache on list of providers, we have to work around it
571
    get_providers.cache.clear()
572
    has_providers.cache.clear()
573 566
    response = app.get('/login/')
574 567
    assert 'oidc-a-oididp' in response.text
575 568

  
......
586 579

  
587 580
def test_strategy_find_uuid(app, caplog, code, oidc_provider, oidc_provider_jwkset, simple_user):
588 581

  
589
    get_providers.cache.clear()
590
    has_providers.cache.clear()
591 582
    # no mapping please
592 583
    OIDCClaimMapping.objects.all().delete()
593 584
    oidc_provider.strategy = oidc_provider.STRATEGY_FIND_UUID
......
674 665
def test_invalid_kid(app, caplog, code, oidc_provider_rsa,
675 666
                     oidc_provider_jwkset, simple_user):
676 667

  
677
    get_providers.cache.clear()
678
    has_providers.cache.clear()
679 668
    # no mapping please
680 669
    OIDCClaimMapping.objects.all().delete()
681 670

  
......
701 690

  
702 691

  
703 692
def test_templated_claim_mapping(app, caplog, code, oidc_provider, oidc_provider_jwkset):
704
    get_providers.cache.clear()
705
    has_providers.cache.clear()
706 693

  
707 694
    Attribute.objects.create(
708 695
        name='pro_phone',
tests/test_idp_oidc.py
25 25

  
26 26
import utils
27 27

  
28
from django.core.cache import cache
29 28
from django.core.urlresolvers import reverse
30 29
from django.core.files import File
31 30
from django.db import connection
......
1290 1289

  
1291 1290

  
1292 1291
def test_credentials_grant(app, oidc_client, admin, simple_user):
1293
    cache.clear()
1294 1292
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1295 1293
    oidc_client.scope = 'openid'
1296 1294
    oidc_client.save()
......
1342 1340
        app, oidc_client, admin, simple_user, oidc_settings, freezer):
1343 1341
    freezer.move_to('2020-01-01')
1344 1342

  
1345
    cache.clear()
1346 1343
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1347 1344
    oidc_client.save()
1348 1345
    token_url = make_url('oidc-token')
......
1366 1363
        app, oidc_client, admin, simple_user, oidc_settings, freezer):
1367 1364
    freezer.move_to('2020-01-01')
1368 1365

  
1369
    cache.clear()
1370 1366
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1371 1367
    oidc_client.save()
1372 1368
    token_url = make_url('oidc-token')
......
1388 1384
        app, oidc_client, admin, simple_user, settings, freezer):
1389 1385
    freezer.move_to('2020-01-01')
1390 1386

  
1391
    cache.clear()
1392 1387
    settings.A2_LOGIN_EXPONENTIAL_RETRY_TIMEOUT_DURATION = 2
1393 1388
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1394 1389
    oidc_client.save()
......
1419 1414

  
1420 1415
def test_credentials_grant_invalid_flow(
1421 1416
        app, oidc_client, admin, simple_user, settings):
1422
    cache.clear()
1423 1417
    params = {
1424 1418
        'client_id': oidc_client.client_id,
1425 1419
        'client_secret': oidc_client.client_secret,
......
1435 1429

  
1436 1430
def test_credentials_grant_invalid_client(
1437 1431
        app, oidc_client, admin, simple_user, settings):
1438
    cache.clear()
1439 1432
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1440 1433
    oidc_client.save()
1441 1434
    params = {
......
1453 1446

  
1454 1447
def test_credentials_grant_unauthz_client(
1455 1448
        app, oidc_client, admin, simple_user, settings):
1456
    cache.clear()
1457 1449
    params = {
1458 1450
        'client_id': oidc_client.client_id,
1459 1451
        'client_secret': oidc_client.client_secret,
......
1469 1461

  
1470 1462
def test_credentials_grant_invalid_content_type(
1471 1463
        app, oidc_client, admin, simple_user, settings):
1472
    cache.clear()
1473 1464
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1474 1465
    oidc_client.save()
1475 1466
    params = {
......
1490 1481

  
1491 1482
def test_credentials_grant_ou_selection_simple(
1492 1483
        app, oidc_client, admin, user_ou1, user_ou2, ou1, ou2, settings):
1493
    cache.clear()
1494 1484
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1495 1485
    oidc_client.save()
1496 1486
    params = {
......
1511 1501

  
1512 1502
def test_credentials_grant_ou_selection_username_not_unique(
1513 1503
        app, oidc_client, admin, user_ou1, admin_ou2, ou1, ou2, settings):
1514
    cache.clear()
1515 1504
    settings.A2_USERNAME_IS_UNIQUE = False
1516 1505
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1517 1506
    oidc_client.save()
......
1539 1528

  
1540 1529
def test_credentials_grant_ou_selection_username_not_unique_wrong_ou(
1541 1530
        app, oidc_client, admin, user_ou1, admin_ou2, ou1, ou2, settings):
1542
    cache.clear()
1543 1531
    settings.A2_USERNAME_IS_UNIQUE = False
1544 1532
    oidc_client.authorization_flow = OIDCClient.FLOW_RESOURCE_OWNER_CRED
1545 1533
    oidc_client.save()
......
1562 1550

  
1563 1551
def test_credentials_grant_ou_selection_invalid_ou(
1564 1552
        app, oidc_client, admin, user_ou1, settings):
1565
    cache.clear()
1566 1553
    params = {
1567 1554
        'client_id': oidc_client.client_id,
1568 1555
        'client_secret': oidc_client.client_secret,
tests/test_manager.py
69 69

  
70 70

  
71 71
def test_manager_create_role(superuser_or_admin, app):
72
    # clear cache from previous runs
73
    from authentic2.manager.utils import get_ou_count
74
    get_ou_count.cache.cache = {}
75

  
76 72
    non_admin_roles = Role.objects.exclude(slug__startswith='_')
77 73

  
78 74
    ou_add = login(app, superuser_or_admin, reverse('a2-manager-role-add'))
......
185 181

  
186 182

  
187 183
def test_manager_create_user(superuser_or_admin, app, settings):
188
    # clear cache from previous runs
189
    from authentic2.manager.utils import get_ou_count
190
    get_ou_count.cache.clear()
191

  
192 184
    ou1 = OU.objects.create(name='OU1', slug='ou1')
193 185
    ou2 = OU.objects.create(name='OU2', slug='ou2', email_is_unique=True)
194 186

  
195
-