forked from Github-Mirrors/canaille
106 lines
3 KiB
Python
106 lines
3 KiB
Python
import ldap
|
|
import mock
|
|
import pytest
|
|
from canaille.commands import cli
|
|
from canaille.configuration import validate, ConfigurationException
|
|
|
|
|
|
def test_ldap_connection_no_remote(configuration):
|
|
validate(configuration)
|
|
|
|
|
|
def test_no_private_key(configuration):
|
|
configuration["JWT"]["PRIVATE_KEY"] = "invalid-path"
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"Private key does not exist",
|
|
):
|
|
validate(configuration)
|
|
|
|
|
|
def test_no_public_key(configuration):
|
|
configuration["JWT"]["PUBLIC_KEY"] = "invalid-path"
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"Public key does not exist",
|
|
):
|
|
validate(configuration)
|
|
|
|
|
|
def test_ldap_connection_remote(configuration):
|
|
validate(configuration, validate_remote=True)
|
|
|
|
|
|
def test_ldap_connection_remote_ldap_unreachable(configuration):
|
|
configuration["LDAP"]["URI"] = "ldap://invalid-ldap.com"
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"Could not connect to the LDAP server",
|
|
):
|
|
validate(configuration, validate_remote=True)
|
|
|
|
|
|
def test_ldap_connection_remote_ldap_wrong_credentials(configuration):
|
|
configuration["LDAP"]["BIND_PW"] = "invalid-password"
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"LDAP authentication failed with user",
|
|
):
|
|
validate(configuration, validate_remote=True)
|
|
|
|
|
|
def test_ldap_cannot_create_users(configuration):
|
|
from canaille.models import User
|
|
|
|
def fake_init(*args, **kwarg):
|
|
raise ldap.INSUFFICIENT_ACCESS
|
|
|
|
with mock.patch.object(User, "__init__", fake_init):
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"cannot create users at",
|
|
):
|
|
validate(configuration, validate_remote=True)
|
|
|
|
|
|
def test_ldap_cannot_create_groups(configuration):
|
|
from canaille.models import Group
|
|
|
|
def fake_init(*args, **kwarg):
|
|
raise ldap.INSUFFICIENT_ACCESS
|
|
|
|
with mock.patch.object(Group, "__init__", fake_init):
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"cannot create groups at",
|
|
):
|
|
validate(configuration, validate_remote=True)
|
|
|
|
|
|
def test_smtp_connection_remote_smtp_unreachable(configuration):
|
|
configuration["SMTP"]["HOST"] = "smtp://invalid-smtp.com"
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"Could not connect to the SMTP server",
|
|
):
|
|
validate(configuration, validate_remote=True)
|
|
|
|
|
|
def test_smtp_connection_remote_smtp_wrong_credentials(configuration):
|
|
configuration["SMTP"]["PASSWORD"] = "invalid-password"
|
|
with pytest.raises(
|
|
ConfigurationException,
|
|
match=r"SMTP authentication failed with user",
|
|
):
|
|
validate(configuration, validate_remote=True)
|
|
|
|
|
|
def test_check_command(testclient):
|
|
runner = testclient.app.test_cli_runner()
|
|
runner.invoke(cli, ["check"])
|
|
|
|
|
|
def test_check_command_fail(testclient):
|
|
testclient.app.config["LDAP"]["URI"] = "ldap://invalid-ldap.com"
|
|
runner = testclient.app.test_cli_runner()
|
|
runner.invoke(cli, ["check"])
|