# HG changeset patch # User Marcin Kuzminski # Date 2017-08-20 18:48:10 # Node ID 863217ccf12259dbadf9fb2138c15d3973fec2e7 # Parent 579d82e9fbe5d741e87a5ec933e01b1aae4767eb ssh: fixed tests for disabled ssh support diff --git a/rhodecode/apps/admin/tests/test_admin_permissions.py b/rhodecode/apps/admin/tests/test_admin_permissions.py --- a/rhodecode/apps/admin/tests/test_admin_permissions.py +++ b/rhodecode/apps/admin/tests/test_admin_permissions.py @@ -18,6 +18,7 @@ # RhodeCode Enterprise Edition, including its added features, Support services, # and proprietary license terms, please see https://rhodecode.com/licenses/ +import mock import pytest from rhodecode.model.db import User, UserIpMap from rhodecode.model.meta import Session @@ -283,4 +284,17 @@ class TestAdminPermissionsController(Tes dict(csrf_token=self.csrf_token), status=302) assert_session_flash( - response, 'SSH key support is disabled in .ini file') + response, 'Updated SSH keys file') + + def test_ssh_keys_update_disabled(self): + self.log_user() + + from rhodecode.apps.admin.views.permissions import AdminPermissionsView + with mock.patch.object(AdminPermissionsView, 'ssh_enabled', + return_value=False): + response = self.app.post( + route_path('admin_permissions_ssh_keys_update'), + dict(csrf_token=self.csrf_token), status=302) + + assert_session_flash( + response, 'SSH key support is disabled in .ini file') \ No newline at end of file diff --git a/rhodecode/apps/admin/views/permissions.py b/rhodecode/apps/admin/views/permissions.py --- a/rhodecode/apps/admin/views/permissions.py +++ b/rhodecode/apps/admin/views/permissions.py @@ -371,6 +371,10 @@ class AdminPermissionsView(BaseAppView, c.whitelist_views = whitelist_views return self._get_template_context(c) + def ssh_enabled(self): + return self.request.registry.settings.get( + 'ssh.generate_authorized_keyfile') + @LoginRequired() @HasPermissionAllDecorator('hg.admin') @view_config( @@ -379,6 +383,7 @@ class AdminPermissionsView(BaseAppView, def ssh_keys(self): c = self.load_default_context() c.active = 'ssh_keys' + c.ssh_enabled = self.ssh_enabled() return self._get_template_context(c) @LoginRequired() @@ -460,8 +465,7 @@ class AdminPermissionsView(BaseAppView, _ = self.request.translate self.load_default_context() - ssh_enabled = self.request.registry.settings.get( - 'ssh.generate_authorized_keyfile') + ssh_enabled = self.ssh_enabled() key_file = self.request.registry.settings.get( 'ssh.authorized_keys_file_path') if ssh_enabled: diff --git a/rhodecode/tests/rhodecode.ini b/rhodecode/tests/rhodecode.ini --- a/rhodecode/tests/rhodecode.ini +++ b/rhodecode/tests/rhodecode.ini @@ -642,7 +642,7 @@ svn.proxy.location_root = / ## Defines if the authorized_keys file should be written on any change of ## user ssh keys, setting this to false also disables posibility of adding ## ssh keys for users from web interface. -ssh.generate_authorized_keyfile = false +ssh.generate_authorized_keyfile = true ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding` # ssh.authorized_keys_ssh_opts = @@ -650,7 +650,7 @@ ssh.generate_authorized_keyfile = false ## File to generate the authorized keys together with options ## It is possible to have multiple key files specified in `sshd_config` e.g. ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode -ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode +ssh.authorized_keys_file_path = %(here)s/rc/authorized_keys_rhodecode ## Command to execute the SSH wrapper. The binary is available in the ## rhodecode installation directory.