Show More
@@ -309,7 +309,7 b'' | |||||
309 | <div class="label"> |
|
309 | <div class="label"> | |
310 | <label for="password">${_('Password')}:</label> |
|
310 | <label for="password">${_('Password')}:</label> | |
311 | %if h.HasPermissionAny('hg.password_reset.enabled')(): |
|
311 | %if h.HasPermissionAny('hg.password_reset.enabled')(): | |
312 | <span class="forgot_password">${h.link_to(_('(Forgot password?)'),h.route_path('reset_password'))}</span> |
|
312 | <span class="forgot_password">${h.link_to(_('(Forgot password?)'),h.route_path('reset_password'), class_='pwd_reset')}</span> | |
313 | %endif |
|
313 | %endif | |
314 | </div> |
|
314 | </div> | |
315 | <div class="input"> |
|
315 | <div class="input"> |
@@ -25,7 +25,8 b' import pytest' | |||||
25 |
|
25 | |||
26 | from rhodecode.config.routing import ADMIN_PREFIX |
|
26 | from rhodecode.config.routing import ADMIN_PREFIX | |
27 | from rhodecode.tests import ( |
|
27 | from rhodecode.tests import ( | |
28 | assert_session_flash, url, HG_REPO, TEST_USER_ADMIN_LOGIN) |
|
28 | TestController, assert_session_flash, clear_all_caches, url, | |
|
29 | HG_REPO, TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS) | |||
29 | from rhodecode.tests.fixture import Fixture |
|
30 | from rhodecode.tests.fixture import Fixture | |
30 | from rhodecode.tests.utils import AssertResponse, get_session_from_response |
|
31 | from rhodecode.tests.utils import AssertResponse, get_session_from_response | |
31 | from rhodecode.lib.auth import check_password, generate_auth_token |
|
32 | from rhodecode.lib.auth import check_password, generate_auth_token | |
@@ -39,6 +40,7 b' fixture = Fixture()' | |||||
39 |
|
40 | |||
40 | # Hardcode URLs because we don't have a request object to use |
|
41 | # Hardcode URLs because we don't have a request object to use | |
41 | # pyramids URL generation methods. |
|
42 | # pyramids URL generation methods. | |
|
43 | index_url = '/' | |||
42 | login_url = ADMIN_PREFIX + '/login' |
|
44 | login_url = ADMIN_PREFIX + '/login' | |
43 | logut_url = ADMIN_PREFIX + '/logout' |
|
45 | logut_url = ADMIN_PREFIX + '/logout' | |
44 | register_url = ADMIN_PREFIX + '/register' |
|
46 | register_url = ADMIN_PREFIX + '/register' | |
@@ -517,3 +519,70 b' class TestLoginController:' | |||||
517 | repo_name=HG_REPO, revision='tip', |
|
519 | repo_name=HG_REPO, revision='tip', | |
518 | api_key=new_auth_token.api_key), |
|
520 | api_key=new_auth_token.api_key), | |
519 | status=302) |
|
521 | status=302) | |
|
522 | ||||
|
523 | ||||
|
524 | class TestPasswordReset(TestController): | |||
|
525 | ||||
|
526 | @pytest.mark.parametrize( | |||
|
527 | 'pwd_reset_setting, show_link, show_reset', [ | |||
|
528 | ('hg.password_reset.enabled', True, True), | |||
|
529 | ('hg.password_reset.hidden', False, True), | |||
|
530 | ('hg.password_reset.disabled', False, False), | |||
|
531 | ]) | |||
|
532 | def test_password_reset_settings( | |||
|
533 | self, pwd_reset_setting, show_link, show_reset): | |||
|
534 | clear_all_caches() | |||
|
535 | self.log_user(TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS) | |||
|
536 | params = { | |||
|
537 | 'csrf_token': self.csrf_token, | |||
|
538 | 'anonymous': 'True', | |||
|
539 | 'default_register': 'hg.register.auto_activate', | |||
|
540 | 'default_register_message': '', | |||
|
541 | 'default_password_reset': pwd_reset_setting, | |||
|
542 | 'default_extern_activate': 'hg.extern_activate.auto', | |||
|
543 | } | |||
|
544 | resp = self.app.post(url('admin_permissions_application'), params=params) | |||
|
545 | self.logout_user() | |||
|
546 | ||||
|
547 | login_page = self.app.get(login_url) | |||
|
548 | asr_login = AssertResponse(login_page) | |||
|
549 | index_page = self.app.get(index_url) | |||
|
550 | asr_index = AssertResponse(index_page) | |||
|
551 | ||||
|
552 | if show_link: | |||
|
553 | asr_login.one_element_exists('a.pwd_reset') | |||
|
554 | asr_index.one_element_exists('a.pwd_reset') | |||
|
555 | else: | |||
|
556 | asr_login.no_element_exists('a.pwd_reset') | |||
|
557 | asr_index.no_element_exists('a.pwd_reset') | |||
|
558 | ||||
|
559 | pwdreset_page = self.app.get(pwd_reset_url) | |||
|
560 | ||||
|
561 | asr_reset = AssertResponse(pwdreset_page) | |||
|
562 | if show_reset: | |||
|
563 | assert 'Send password reset email' in pwdreset_page | |||
|
564 | asr_reset.one_element_exists('#email') | |||
|
565 | asr_reset.one_element_exists('#send') | |||
|
566 | else: | |||
|
567 | assert 'Password reset has been disabled.' in pwdreset_page | |||
|
568 | asr_reset.no_element_exists('#email') | |||
|
569 | asr_reset.no_element_exists('#send') | |||
|
570 | ||||
|
571 | def test_password_form_disabled(self): | |||
|
572 | self.log_user(TEST_USER_ADMIN_LOGIN, TEST_USER_ADMIN_PASS) | |||
|
573 | params = { | |||
|
574 | 'csrf_token': self.csrf_token, | |||
|
575 | 'anonymous': 'True', | |||
|
576 | 'default_register': 'hg.register.auto_activate', | |||
|
577 | 'default_register_message': '', | |||
|
578 | 'default_password_reset': 'hg.password_reset.disabled', | |||
|
579 | 'default_extern_activate': 'hg.extern_activate.auto', | |||
|
580 | } | |||
|
581 | self.app.post(url('admin_permissions_application'), params=params) | |||
|
582 | self.logout_user() | |||
|
583 | ||||
|
584 | pwdreset_page = self.app.post( | |||
|
585 | pwd_reset_url, | |||
|
586 | {'email': 'lisa@rhodecode.com',} | |||
|
587 | ) | |||
|
588 | assert 'Password reset has been disabled.' in pwdreset_page |
General Comments 0
You need to be logged in to leave comments.
Login now