view rhodecode/tests/functional/test_admin_ldap_settings.py @ 3738:752a57988a48 beta

fixed tests for usersgroups
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 11 Apr 2013 03:36:39 +0200
parents ff2ea58debb5
children
line wrap: on
line source

from rhodecode.tests import *
from rhodecode.model.db import RhodeCodeSetting

class TestLdapSettingsController(TestController):

    def test_index(self):
        self.log_user()
        response = self.app.get(url(controller='admin/ldap_settings',
                                    action='index'))
        response.mustcontain('LDAP administration')

    def test_ldap_save_settings(self):
        self.log_user()
        if ldap_lib_installed:
            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()
        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_wrong_port_number(self):
        self.log_user()
        if ldap_lib_installed:
            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',  # bad port num
                    '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': '',
                    'ldap_attr_firstname': '',
                    'ldap_attr_lastname': '',
                    'ldap_attr_email': ''})

        response.mustcontain("""<span class="error-message">"""
                             """Please enter a number</span><br />""")

    def test_ldap_error_form(self):
        self.log_user()
        if ldap_lib_installed:
            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': 'Host',
                    'ldap_port': '123',
                    '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': ''})

        response.mustcontain("""<span class="error-message">The LDAP Login"""
                             """ attribute of the CN must be specified""")

    def test_ldap_login(self):
        pass

    def test_ldap_login_incorrect(self):
        pass