canaille-globuzma/tests/ldap/test_utils.py

96 lines
2.7 KiB
Python
Raw Normal View History

2022-12-14 23:03:01 +00:00
import datetime
import ldap.dn
2022-12-14 23:03:01 +00:00
from canaille.ldap_backend.utils import ldap_to_python
from canaille.ldap_backend.utils import python_to_ldap
from canaille.ldap_backend.utils import Syntax
2021-06-03 13:00:11 +00:00
from canaille.models import Group
from canaille.models import User
2021-06-03 13:00:11 +00:00
2022-12-14 20:06:59 +00:00
def test_repr(slapd_connection, foo_group, user):
assert repr(foo_group) == "<Group cn=['foo']>"
assert repr(user) == "<User cn=['John (johnny) Doe']>"
2021-06-03 13:00:11 +00:00
def test_equality(slapd_connection, foo_group, bar_group):
Group.ldap_object_attributes()
2021-06-03 13:00:11 +00:00
assert foo_group != bar_group
foo_group2 = Group.get(dn=foo_group.dn)
2021-06-03 13:00:11 +00:00
assert foo_group == foo_group2
def test_dn_when_leading_space_in_id_attribute(slapd_connection):
User.initialize(slapd_connection)
user = User(
objectClass=["inetOrgPerson"],
cn=" Doe", # leading space
sn="Doe",
uid="user",
mail="john@doe.com",
)
user.save()
assert ldap.dn.is_dn(user.dn)
assert ldap.dn.dn2str(ldap.dn.str2dn(user.dn)) == user.dn
assert user.dn == "cn=Doe,ou=users,dc=mydomain,dc=tld"
user.delete()
2022-05-18 09:31:26 +00:00
def test_dn_when_ldap_special_char_in_id_attribute(slapd_connection):
User.initialize(slapd_connection)
user = User(
objectClass=["inetOrgPerson"],
cn="#Doe", # special char
sn="Doe",
uid="user",
mail="john@doe.com",
)
user.save()
assert ldap.dn.is_dn(user.dn)
assert ldap.dn.dn2str(ldap.dn.str2dn(user.dn)) == user.dn
assert user.dn == "cn=\\#Doe,ou=users,dc=mydomain,dc=tld"
2022-05-18 09:31:26 +00:00
user.delete()
2022-12-14 23:03:01 +00:00
def test_ldap_to_python():
assert (
python_to_ldap(datetime.datetime.min, Syntax.GENERALIZED_TIME)
== b"000001010000Z"
)
assert (
python_to_ldap(datetime.datetime(2000, 1, 2, 3, 4, 5), Syntax.GENERALIZED_TIME)
== b"20000102030405Z"
)
assert python_to_ldap(1337, Syntax.INTEGER) == b"1337"
assert python_to_ldap(True, Syntax.BOOLEAN) == b"TRUE"
assert python_to_ldap(False, Syntax.BOOLEAN) == b"FALSE"
assert python_to_ldap("foobar", Syntax.DIRECTORY_STRING) == b"foobar"
assert python_to_ldap(b"foobar", Syntax.JPEG) == b"foobar"
def test_python_to_ldap():
assert ldap_to_python(
b"20000102030405Z", Syntax.GENERALIZED_TIME
) == datetime.datetime(2000, 1, 2, 3, 4, 5)
assert (
ldap_to_python(b"000001010000Z", Syntax.GENERALIZED_TIME)
== datetime.datetime.min
)
assert ldap_to_python(b"1337", Syntax.INTEGER) == 1337
assert ldap_to_python(b"TRUE", Syntax.BOOLEAN) is True
assert ldap_to_python(b"FALSE", Syntax.BOOLEAN) is False
assert ldap_to_python(b"foobar", Syntax.DIRECTORY_STRING) == "foobar"
assert ldap_to_python(b"foobar", Syntax.JPEG) == b"foobar"