|
|
from rhodecode.tests import *
|
|
|
from rhodecode.model.db import RhodeCodeSetting
|
|
|
from nose.plugins.skip import SkipTest
|
|
|
|
|
|
skip_ldap_test = False
|
|
|
try:
|
|
|
import ldap
|
|
|
except ImportError:
|
|
|
# means that python-ldap is not installed
|
|
|
skip_ldap_test = True
|
|
|
pass
|
|
|
|
|
|
class TestLdapSettingsController(TestController):
|
|
|
|
|
|
def test_index(self):
|
|
|
self.log_user()
|
|
|
response = self.app.get(url(controller='admin/ldap_settings',
|
|
|
action='index'))
|
|
|
self.assertTrue('LDAP administration' in response.body)
|
|
|
|
|
|
def test_ldap_save_settings(self):
|
|
|
self.log_user()
|
|
|
if skip_ldap_test:
|
|
|
raise SkipTest('skipping due to missing ldap lib')
|
|
|
|
|
|
test_url = url(controller='admin/ldap_settings',
|
|
|
action='ldap_settings')
|
|
|
|
|
|
response = self.app.post(url=test_url,
|
|
|
params={'ldap_host' : u'dc.example.com',
|
|
|
'ldap_port' : '999',
|
|
|
'ldap_tls_kind' : 'PLAIN',
|
|
|
'ldap_tls_reqcert' : 'NEVER',
|
|
|
'ldap_dn_user':'test_user',
|
|
|
'ldap_dn_pass':'test_pass',
|
|
|
'ldap_base_dn':'test_base_dn',
|
|
|
'ldap_filter':'test_filter',
|
|
|
'ldap_search_scope':'BASE',
|
|
|
'ldap_attr_login':'test_attr_login',
|
|
|
'ldap_attr_firstname':'ima',
|
|
|
'ldap_attr_lastname':'tester',
|
|
|
'ldap_attr_email':'test@example.com' })
|
|
|
|
|
|
new_settings = RhodeCodeSetting.get_ldap_settings()
|
|
|
print new_settings
|
|
|
self.assertEqual(new_settings['ldap_host'], u'dc.example.com',
|
|
|
'fail db write compare')
|
|
|
|
|
|
self.checkSessionFlash(response,
|
|
|
'Ldap settings updated successfully')
|
|
|
|
|
|
def test_ldap_error_form(self):
|
|
|
self.log_user()
|
|
|
if skip_ldap_test:
|
|
|
raise SkipTest('skipping due to missing ldap lib')
|
|
|
|
|
|
test_url = url(controller='admin/ldap_settings',
|
|
|
action='ldap_settings')
|
|
|
|
|
|
response = self.app.post(url=test_url,
|
|
|
params={'ldap_host' : '',
|
|
|
'ldap_port' : 'i-should-be-number',
|
|
|
'ldap_tls_kind' : 'PLAIN',
|
|
|
'ldap_tls_reqcert' : 'NEVER',
|
|
|
'ldap_dn_user':'',
|
|
|
'ldap_dn_pass':'',
|
|
|
'ldap_base_dn':'',
|
|
|
'ldap_filter':'',
|
|
|
'ldap_search_scope':'BASE',
|
|
|
'ldap_attr_login':'', # <----- missing required input
|
|
|
'ldap_attr_firstname':'',
|
|
|
'ldap_attr_lastname':'',
|
|
|
'ldap_attr_email':'' })
|
|
|
|
|
|
self.assertTrue("""<span class="error-message">The LDAP Login"""
|
|
|
""" attribute of the CN must be specified""" in
|
|
|
response.body)
|
|
|
|
|
|
|
|
|
|
|
|
self.assertTrue("""<span class="error-message">Please """
|
|
|
"""enter a number</span>""" in response.body)
|
|
|
|
|
|
def test_ldap_login(self):
|
|
|
pass
|
|
|
|
|
|
def test_ldap_login_incorrect(self):
|
|
|
pass
|
|
|
|