test_roleadmin_views.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from django.urls import reverse
  2. from misago.acl.models import Role
  3. from misago.acl.testutils import fake_post_data
  4. from misago.admin.testutils import AdminTestCase
  5. def fake_data(data_dict):
  6. return fake_post_data(Role(), data_dict)
  7. class RoleAdminViewsTests(AdminTestCase):
  8. def test_link_registered(self):
  9. """admin nav contains user roles link"""
  10. response = self.client.get(reverse('misago:admin:permissions:users:index'))
  11. self.assertContains(response, reverse('misago:admin:permissions:users:index'))
  12. def test_list_view(self):
  13. """roles list view returns 200"""
  14. response = self.client.get(reverse('misago:admin:permissions:users:index'))
  15. self.assertEqual(response.status_code, 200)
  16. def test_new_view(self):
  17. """new role view has no showstoppers"""
  18. response = self.client.get(reverse('misago:admin:permissions:users:new'))
  19. self.assertEqual(response.status_code, 200)
  20. response = self.client.post(
  21. reverse('misago:admin:permissions:users:new'), data=fake_data({
  22. 'name': 'Test Role'
  23. })
  24. )
  25. self.assertEqual(response.status_code, 302)
  26. test_role = Role.objects.get(name='Test Role')
  27. response = self.client.get(reverse('misago:admin:permissions:users:index'))
  28. self.assertEqual(response.status_code, 200)
  29. self.assertContains(response, test_role.name)
  30. def test_edit_view(self):
  31. """edit role view has no showstoppers"""
  32. self.client.post(
  33. reverse('misago:admin:permissions:users:new'), data=fake_data({
  34. 'name': 'Test Role'
  35. })
  36. )
  37. test_role = Role.objects.get(name='Test Role')
  38. response = self.client.get(
  39. reverse('misago:admin:permissions:users:edit', kwargs={'pk': test_role.pk})
  40. )
  41. self.assertEqual(response.status_code, 200)
  42. self.assertContains(response, 'Test Role')
  43. response = self.client.post(
  44. reverse('misago:admin:permissions:users:edit', kwargs={'pk': test_role.pk}),
  45. data=fake_data({
  46. 'name': 'Top Lel'
  47. })
  48. )
  49. self.assertEqual(response.status_code, 302)
  50. test_role = Role.objects.get(name='Top Lel')
  51. response = self.client.get(reverse('misago:admin:permissions:users:index'))
  52. self.assertEqual(response.status_code, 200)
  53. self.assertContains(response, test_role.name)
  54. def test_users_view(self):
  55. """users with this role view has no showstoppers"""
  56. response = self.client.post(
  57. reverse('misago:admin:permissions:users:new'), data=fake_data({
  58. 'name': 'Test Role'
  59. })
  60. )
  61. test_role = Role.objects.get(name='Test Role')
  62. response = self.client.get(
  63. reverse('misago:admin:permissions:users:users', kwargs={'pk': test_role.pk})
  64. )
  65. self.assertEqual(response.status_code, 302)
  66. def test_delete_view(self):
  67. """delete role view has no showstoppers"""
  68. self.client.post(
  69. reverse('misago:admin:permissions:users:new'), data=fake_data({
  70. 'name': 'Test Role'
  71. })
  72. )
  73. test_role = Role.objects.get(name='Test Role')
  74. response = self.client.post(
  75. reverse('misago:admin:permissions:users:delete', kwargs={'pk': test_role.pk})
  76. )
  77. self.assertEqual(response.status_code, 302)
  78. # Get the page twice so no alert is renderered on second request
  79. self.client.get(reverse('misago:admin:permissions:users:index'))
  80. response = self.client.get(reverse('misago:admin:permissions:users:index'))
  81. self.assertNotContains(response, test_role.name)