wcs/tests/test_users.py

94 lines
2.4 KiB
Python

import shutil
import pytest
from quixote import cleanup
from wcs import fields
from wcs.variables import LazyUser
from .utilities import create_temporary_pub
def setup_module(module):
cleanup()
global pub
pub = create_temporary_pub()
def teardown_module(module):
shutil.rmtree(pub.APP_DIR)
def test_get_users_with_name_identifier():
pub.user_class.wipe()
user = pub.user_class()
user.name = 'Pierre'
user.name_identifiers = ['foo']
user.store()
user = pub.user_class()
user.name = 'Papier'
user.store()
assert len(pub.user_class.get_users_with_name_identifier('foo')) == 1
assert pub.user_class.get_users_with_name_identifier('foo')[0].name == 'Pierre'
def test_user_substitution_variables():
pub.user_class.wipe()
user = pub.user_class()
user.name = 'Pierre'
user.email = 'test@example.net'
user.name_identifiers = ['foo']
user.store()
assert user.get_substitution_variables().get('session_user_display_name') == 'Pierre'
assert user.get_substitution_variables().get('session_user_nameid') == 'foo'
assert user.get_substitution_variables().get('session_user_email') == 'test@example.net'
lazy_user = LazyUser(user)
assert lazy_user.email == user.email
assert lazy_user.nameid == user.name_identifiers[0]
assert lazy_user.display_name == user.name
def test_get_users_with_role():
pub.user_class.wipe()
user = pub.user_class()
user.name = 'Pierre'
user.roles = [1]
user.store()
user = pub.user_class()
user.name = 'Papier'
user.store()
assert len(pub.user_class.get_users_with_role(1)) == 1
assert pub.user_class.get_users_with_role(1)[0].name == 'Pierre'
def test_user_formdef_getattr():
from wcs.admin.settings import UserFieldsFormDef
formdef = UserFieldsFormDef(pub)
formdef.fields = [
fields.StringField(id='3', label='test', type='string', varname='plop'),
fields.StringField(id='9', label='noop', type='string', varname='get_formdef'),
]
formdef.store()
user = pub.user_class()
assert user.plop is None
assert user.get_formdef() # get_formdef is not overrided by varname "get_formdef"
user.form_data = {'3': 'Bar', '9': 'Foo'}
assert user.plop == 'Bar'
assert user.get_formdef != 'Foo'
with pytest.raises(AttributeError):
# noqa pylint: disable=pointless-statement
user.xxx