69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
|
from django.core.management import call_command
|
||
|
from django.core.management.base import CommandError
|
||
|
from django.contrib.auth.models import User, Group
|
||
|
from django.test import TransactionTestCase
|
||
|
|
||
|
from main.models import Repo
|
||
|
|
||
|
from devel.models import UserProfile
|
||
|
|
||
|
|
||
|
class RetireUsertest(TransactionTestCase):
|
||
|
fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json']
|
||
|
|
||
|
|
||
|
def setUp(self):
|
||
|
self.username = 'joe'
|
||
|
self.user = User.objects.create(username=self.username, first_name="Joe",
|
||
|
last_name="User", email="user1@example.com")
|
||
|
|
||
|
self.profile = UserProfile.objects.create(user=self.user,
|
||
|
public_email="{}@awesome.com".format(self.user.username))
|
||
|
for name in ['Developers', 'Retired Developers']:
|
||
|
Group.objects.create(name=name)
|
||
|
|
||
|
def tearDown(self):
|
||
|
self.profile.delete()
|
||
|
self.user.delete()
|
||
|
|
||
|
def test_invalid_args(self):
|
||
|
with self.assertRaises(CommandError) as e:
|
||
|
call_command('retire_user')
|
||
|
self.assertIn('missing argument user.', str(e.exception))
|
||
|
|
||
|
def test_user_not_found(self):
|
||
|
with self.assertRaises(CommandError) as e:
|
||
|
call_command('retire_user', 'user1')
|
||
|
self.assertIn("Failed to find User 'user1'", str(e.exception))
|
||
|
|
||
|
def test_userprofile_missing(self):
|
||
|
user = User.objects.create(username='user2', first_name="Jane",
|
||
|
last_name="User2", email="user2@example.com")
|
||
|
|
||
|
with self.assertRaises(CommandError) as e:
|
||
|
call_command('retire_user', user.username)
|
||
|
self.assertIn("Failed to find UserProfile", str(e.exception))
|
||
|
user.delete()
|
||
|
|
||
|
def test_user_inactive(self):
|
||
|
call_command('retire_user', self.username)
|
||
|
user = User.objects.get(username=self.username)
|
||
|
self.assertEqual(user.is_active, False)
|
||
|
|
||
|
def test_user_moved_groups(self):
|
||
|
self.user.groups.add(Group.objects.get(name='Developers'))
|
||
|
self.user.save()
|
||
|
|
||
|
call_command('retire_user', self.username)
|
||
|
user = User.objects.get(username=self.username)
|
||
|
groups = [Group.objects.get(name='Retired Developers')]
|
||
|
self.assertEqual(list(user.groups.all()), groups)
|
||
|
|
||
|
def test_user_repos(self):
|
||
|
self.profile.allowed_repos.add(Repo.objects.get(name='Core'))
|
||
|
self.profile.save()
|
||
|
|
||
|
call_command('retire_user', self.username)
|
||
|
profile = UserProfile.objects.get(user=self.user)
|
||
|
self.assertEqual(len(profile.allowed_repos.all()), 0)
|