OpenSlides/tests/participant/test_views.py

125 lines
5.7 KiB
Python
Raw Normal View History

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Tests for views of openslides.participant
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:copyright: 20112013 by OpenSlides team, see AUTHORS.
:license: GNU GPL, see LICENSE for more details.
"""
import re
from django.test.client import Client
from openslides.config.api import config
from openslides.utils.test import TestCase
from openslides.participant.models import User, Group, get_protected_perm
class GroupViews(TestCase):
"""
Tests the detail view for groups and later also the other views.
"""
def setUp(self):
2013-06-16 12:00:57 +02:00
self.user_1 = User.objects.get(pk=1)
self.user_1.first_name = 'admins_first_name'
self.user_1.save()
self.user_2 = User.objects.create(last_name='uquahx3Wohtieph9baer',
first_name='aWei4ien6Se0vie0xeiv',
username='aWei4ien6Se0vie0xeiv uquahx3Wohtieph9baer')
self.delegate = Group.objects.get(pk=3)
self.user_1.groups.add(self.delegate)
self.user_2.groups.add(self.delegate)
self.client = Client()
login_user = User.objects.create(username='loginusername', is_superuser=True)
login_user.reset_password('default')
self.client.login(username='loginusername', password='default')
def test_detail(self):
self.assertFalse(config['participant_sort_users_by_first_name'])
response = self.client.get('/participant/group/3/')
2013-06-16 12:00:57 +02:00
pattern = r'admins_first_name Administrator|aWei4ien6Se0vie0xeiv uquahx3Wohtieph9baer'
match = re.findall(pattern, response.content)
2013-06-16 12:00:57 +02:00
self.assertEqual(match[0], 'admins_first_name Administrator')
self.assertEqual(match[1], 'aWei4ien6Se0vie0xeiv uquahx3Wohtieph9baer')
config['participant_sort_users_by_first_name'] = True
self.assertTrue(config['participant_sort_users_by_first_name'])
response = self.client.get('/participant/group/3/')
2013-06-16 12:00:57 +02:00
pattern = r'admins_first_name Administrator|aWei4ien6Se0vie0xeiv uquahx3Wohtieph9baer'
match = re.findall(pattern, response.content)
2013-06-16 12:00:57 +02:00
self.assertEqual(match[1], 'admins_first_name Administrator')
self.assertEqual(match[0], 'aWei4ien6Se0vie0xeiv uquahx3Wohtieph9baer')
class LockoutProtection(TestCase):
"""
Tests that a manager user can not lockout himself by doing
something that removes his last permission to manage participants.
"""
def setUp(self):
2013-06-16 12:00:57 +02:00
self.user = User.objects.get(pk=1)
self.user.groups.add(Group.objects.get(pk=4))
self.client = Client()
2013-06-16 12:00:57 +02:00
self.client.login(username='admin', password='admin')
self.assertEqual(User.objects.count(), 1)
self.assertEqual(Group.objects.count(), 4)
2013-06-16 12:00:57 +02:00
self.assertFalse(self.user.is_superuser)
def test_delete_yourself(self):
response = self.client.get('/participant/1/del/')
self.assertRedirects(response, '/participant/1/')
self.assertTrue('You can not delete yourself.' in response.cookies['messages'].value)
response = self.client.post('/participant/1/del/',
{'yes': 'yes'})
self.assertTrue('You can not delete yourself.' in response.cookies['messages'].value)
self.assertRedirects(response, '/participant/')
self.assertEqual(User.objects.count(), 1)
def test_delete_last_manager_group(self):
response = self.client.get('/participant/group/4/del/')
self.assertRedirects(response, '/participant/group/4/')
self.assertTrue('You can not delete the last group containing the permission '
'to manage participants you are in.' in response.cookies['messages'].value)
response = self.client.post('/participant/group/4/del/',
{'yes': 'yes'})
self.assertTrue('You can not delete the last group containing the permission '
'to manage participants you are in.' in response.cookies['messages'].value)
self.assertRedirects(response, '/participant/group/')
self.assertEqual(Group.objects.count(), 4)
def test_remove_user_from_last_manager_group_via_UserUpdateView(self):
response = self.client.post('/participant/1/edit/',
{'username': 'arae0eQu8eeghoogeik0',
'groups': '3'})
self.assertFormError(
response=response,
form='form',
field=None,
errors='You can not remove the last group containing the permission to manage participants.')
def test_remove_user_from_last_manager_group_via_GroupUpdateView(self):
User.objects.get_or_create(username='foo', pk=2)
response = self.client.post('/participant/group/4/edit/',
{'name': 'ChaeFaev4leephaiChae',
'users': '2'})
self.assertFormError(
response=response,
form='form',
field=None,
errors='You can not remove yourself from the last group containing the permission to manage participants.')
def test_remove_perm_from_last_manager_group(self):
self.assertNotEqual(get_protected_perm().pk, 90)
response = self.client.post('/participant/group/4/edit/',
{'name': 'ChaeFaev4leephaiChae',
'users': '1',
'permissions': '90'})
self.assertFormError(
response=response,
form='form',
field=None,
errors='You can not remove the permission to manage participants from the last group your are in.')