mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-12-23 15:33:45 +00:00
143 lines
5.8 KiB
Python
143 lines
5.8 KiB
Python
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
|
|
# se veut agnostique au réseau considéré, de manière à être installable en
|
|
# quelques clics.
|
|
#
|
|
# Copyright © 2017 Gabriel Détraz
|
|
# Copyright © 2017 Goulven Kermarec
|
|
# Copyright © 2017 Augustin Lemesle
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
"""users.tests
|
|
The tests for the Users module.
|
|
"""
|
|
|
|
from django.test import TestCase
|
|
from django.conf import settings
|
|
from .models import School, ListShell, LdapUserGroup, ListRight
|
|
|
|
import volatildap
|
|
|
|
# Réglages bidon pour volatildap
|
|
LdapUserGroup.base_dn='ou=groups,dc=example,dc=org'
|
|
|
|
|
|
groups = ('ou=groups,dc=example,dc=org', {
|
|
'objectClass': ['top', 'organizationalUnit'], 'ou': ['groups']})
|
|
people = ('ou=people,dc=example,dc=org', {
|
|
'objectClass': ['top', 'organizationalUnit'], 'ou': ['groups']})
|
|
contacts = ('ou=contacts,ou=groups,dc=example,dc=org', {
|
|
'objectClass': ['top', 'organizationalUnit'], 'ou': ['groups']})
|
|
foogroup = ('cn=foogroup,ou=groups,dc=example,dc=org', {
|
|
'objectClass': ['posixGroup'], 'memberUid': ['foouser', 'baruser'],
|
|
'gidNumber': ['1000'], 'cn': ['foogroup']})
|
|
bargroup = ('cn=bargroup,ou=groups,dc=example,dc=org', {
|
|
'objectClass': ['posixGroup'], 'memberUid': ['zoouser', 'baruser'],
|
|
'gidNumber': ['1001'], 'cn': ['bargroup']})
|
|
wizgroup = ('cn=wizgroup,ou=groups,dc=example,dc=org', {
|
|
'objectClass': ['posixGroup'], 'memberUid': ['wizuser', 'baruser'],
|
|
'gidNumber': ['1002'], 'cn': ['wizgroup']})
|
|
foouser = ('uid=foouser,ou=people,dc=example,dc=org', {
|
|
'cn': [b'F\xc3\xb4o Us\xc3\xa9r'],
|
|
'objectClass': ['posixAccount', 'shadowAccount', 'inetOrgPerson'],
|
|
'loginShell': ['/bin/bash'],
|
|
'jpegPhoto': [
|
|
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff'
|
|
b'\xfe\x00\x1cCreated with GIMP on a Mac\xff\xdb\x00C\x00\x05\x03\x04'
|
|
b'\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07'
|
|
b'\x07\x0f\x0b\x0b\t\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c'
|
|
b'\x17\x13\x14\x1a\x15\x11\x11\x18!\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13'
|
|
b'\x17"$"\x1e$\x1c\x1e\x1f\x1e\xff\xdb\x00C\x01\x05\x05\x05\x07\x06\x07'
|
|
b'\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e'
|
|
b'\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e'
|
|
b'\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e'
|
|
b'\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\x11\x08\x00\x08\x00\x08\x03'
|
|
b'\x01"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x15\x00\x01\x01\x00\x00'
|
|
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xff\xc4\x00'
|
|
b'\x19\x10\x00\x03\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
|
b'\x00\x00\x01\x02\x06\x11A\xff\xc4\x00\x14\x01\x01\x00\x00\x00\x00\x00'
|
|
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xc4\x00\x14\x11\x01'
|
|
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff'
|
|
b'\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\x9d\xf29wU5Q\xd6'
|
|
b'\xfd\x00\x01\xff\xd9'],
|
|
'uidNumber': ['2000'], 'gidNumber': ['1000'], 'sn': [b'Us\xc3\xa9r'],
|
|
'homeDirectory': ['/home/foouser'], 'givenName': [b'F\xc3\xb4o'],
|
|
'uid': ['foouser']})
|
|
|
|
class LdapTestCase(TestCase):
|
|
directory = {}
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(LdapTestCase, cls).setUpClass()
|
|
cls.ldap_server = volatildap.LdapServer(
|
|
initial_data=cls.directory,
|
|
schemas=['core.schema', 'cosine.schema', 'inetorgperson.schema', 'nis.schema'],
|
|
)
|
|
settings.DATABASES['ldap']['USER'] = cls.ldap_server.rootdn
|
|
settings.DATABASES['ldap']['PASSWORD'] = cls.ldap_server.rootpw
|
|
settings.DATABASES['ldap']['NAME'] = cls.ldap_server.uri
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.ldap_server.stop()
|
|
super(LdapTestCase, cls).tearDownClass()
|
|
|
|
def setUp(self):
|
|
super(LdapTestCase, self).setUp()
|
|
self.ldap_server.start()
|
|
|
|
|
|
class SchoolTestCase(TestCase):
|
|
def setUp(self):
|
|
School.objects.create(name="ENS Paris-Saclay")
|
|
School.objects.create(name="Supelec")
|
|
|
|
def test_school_are_created(self):
|
|
pass
|
|
|
|
class ListShellTestCase(TestCase):
|
|
def setUp(self):
|
|
ListShell.objects.create(shell="/bin/zsh")
|
|
ListShell.objects.create(shell="/bin/bash")
|
|
|
|
def test_shell_are_created(self):
|
|
pass
|
|
|
|
class GroupTestCase(LdapTestCase):
|
|
directory = dict([groups, foogroup, bargroup, wizgroup, people, foouser])
|
|
|
|
def test_create_ldapgroup(self):
|
|
mygroup = LdapUserGroup()
|
|
mygroup.name='re2o'
|
|
mygroup.gid=1010
|
|
mygroup.members=['someuser', 'foouser']
|
|
mygroup.save()
|
|
|
|
# check ldap group was created
|
|
new = LdapUserGroup.objects.get(name='re2o')
|
|
self.assertEqual(new.name, 're2o')
|
|
self.assertEqual(new.gid, 1010)
|
|
self.assertEqual(new.members, ['someuser', 'foouser'])
|
|
|
|
def test_create_re2ogroup(self):
|
|
ListRight.objects.create(gid='1011', unix_name='admins', details='test')
|
|
|
|
#check re2o
|
|
lr = ListRight.objects.get(gid=1011)
|
|
self.asserEqual(lr.gid, 1011)
|
|
self.asserEqual(lr.details, 'test')
|
|
|
|
|
|
|