mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
94 lines
2.8 KiB
Python
94 lines
2.8 KiB
Python
import pytest
|
|
import os
|
|
|
|
from yunohost.authenticators.ldap_admin import Authenticator as LDAPAuth
|
|
from yunohost.tools import tools_rootpw
|
|
from yunohost.user import user_create, user_list, user_update, user_delete
|
|
from yunohost.domain import _get_maindomain
|
|
|
|
from moulinette import m18n
|
|
from moulinette.core import MoulinetteError
|
|
|
|
|
|
def setup_function(function):
|
|
|
|
for u in user_list()["users"]:
|
|
user_delete(u, purge=True)
|
|
|
|
maindomain = _get_maindomain()
|
|
|
|
if os.system("systemctl is-active slapd") != 0:
|
|
os.system("systemctl start slapd && sleep 3")
|
|
|
|
user_create("alice", "Alice", "White", maindomain, "Yunohost", admin=True)
|
|
user_create("bob", "Bob", "Snow", maindomain, "test123Ynh")
|
|
|
|
|
|
def teardown_function():
|
|
|
|
os.system("systemctl is-active slapd || systemctl start slapd && sleep 5")
|
|
|
|
for u in user_list()["users"]:
|
|
user_delete(u, purge=True)
|
|
|
|
|
|
def test_authenticate():
|
|
LDAPAuth().authenticate_credentials(credentials="alice:Yunohost")
|
|
|
|
|
|
def test_authenticate_with_no_user():
|
|
|
|
with pytest.raises(MoulinetteError):
|
|
LDAPAuth().authenticate_credentials(credentials="Yunohost")
|
|
|
|
with pytest.raises(MoulinetteError):
|
|
LDAPAuth().authenticate_credentials(credentials=":Yunohost")
|
|
|
|
|
|
def test_authenticate_with_user_who_is_not_admin():
|
|
|
|
with pytest.raises(MoulinetteError) as exception:
|
|
LDAPAuth().authenticate_credentials(credentials="bob:test123Ynh")
|
|
|
|
translation = m18n.n("invalid_password")
|
|
expected_msg = translation.format()
|
|
assert expected_msg in str(exception)
|
|
|
|
|
|
def test_authenticate_with_wrong_password():
|
|
with pytest.raises(MoulinetteError) as exception:
|
|
LDAPAuth().authenticate_credentials(credentials="alice:bad_password_lul")
|
|
|
|
translation = m18n.n("invalid_password")
|
|
expected_msg = translation.format()
|
|
assert expected_msg in str(exception)
|
|
|
|
|
|
def test_authenticate_server_down(mocker):
|
|
os.system("systemctl stop slapd && sleep 5")
|
|
|
|
# Now if slapd is down, moulinette tries to restart it
|
|
mocker.patch("os.system")
|
|
mocker.patch("time.sleep")
|
|
with pytest.raises(MoulinetteError) as exception:
|
|
LDAPAuth().authenticate_credentials(credentials="alice:Yunohost")
|
|
|
|
assert "Unable to reach LDAP server" in str(exception)
|
|
|
|
|
|
def test_authenticate_change_password():
|
|
|
|
LDAPAuth().authenticate_credentials(credentials="yunohost")
|
|
|
|
tools_rootpw("plopette", check_strength=False)
|
|
|
|
with pytest.raises(MoulinetteError) as exception:
|
|
LDAPAuth().authenticate_credentials(credentials="alice:Yunohost")
|
|
|
|
translation = m18n.n("invalid_password")
|
|
expected_msg = translation.format()
|
|
assert expected_msg in str(exception)
|
|
|
|
user_update("alice", password="plopette")
|
|
|
|
LDAPAuth().authenticate_credentials(credentials="alice:plopette")
|