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("""The LDAP Login""" """ attribute of the CN must be specified""" in response.body) self.assertTrue("""Please """ """enter a number""" in response.body) def test_ldap_login(self): pass def test_ldap_login_incorrect(self): pass