diff --git a/rhodecode/admin/views/sessions.py b/rhodecode/admin/views/sessions.py
--- a/rhodecode/admin/views/sessions.py
+++ b/rhodecode/admin/views/sessions.py
@@ -90,7 +90,7 @@ class AdminSessionSettingsView(AdminSett
self.request.session.flash(
_('Cleaned up old sessions'), queue='success')
except user_sessions.CleanupCommand as msg:
- self.request.session.flash(msg, category='warning')
+ self.request.session.flash(msg.message, queue='warning')
except Exception as e:
log.exception('Failed session cleanup')
self.request.session.flash(
diff --git a/rhodecode/admin/views/system_info.py b/rhodecode/admin/views/system_info.py
--- a/rhodecode/admin/views/system_info.py
+++ b/rhodecode/admin/views/system_info.py
@@ -63,7 +63,7 @@ class AdminSystemInfoSettingsView(AdminS
@view_config(
route_name='admin_settings_system', request_method='GET',
renderer='rhodecode:templates/admin/settings/settings.mako')
- def settings_sessions(self):
+ def settings_system_info(self):
_ = self.request.translate
c.active = 'system'
@@ -169,7 +169,7 @@ class AdminSystemInfoSettingsView(AdminS
@view_config(
route_name='admin_settings_system_update', request_method='GET',
renderer='rhodecode:templates/admin/settings/settings_system_update.mako')
- def settings_sessions_cleanup(self):
+ def settings_system_info_check_update(self):
_ = self.request.translate
update_url = self.get_update_url()
@@ -179,9 +179,11 @@ class AdminSystemInfoSettingsView(AdminS
data = self.get_update_data(update_url)
except urllib2.URLError as e:
log.exception("Exception contacting upgrade server")
+ self.request.override_renderer = 'string'
return _err('Failed to contact upgrade server: %r' % e)
except ValueError as e:
log.exception("Bad data sent from update server")
+ self.request.override_renderer = 'string'
return _err('Bad data sent from update server')
latest = data['versions'][0]
diff --git a/rhodecode/tests/functional/test_admin_settings.py b/rhodecode/tests/functional/test_admin_settings.py
--- a/rhodecode/tests/functional/test_admin_settings.py
+++ b/rhodecode/tests/functional/test_admin_settings.py
@@ -32,11 +32,11 @@ from rhodecode.tests.utils import Assert
UPDATE_DATA_QUALNAME = (
- 'rhodecode.controllers.admin.settings.SettingsController.get_update_data')
+ 'rhodecode.admin.views.system_info.AdminSystemInfoSettingsView.get_update_data')
@pytest.mark.usefixtures('autologin_user', 'app')
-class TestAdminSettingsController:
+class TestAdminSettingsController(object):
@pytest.mark.parametrize('urlname', [
'admin_settings_vcs',
@@ -46,7 +46,6 @@ class TestAdminSettingsController:
'admin_settings_email',
'admin_settings_hooks',
'admin_settings_search',
- 'admin_settings_system',
])
def test_simple_get(self, urlname, app):
app.get(url(urlname))
@@ -85,46 +84,9 @@ class TestAdminSettingsController:
response.mustcontain(no=['test_hooks_2'])
response.mustcontain(no=['cd /tmp2'])
- def test_system_update_new_version(self):
- update_data = {
- 'versions': [
- {
- 'version': '100.3.1415926535',
- 'general': 'The latest version we are ever going to ship'
- },
- {
- 'version': '0.0.0',
- 'general': 'The first version we ever shipped'
- }
- ]
- }
- with mock.patch(UPDATE_DATA_QUALNAME, return_value=update_data):
- response = self.app.get(url('admin_settings_system_update'))
- response.mustcontain('A new version is available')
-
- def test_system_update_nothing_new(self):
- update_data = {
- 'versions': [
- {
- 'version': '0.0.0',
- 'general': 'The first version we ever shipped'
- }
- ]
- }
- with mock.patch(UPDATE_DATA_QUALNAME, return_value=update_data):
- response = self.app.get(url('admin_settings_system_update'))
- response.mustcontain(
- 'You already have the latest stable version.')
-
- def test_system_update_bad_response(self):
- with mock.patch(UPDATE_DATA_QUALNAME, side_effect=ValueError('foo')):
- response = self.app.get(url('admin_settings_system_update'))
- response.mustcontain(
- 'Bad data sent from update server')
-
@pytest.mark.usefixtures('autologin_user', 'app')
-class TestAdminSettingsGlobal:
+class TestAdminSettingsGlobal(object):
def test_pre_post_code_code_active(self, csrf_token):
pre_code = 'rc-pre-code-187652122'
@@ -211,7 +173,7 @@ class TestAdminSettingsGlobal:
@pytest.mark.usefixtures('autologin_user', 'app')
-class TestAdminSettingsVcs:
+class TestAdminSettingsVcs(object):
def test_contains_svn_default_patterns(self, app):
response = app.get(url('admin_settings_vcs'))
@@ -463,7 +425,7 @@ class TestOpenSourceLicenses(object):
}
}
read_licenses_patch = mock.patch(
- 'rhodecode.admin.views.read_opensource_licenses',
+ 'rhodecode.admin.views.open_source_licenses.read_opensource_licenses',
return_value=sample_licenses)
with read_licenses_patch:
response = self.app.get(self._get_url(), status=200)
@@ -486,8 +448,90 @@ class TestOpenSourceLicenses(object):
self.app.get(self._get_url(), status=403)
+@pytest.mark.usefixtures('app')
+class TestUserSessions(object):
+
+ def _get_url(self, name='admin_settings_sessions'):
+ return {
+ 'admin_settings_sessions': ADMIN_PREFIX + '/settings/sessions',
+ 'admin_settings_sessions_cleanup': ADMIN_PREFIX + '/settings/sessions/cleanup'
+ }[name]
+
+ def test_forbidden_when_normal_user(self, autologin_regular_user):
+ self.app.get(self._get_url(), status=403)
+
+ def test_show_sessions_page(self, autologin_user):
+ response = self.app.get(self._get_url(), status=200)
+ response.mustcontain('file')
+
+ def test_cleanup_old_sessions(self, autologin_user, csrf_token):
+
+ post_data = {
+ 'csrf_token': csrf_token,
+ 'expire_days': '60'
+ }
+ response = self.app.post(
+ self._get_url('admin_settings_sessions_cleanup'), params=post_data,
+ status=302)
+ assert_session_flash(response, 'Please execute this command')
+
+
+@pytest.mark.usefixtures('app')
+class TestAdminSystemInfo(object):
+ def _get_url(self, name='admin_settings_system'):
+ return {
+ 'admin_settings_system': ADMIN_PREFIX + '/settings/system',
+ 'admin_settings_system_update': ADMIN_PREFIX + '/settings/system/updates',
+ }[name]
+
+ def test_forbidden_when_normal_user(self, autologin_regular_user):
+ self.app.get(self._get_url(), status=403)
+
+ def test_system_info_page(self, autologin_user):
+ response = self.app.get(self._get_url())
+ response.mustcontain('RhodeCode Community Edition, version {}'.format(
+ rhodecode.__version__))
+
+ def test_system_update_new_version(self, autologin_user):
+ update_data = {
+ 'versions': [
+ {
+ 'version': '100.3.1415926535',
+ 'general': 'The latest version we are ever going to ship'
+ },
+ {
+ 'version': '0.0.0',
+ 'general': 'The first version we ever shipped'
+ }
+ ]
+ }
+ with mock.patch(UPDATE_DATA_QUALNAME, return_value=update_data):
+ response = self.app.get(self._get_url('admin_settings_system_update'))
+ response.mustcontain('A new version is available')
+
+ def test_system_update_nothing_new(self, autologin_user):
+ update_data = {
+ 'versions': [
+ {
+ 'version': '0.0.0',
+ 'general': 'The first version we ever shipped'
+ }
+ ]
+ }
+ with mock.patch(UPDATE_DATA_QUALNAME, return_value=update_data):
+ response = self.app.get(self._get_url('admin_settings_system_update'))
+ response.mustcontain(
+ 'You already have the latest stable version.')
+
+ def test_system_update_bad_response(self, autologin_user):
+ with mock.patch(UPDATE_DATA_QUALNAME, side_effect=ValueError('foo')):
+ response = self.app.get(self._get_url('admin_settings_system_update'))
+ response.mustcontain(
+ 'Bad data sent from update server')
+
+
@pytest.mark.usefixtures("app")
-class TestAdminSettingsIssueTracker:
+class TestAdminSettingsIssueTracker(object):
RC_PREFIX = 'rhodecode_'
SHORT_PATTERN_KEY = 'issuetracker_pat_'
PATTERN_KEY = RC_PREFIX + SHORT_PATTERN_KEY