123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- from django.core.urlresolvers import reverse
- from misago.acl.models import Role
- from misago.acl.testutils import fake_post_data
- from misago.admin.testutils import AdminTestCase
- from misago.forums.models import Forum, ForumRole
- def fake_data(data_dict):
- return fake_post_data(ForumRole(), data_dict)
- class ForumRoleAdminViewsTests(AdminTestCase):
- def test_link_registered(self):
- """admin nav contains forum roles link"""
- response = self.client.get(
- reverse('misago:admin:permissions:forums:index'))
- self.assertIn(reverse('misago:admin:permissions:forums:index'),
- response.content)
- def test_list_view(self):
- """roles list view returns 200"""
- response = self.client.get(
- reverse('misago:admin:permissions:forums:index'))
- self.assertEqual(response.status_code, 200)
- def test_new_view(self):
- """new role view has no showstoppers"""
- response = self.client.get(
- reverse('misago:admin:permissions:forums:new'))
- self.assertEqual(response.status_code, 200)
- response = self.client.post(
- reverse('misago:admin:permissions:forums:new'),
- data=fake_data({'name': 'Test ForumRole'}))
- self.assertEqual(response.status_code, 302)
- test_role = ForumRole.objects.get(name='Test ForumRole')
- response = self.client.get(
- reverse('misago:admin:permissions:forums:index'))
- self.assertEqual(response.status_code, 200)
- self.assertIn(test_role.name, response.content)
- def test_edit_view(self):
- """edit role view has no showstoppers"""
- self.client.post(
- reverse('misago:admin:permissions:forums:new'),
- data=fake_data({'name': 'Test ForumRole'}))
- test_role = ForumRole.objects.get(name='Test ForumRole')
- response = self.client.get(
- reverse('misago:admin:permissions:forums:edit',
- kwargs={'role_id': test_role.pk}))
- self.assertEqual(response.status_code, 200)
- self.assertIn('Test ForumRole', response.content)
- response = self.client.post(
- reverse('misago:admin:permissions:forums:edit',
- kwargs={'role_id': test_role.pk}),
- data=fake_data({'name': 'Top Lel'}))
- self.assertEqual(response.status_code, 302)
- test_role = ForumRole.objects.get(name='Top Lel')
- response = self.client.get(
- reverse('misago:admin:permissions:forums:index'))
- self.assertEqual(response.status_code, 200)
- self.assertIn(test_role.name, response.content)
- def test_delete_view(self):
- """delete role view has no showstoppers"""
- self.client.post(
- reverse('misago:admin:permissions:forums:new'),
- data=fake_data({'name': 'Test ForumRole'}))
- test_role = ForumRole.objects.get(name='Test ForumRole')
- response = self.client.post(
- reverse('misago:admin:permissions:forums:delete',
- kwargs={'role_id': test_role.pk}))
- self.assertEqual(response.status_code, 302)
- self.client.get(reverse('misago:admin:permissions:forums:index'))
- response = self.client.get(
- reverse('misago:admin:permissions:forums:index'))
- self.assertEqual(response.status_code, 200)
- self.assertTrue(test_role.name not in response.content)
- def test_change_forum_roles_view(self):
- """change forum roles perms view works"""
- root = Forum.objects.root_category()
- for descendant in root.get_descendants():
- descendant.delete()
- """
- Create forums tree for test cases:
- Category A
- + Forum B
- Category C
- + Forum D
- """
- root = Forum.objects.root_category()
- self.client.post(reverse('misago:admin:forums:nodes:new'),
- data={
- 'name': 'Category A',
- 'new_parent': root.pk,
- 'role': 'category',
- 'prune_started_after': 0,
- 'prune_replied_after': 0,
- })
- test_category = Forum.objects.get(slug='category-a')
- self.assertEqual(Forum.objects.count(), 3)
- """
- Create test roles
- """
- self.client.post(
- reverse('misago:admin:permissions:users:new'),
- data=fake_post_data(Role(), {'name': 'Test Role A'}))
- self.client.post(
- reverse('misago:admin:permissions:users:new'),
- data=fake_post_data(Role(), {'name': 'Test Role B'}))
- test_role_a = Role.objects.get(name='Test Role A')
- test_role_b = Role.objects.get(name='Test Role B')
- self.client.post(
- reverse('misago:admin:permissions:forums:new'),
- data=fake_data({'name': 'Test Comments'}))
- self.client.post(
- reverse('misago:admin:permissions:forums:new'),
- data=fake_data({'name': 'Test Full'}))
- role_comments = ForumRole.objects.get(name='Test Comments')
- role_full = ForumRole.objects.get(name='Test Full')
- """
- Test view itself
- """
- # See if form page is rendered
- response = self.client.get(
- reverse('misago:admin:forums:nodes:permissions',
- kwargs={'forum_id': test_category.pk}))
- self.assertEqual(response.status_code, 200)
- self.assertIn(test_category.name, response.content)
- self.assertIn(test_role_a.name, response.content)
- self.assertIn(test_role_b.name, response.content)
- self.assertIn(role_comments.name, response.content)
- self.assertIn(role_full.name, response.content)
- # Assign roles to forums
- response = self.client.post(
- reverse('misago:admin:forums:nodes:permissions',
- kwargs={'forum_id': test_category.pk}),
- data={
- ('%s-forum_role' % test_role_a.pk): role_full.pk,
- ('%s-forum_role' % test_role_b.pk): role_comments.pk,
- })
- self.assertEqual(response.status_code, 302)
- # Check that roles were assigned
- self.assertEqual(
- test_category.forum_role_set.get(role=test_role_a).forum_role_id,
- role_full.pk)
- self.assertEqual(
- test_category.forum_role_set.get(role=test_role_b).forum_role_id,
- role_comments.pk)
- def test_change_role_forums_permissions_view(self):
- """change role forums perms view works"""
- self.client.post(
- reverse('misago:admin:permissions:users:new'),
- data=fake_post_data(Role(), {'name': 'Test ForumRole'}))
- test_role = Role.objects.get(name='Test ForumRole')
- root = Forum.objects.root_category()
- for descendant in root.get_descendants():
- descendant.delete()
- self.assertEqual(Forum.objects.count(), 2)
- response = self.client.get(
- reverse('misago:admin:permissions:users:forums',
- kwargs={'role_id': test_role.pk}))
- self.assertEqual(response.status_code, 302)
- """
- Create forums tree for test cases:
- Category A
- + Forum B
- Category C
- + Forum D
- """
- root = Forum.objects.root_category()
- self.client.post(reverse('misago:admin:forums:nodes:new'),
- data={
- 'name': 'Category A',
- 'new_parent': root.pk,
- 'role': 'category',
- 'prune_started_after': 0,
- 'prune_replied_after': 0,
- })
- self.client.post(reverse('misago:admin:forums:nodes:new'),
- data={
- 'name': 'Category C',
- 'new_parent': root.pk,
- 'role': 'category',
- 'prune_started_after': 0,
- 'prune_replied_after': 0,
- })
- category_a = Forum.objects.get(slug='category-a')
- category_c = Forum.objects.get(slug='category-c')
- self.client.post(reverse('misago:admin:forums:nodes:new'),
- data={
- 'name': 'Forum B',
- 'new_parent': category_a.pk,
- 'role': 'forum',
- 'prune_started_after': 0,
- 'prune_replied_after': 0,
- })
- forum_b = Forum.objects.get(slug='forum-b')
- self.client.post(reverse('misago:admin:forums:nodes:new'),
- data={
- 'name': 'Forum D',
- 'new_parent': category_c.pk,
- 'role': 'forum',
- 'prune_started_after': 0,
- 'prune_replied_after': 0,
- })
- forum_d = Forum.objects.get(slug='forum-d')
- self.assertEqual(Forum.objects.count(), 6)
- # See if form page is rendered
- response = self.client.get(
- reverse('misago:admin:permissions:users:forums',
- kwargs={'role_id': test_role.pk}))
- self.assertEqual(response.status_code, 200)
- self.assertIn(category_a.name, response.content)
- self.assertIn(forum_b.name, response.content)
- self.assertIn(category_c.name, response.content)
- self.assertIn(forum_d.name, response.content)
- # Set test roles
- self.client.post(
- reverse('misago:admin:permissions:forums:new'),
- data=fake_data({'name': 'Test Comments'}))
- role_comments = ForumRole.objects.get(name='Test Comments')
- self.client.post(
- reverse('misago:admin:permissions:forums:new'),
- data=fake_data({'name': 'Test Full'}))
- role_full = ForumRole.objects.get(name='Test Full')
- # See if form contains those roles
- response = self.client.get(
- reverse('misago:admin:permissions:users:forums',
- kwargs={'role_id': test_role.pk}))
- self.assertEqual(response.status_code, 200)
- self.assertIn(role_comments.name, response.content)
- self.assertIn(role_full.name, response.content)
- # Assign roles to forums
- response = self.client.post(
- reverse('misago:admin:permissions:users:forums',
- kwargs={'role_id': test_role.pk}),
- data={
- ('%s-role' % category_a.pk): role_comments.pk,
- ('%s-role' % forum_b.pk): role_comments.pk,
- ('%s-role' % category_c.pk): role_full.pk,
- ('%s-role' % forum_d.pk): role_full.pk,
- })
- self.assertEqual(response.status_code, 302)
- # Check that roles were assigned
- self.assertEqual(
- test_role.forums_acls.get(forum=category_a).forum_role_id,
- role_comments.pk)
- self.assertEqual(
- test_role.forums_acls.get(forum=forum_b).forum_role_id,
- role_comments.pk)
- self.assertEqual(
- test_role.forums_acls.get(forum=category_c).forum_role_id,
- role_full.pk)
- self.assertEqual(
- test_role.forums_acls.get(forum=forum_d).forum_role_id,
- role_full.pk)
|