2020-01-31 09:00:01 -05:00
|
|
|
import logging
|
|
|
|
from contextlib import contextmanager
|
|
|
|
|
|
|
|
from django.contrib.auth.models import Permission, User
|
|
|
|
|
|
|
|
|
|
|
|
def post_data(data):
|
|
|
|
"""
|
|
|
|
Take a dictionary of test data (suitable for comparison to an instance) and return a dict suitable for POSTing.
|
|
|
|
"""
|
|
|
|
ret = {}
|
|
|
|
|
|
|
|
for key, value in data.items():
|
|
|
|
if value is None:
|
|
|
|
ret[key] = ''
|
2020-01-31 11:50:12 -05:00
|
|
|
elif type(value) in (list, tuple):
|
|
|
|
ret[key] = value
|
2020-01-31 09:00:01 -05:00
|
|
|
else:
|
|
|
|
ret[key] = str(value)
|
|
|
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
2020-02-12 11:13:32 -05:00
|
|
|
def create_test_user(username='testuser', permissions=None):
|
2020-01-31 09:00:01 -05:00
|
|
|
"""
|
|
|
|
Create a User with the given permissions.
|
|
|
|
"""
|
|
|
|
user = User.objects.create_user(username=username)
|
2020-02-12 11:13:32 -05:00
|
|
|
if permissions is None:
|
|
|
|
permissions = ()
|
2020-01-31 09:00:01 -05:00
|
|
|
for perm_name in permissions:
|
|
|
|
app, codename = perm_name.split('.')
|
|
|
|
perm = Permission.objects.get(content_type__app_label=app, codename=codename)
|
|
|
|
user.user_permissions.add(perm)
|
|
|
|
|
|
|
|
return user
|
|
|
|
|
|
|
|
|
|
|
|
@contextmanager
|
|
|
|
def disable_warnings(logger_name):
|
|
|
|
"""
|
|
|
|
Temporarily suppress expected warning messages to keep the test output clean.
|
|
|
|
"""
|
|
|
|
logger = logging.getLogger(logger_name)
|
|
|
|
current_level = logger.level
|
|
|
|
logger.setLevel(logging.ERROR)
|
|
|
|
yield
|
|
|
|
logger.setLevel(current_level)
|