Mercurial > kallithea
diff rhodecode/tests/functional/test_admin.py @ 3063:ca2b21819dfd beta
Implemented better support for Wildcard queries
add username column to journal for caching logs after user deletion
added tests for admin journal
migrations
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 05 Dec 2012 23:59:13 +0100 |
parents | dd06bdf974c8 |
children | cc7eedb5323c |
line wrap: on
line diff
--- a/rhodecode/tests/functional/test_admin.py Wed Dec 05 21:14:31 2012 +0100 +++ b/rhodecode/tests/functional/test_admin.py Wed Dec 05 23:59:13 2012 +0100 @@ -1,9 +1,103 @@ +import os +import csv +import datetime from rhodecode.tests import * +from rhodecode.model.db import UserLog +from rhodecode.model.meta import Session +from rhodecode.lib.utils2 import safe_unicode + +dn = os.path.dirname +FIXTURES = os.path.join(dn(dn(os.path.abspath(__file__))), 'fixtures') + class TestAdminController(TestController): + @classmethod + def setup_class(cls): + UserLog.query().delete() + Session().commit() + with open(os.path.join(FIXTURES, 'journal_dump.csv')) as f: + for row in csv.DictReader(f): + ul = UserLog() + for k, v in row.iteritems(): + v = safe_unicode(v) + if k == 'action_date': + v = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S.%f') + setattr(ul, k, v) + Session().add(ul) + Session().commit() + + @classmethod + def teardown_class(cls): + UserLog.query().delete() + Session().commit() + def test_index(self): self.log_user() response = self.app.get(url(controller='admin/admin', action='index')) - assert 'Admin journal' in response.body, 'No proper title in dashboard' - # Test response... + response.mustcontain('Admin journal') + + def test_filter_all_entries(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index',)) + response.mustcontain('2034 entries') + + def test_filter_journal_filter_exact_match_on_repository(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='repository:rhodecode')) + response.mustcontain('3 entries') + + def test_filter_journal_filter_wildcard_on_repository(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='repository:*test*')) + response.mustcontain('862 entries') + + def test_filter_journal_filter_prefix_on_repository(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='repository:test*')) + response.mustcontain('257 entries') + + def test_filter_journal_filter_prefix_on_repository_and_user(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='repository:test* AND username:demo')) + response.mustcontain('130 entries') + + def test_filter_journal_filter_prefix_on_repository_or_other_repo(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='repository:test* OR repository:rhodecode')) + response.mustcontain('260 entries') # 257 + 3 + + def test_filter_journal_filter_exact_match_on_username(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='username:demo')) + response.mustcontain('1087 entries') + + def test_filter_journal_filter_wildcard_on_username(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='username:*test*')) + response.mustcontain('100 entries') + + def test_filter_journal_filter_prefix_on_username(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='username:demo*')) + response.mustcontain('1101 entries') + + def test_filter_journal_filter_prefix_on_user_or_other_user(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='username:demo OR username:volcan')) + response.mustcontain('1095 entries') # 1087 + 8 + + def test_filter_journal_filter_wildcard_on_action(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='action:*pull_request*')) + response.mustcontain('187 entries') \ No newline at end of file