test_roleadmin_views.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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={
  40. 'pk': test_role.pk,
  41. })
  42. )
  43. self.assertEqual(response.status_code, 200)
  44. self.assertContains(response, 'Test Role')
  45. response = self.client.post(
  46. reverse('misago:admin:permissions:users:edit', kwargs={
  47. 'pk': test_role.pk,
  48. }),
  49. data=fake_data({
  50. 'name': 'Top Lel',
  51. })
  52. )
  53. self.assertEqual(response.status_code, 302)
  54. test_role = Role.objects.get(name='Top Lel')
  55. response = self.client.get(reverse('misago:admin:permissions:users:index'))
  56. self.assertEqual(response.status_code, 200)
  57. self.assertContains(response, test_role.name)
  58. def test_users_view(self):
  59. """users with this role view has no showstoppers"""
  60. response = self.client.post(
  61. reverse('misago:admin:permissions:users:new'), data=fake_data({
  62. 'name': 'Test Role',
  63. })
  64. )
  65. test_role = Role.objects.get(name='Test Role')
  66. response = self.client.get(
  67. reverse('misago:admin:permissions:users:users', kwargs={
  68. 'pk': test_role.pk,
  69. })
  70. )
  71. self.assertEqual(response.status_code, 302)
  72. def test_delete_view(self):
  73. """delete role view has no showstoppers"""
  74. self.client.post(
  75. reverse('misago:admin:permissions:users:new'), data=fake_data({
  76. 'name': 'Test Role',
  77. })
  78. )
  79. test_role = Role.objects.get(name='Test Role')
  80. response = self.client.post(
  81. reverse('misago:admin:permissions:users:delete', kwargs={
  82. 'pk': test_role.pk,
  83. })
  84. )
  85. self.assertEqual(response.status_code, 302)
  86. # Get the page twice so no alert is renderered on second request
  87. self.client.get(reverse('misago:admin:permissions:users:index'))
  88. response = self.client.get(reverse('misago:admin:permissions:users:index'))
  89. self.assertNotContains(response, test_role.name)