2017-02-10 00:09:57 +00:00
|
|
|
import pytest
|
|
|
|
|
2018-05-29 17:50:51 +00:00
|
|
|
from util.config.validator import ValidatorContext
|
2017-02-10 00:09:57 +00:00
|
|
|
from util.config.validators import ConfigValidationException
|
|
|
|
from util.config.validators.validate_ldap import LDAPValidator
|
|
|
|
from util.morecollections import AttrDict
|
|
|
|
|
|
|
|
from test.test_ldap import mock_ldap
|
|
|
|
|
2017-04-24 18:52:30 +00:00
|
|
|
from test.fixtures import *
|
2018-05-29 17:50:51 +00:00
|
|
|
from app import config_provider
|
2017-02-10 00:09:57 +00:00
|
|
|
|
|
|
|
@pytest.mark.parametrize('unvalidated_config', [
|
|
|
|
({}),
|
|
|
|
({'AUTHENTICATION_TYPE': 'Database'}),
|
|
|
|
])
|
2017-04-24 18:52:30 +00:00
|
|
|
def test_validate_noop(unvalidated_config, app):
|
2018-05-29 17:50:51 +00:00
|
|
|
config = ValidatorContext(unvalidated_config)
|
|
|
|
config.config_provider = config_provider
|
|
|
|
LDAPValidator.validate(config)
|
2017-02-10 00:09:57 +00:00
|
|
|
|
|
|
|
@pytest.mark.parametrize('unvalidated_config', [
|
|
|
|
({'AUTHENTICATION_TYPE': 'LDAP'}),
|
|
|
|
({'AUTHENTICATION_TYPE': 'LDAP', 'LDAP_ADMIN_DN': 'foo'}),
|
|
|
|
])
|
2017-04-24 18:52:30 +00:00
|
|
|
def test_invalid_config(unvalidated_config, app):
|
2017-02-10 00:09:57 +00:00
|
|
|
with pytest.raises(ConfigValidationException):
|
2018-05-29 17:50:51 +00:00
|
|
|
config = ValidatorContext(unvalidated_config)
|
|
|
|
config.config_provider = config_provider
|
|
|
|
LDAPValidator.validate(config)
|
2017-02-10 00:09:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('uri', [
|
|
|
|
'foo',
|
|
|
|
'http://foo',
|
|
|
|
'ldap:foo',
|
|
|
|
])
|
2017-04-24 18:52:30 +00:00
|
|
|
def test_invalid_uri(uri, app):
|
2017-02-10 00:09:57 +00:00
|
|
|
config = {}
|
|
|
|
config['AUTHENTICATION_TYPE'] = 'LDAP'
|
|
|
|
config['LDAP_BASE_DN'] = ['dc=quay', 'dc=io']
|
|
|
|
config['LDAP_ADMIN_DN'] = 'uid=testy,ou=employees,dc=quay,dc=io'
|
|
|
|
config['LDAP_ADMIN_PASSWD'] = 'password'
|
|
|
|
config['LDAP_USER_RDN'] = ['ou=employees']
|
|
|
|
config['LDAP_URI'] = uri
|
|
|
|
|
|
|
|
with pytest.raises(ConfigValidationException):
|
2018-05-29 17:50:51 +00:00
|
|
|
config = ValidatorContext(config)
|
|
|
|
config.config_provider = config_provider
|
|
|
|
LDAPValidator.validate(config)
|
2017-02-10 00:09:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('username, password, expected_exception', [
|
|
|
|
('invaliduser', 'invalidpass', ConfigValidationException),
|
|
|
|
('someuser', 'invalidpass', ConfigValidationException),
|
|
|
|
('invaliduser', 'somepass', ConfigValidationException),
|
|
|
|
('someuser', 'somepass', None),
|
|
|
|
])
|
2017-04-24 18:52:30 +00:00
|
|
|
def test_validated_ldap(username, password, expected_exception, app):
|
2017-02-10 00:09:57 +00:00
|
|
|
config = {}
|
|
|
|
config['AUTHENTICATION_TYPE'] = 'LDAP'
|
|
|
|
config['LDAP_BASE_DN'] = ['dc=quay', 'dc=io']
|
|
|
|
config['LDAP_ADMIN_DN'] = 'uid=testy,ou=employees,dc=quay,dc=io'
|
|
|
|
config['LDAP_ADMIN_PASSWD'] = 'password'
|
|
|
|
config['LDAP_USER_RDN'] = ['ou=employees']
|
|
|
|
|
2018-05-29 17:50:51 +00:00
|
|
|
unvalidated_config = ValidatorContext(config)
|
|
|
|
unvalidated_config.user = AttrDict(dict(username=username))
|
|
|
|
unvalidated_config.user_password = password
|
|
|
|
unvalidated_config.config_provider = config_provider
|
|
|
|
|
2017-02-10 00:09:57 +00:00
|
|
|
if expected_exception is not None:
|
|
|
|
with pytest.raises(ConfigValidationException):
|
|
|
|
with mock_ldap():
|
2018-05-29 17:50:51 +00:00
|
|
|
LDAPValidator.validate(unvalidated_config)
|
2017-02-10 00:09:57 +00:00
|
|
|
else:
|
|
|
|
with mock_ldap():
|
2018-05-29 17:50:51 +00:00
|
|
|
LDAPValidator.validate(unvalidated_config)
|