30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
"""Общие хелперы для тестов ACORE."""
|
|
|
|
|
|
def login_past_2fa(client, user):
|
|
"""force_login + прохождение обязательного 2FA-гейта (staff, HR, IT)."""
|
|
from core.security import user_requires_mandatory_2fa
|
|
|
|
client.force_login(user)
|
|
if user_requires_mandatory_2fa(user) and not user.totp_enabled:
|
|
user.totp_enabled = True
|
|
user.save(update_fields=['totp_enabled'])
|
|
session = client.session
|
|
session['2fa_verified'] = True
|
|
session.save()
|
|
|
|
|
|
# Обратная совместимость с существующими тестами.
|
|
login_2fa = login_past_2fa
|
|
|
|
|
|
def grant_all_locations(user):
|
|
"""Явная область всей сети для тестов центральных операторов."""
|
|
from django.contrib.auth.models import Permission
|
|
user.user_permissions.add(Permission.objects.get(
|
|
content_type__app_label='locations', codename='view_all_locations',
|
|
))
|
|
for key in ('_perm_cache', '_user_perm_cache', '_group_perm_cache'):
|
|
user.__dict__.pop(key, None)
|
|
return user
|