mirror of https://gitlab.federez.net/re2o/re2o
11 changed files with 330 additions and 161 deletions
@ -0,0 +1,29 @@ |
|||
# -*- mode: python; coding: utf-8 -*- |
|||
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il |
|||
# se veut agnostique au réseau considéré, de manière à être installable en |
|||
# quelques clics. |
|||
# |
|||
# Copyright © 2024 Caroline Canebier |
|||
# |
|||
# 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. |
|||
from os.path import dirname, abspath |
|||
from django.conf import settings as django_settings |
|||
|
|||
def load_tests(loader, tests, pattern): |
|||
""" |
|||
As this is an optional app, load its tests only if it is installed. |
|||
""" |
|||
if "api" in django_settings.INSTALLED_APPS: |
|||
return loader.discover(start_dir=dirname(abspath(__file__)), pattern=pattern) |
|||
@ -0,0 +1,29 @@ |
|||
# -*- mode: python; coding: utf-8 -*- |
|||
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il |
|||
# se veut agnostique au réseau considéré, de manière à être installable en |
|||
# quelques clics. |
|||
# |
|||
# Copyright © 2024 Caroline Canebier |
|||
# |
|||
# 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. |
|||
from os.path import dirname, abspath |
|||
from django.conf import settings as django_settings |
|||
|
|||
def load_tests(loader, tests, pattern): |
|||
""" |
|||
As this is an optionnal app, loads its tests only if it is installed. |
|||
""" |
|||
if "api" in django_settings.INSTALLED_APPS: |
|||
return loader.discover(start_dir=dirname(abspath(__file__)), pattern=pattern) |
|||
@ -0,0 +1,29 @@ |
|||
# -*- mode: python; coding: utf-8 -*- |
|||
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il |
|||
# se veut agnostique au réseau considéré, de manière à être installable en |
|||
# quelques clics. |
|||
# |
|||
# Copyright © 2024 Caroline Canebier |
|||
# |
|||
# 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. |
|||
from os.path import dirname, abspath |
|||
from django.conf import settings as django_settings |
|||
|
|||
def load_tests(loader, tests, pattern): |
|||
""" |
|||
As this is an optional app, load its tests only if it is installed. |
|||
""" |
|||
if "ldap_sync" in django_settings.INSTALLED_APPS: |
|||
return loader.discover(start_dir=dirname(abspath(__file__)), pattern=pattern) |
|||
@ -1,3 +1,101 @@ |
|||
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il |
|||
# se veut agnostique au réseau considéré, de manière à être installable en |
|||
# quelques clics. |
|||
# |
|||
# Copyright © 2017 Gabriel Détraz |
|||
# Copyright © 2017 Lara 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. |
|||
""" |
|||
|
|||
import os.path |
|||
|
|||
import volatildap |
|||
from django.conf import settings |
|||
from django.test import TestCase |
|||
|
|||
# Create your tests here. |
|||
from . import models |
|||
|
|||
class LdapEnabledTestCase(TestCase): |
|||
@classmethod |
|||
def setUpClass(cls): |
|||
super().setUpClass() |
|||
cls.ldap = volatildap.LdapServer( |
|||
# Load some initial data |
|||
initial={'ou=people': { |
|||
'ou': ['people'], |
|||
'objectClass': ['organizationalUnit'], |
|||
}}, |
|||
# Enable more LDAP schemas |
|||
schemas=['core.schema', 'cosine.schema', 'inetorgperson.schema', 'nis.schema'], |
|||
) |
|||
# The volatildap server uses specific defaults, and listens on an arbitrary port. |
|||
# Copy the server-side values to Django settings |
|||
settings.DATABASES['ldap']['USER'] = cls.ldap.rootdn |
|||
settings.DATABASES['ldap']['PASSWORD'] = cls.ldap.rootpw |
|||
settings.DATABASES['ldap']['NAME'] = cls.ldap.uri |
|||
|
|||
def setUp(self): |
|||
super().setUp() |
|||
# Starting an already-started volatildap server performs a data reset |
|||
self.ldap.start() |
|||
|
|||
@classmethod |
|||
def tearDownClass(cls): |
|||
# Free up resources on teardown. |
|||
cls.ldap.stop() |
|||
super().tearDownClass() |
|||
|
|||
class LdapUserTestCase(TestCase): |
|||
def test_create_ldap_user(self): |
|||
g = models.LdapUser.objects.create( |
|||
gid="500", |
|||
name="users_test_ldapuser", |
|||
uid="users_test_ldapuser", |
|||
uidNumber="21001", |
|||
sn="users_test_ldapuser", |
|||
login_shell="/bin/false", |
|||
mail="user@example.net", |
|||
given_name="users_test_ldapuser", |
|||
home_directory="/home/moamoak", |
|||
display_name="users_test_ldapuser", |
|||
dialupAccess="False", |
|||
sambaSID="21001", |
|||
user_password="{SSHA}aBcDeFgHiJkLmNoPqRsTuVwXyZ012345", |
|||
sambat_nt_password="0123456789ABCDEF0123456789ABCDEF", |
|||
macs=[], |
|||
shadowexpire="0", |
|||
) |
|||
self.assertEqual(g.name, "users_test_ldapuser") |
|||
|
|||
|
|||
class LdapUserGroupTestCase(TestCase): |
|||
def test_create_ldap_user_group(self): |
|||
g = models.LdapUserGroup.objects.create( |
|||
gid="501", members=[], name="users_test_ldapusergroup" |
|||
) |
|||
self.assertEqual(g.name, "users_test_ldapusergroup") |
|||
|
|||
|
|||
class LdapServiceUserTestCase(TestCase): |
|||
def test_create_ldap_service_user(self): |
|||
g = models.LdapServiceUser.objects.create( |
|||
name="users_test_ldapserviceuser", |
|||
user_password="{SSHA}AbCdEfGhIjKlMnOpQrStUvWxYz987654", |
|||
) |
|||
self.assertEqual(g.name, "users_test_ldapserviceuser") |
|||
|
|||
@ -0,0 +1,29 @@ |
|||
# -*- mode: python; coding: utf-8 -*- |
|||
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il |
|||
# se veut agnostique au réseau considéré, de manière à être installable en |
|||
# quelques clics. |
|||
# |
|||
# Copyright © 2024 Caroline Canebier |
|||
# |
|||
# 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. |
|||
from os.path import dirname, abspath |
|||
from django.conf import settings as django_settings |
|||
|
|||
def load_tests(loader, tests, pattern): |
|||
""" |
|||
As this is an optional app, load its tests only if it is installed. |
|||
""" |
|||
if "api" in django_settings.INSTALLED_APPS: |
|||
return loader.discover(start_dir=dirname(abspath(__file__)), pattern=pattern) |
|||
@ -0,0 +1,29 @@ |
|||
# -*- mode: python; coding: utf-8 -*- |
|||
# Re2o est un logiciel d'administration développé initiallement au Rézo Metz. Il |
|||
# se veut agnostique au réseau considéré, de manière à être installable en |
|||
# quelques clics. |
|||
# |
|||
# Copyright © 2024 Caroline Canebier |
|||
# |
|||
# 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. |
|||
from os.path import dirname, abspath |
|||
from django.conf import settings as django_settings |
|||
|
|||
def load_tests(loader, tests, pattern): |
|||
""" |
|||
As this is an optional app, load its tests only if it is installed. |
|||
""" |
|||
if "api" in django_settings.INSTALLED_APPS: |
|||
return loader.discover(start_dir=dirname(abspath(__file__)), pattern=pattern) |
|||
Loading…
Reference in new issue