asynchronous refactoring
- don't execute celery tasks directly - introduce optional parameters to fileserver tasks to allow chaining - handle user/group/key create and delete tasks in new osusers.signals class - adapt unit tests - change TaskResults model to store the task signatures - generalize the local settings' logging configuration
This commit is contained in:
parent
bcfea10e6f
commit
d5bba7a22d
12 changed files with 290 additions and 170 deletions
|
@ -128,8 +128,12 @@ class AdditionalGroupTest(TestCaseWithCeleryTasks):
|
|||
addgroup = AdditionalGroup(user=self.user, group=group2)
|
||||
addgroup.save()
|
||||
taskres = TaskResult.objects.all()
|
||||
self.assertTrue(len(taskres), 1)
|
||||
self.assertEqual(taskres[0].task_name, 'setup_file_sftp_userdir')
|
||||
self.assertTrue(len(taskres), 4)
|
||||
creators = [r.creator for r in taskres]
|
||||
for tcount, tcreator in [
|
||||
(2, 'handle_group_created'), (1, 'handle_user_created'),
|
||||
(1, 'handle_user_added_to_group')]:
|
||||
self.assertEqual(creators.count(tcreator), tcount)
|
||||
|
||||
def test_delete(self):
|
||||
group2 = Group.objects.create(groupname='test2', gid=1001)
|
||||
|
@ -167,9 +171,9 @@ class GroupTest(TestCaseWithCeleryTasks):
|
|||
self.assertEqual(len(Group.objects.all()), 1)
|
||||
group.delete()
|
||||
self.assertEqual(len(Group.objects.all()), 0)
|
||||
self.assertEqual(len(TaskResult.objects.all()), 1)
|
||||
self.assertEqual(len(TaskResult.objects.all()), 2)
|
||||
tr = TaskResult.objects.first()
|
||||
self.assertEqual(tr.task_name, 'delete_ldap_group')
|
||||
self.assertEqual(tr.creator, 'handle_group_created')
|
||||
|
||||
|
||||
class ShadowManagerTest(TestCaseWithCeleryTasks):
|
||||
|
@ -275,10 +279,12 @@ class UserManagerTest(TestCaseWithCeleryTasks):
|
|||
def test_create_user_tasks(self):
|
||||
User.objects.create_user(customer=self.customer)
|
||||
taskres = TaskResult.objects.all()
|
||||
self.assertEqual(len(taskres), 2)
|
||||
tasknames = [r.task_name for r in taskres]
|
||||
self.assertEqual(tasknames.count('setup_file_sftp_userdir'), 1)
|
||||
self.assertEqual(tasknames.count('setup_file_mail_userdir'), 1)
|
||||
self.assertEqual(len(taskres), 3)
|
||||
creators = [r.creator for r in taskres]
|
||||
for creator in [
|
||||
'handle_group_created', 'handle_user_created',
|
||||
'handle_user_password_set']:
|
||||
self.assertIn(creator, creators)
|
||||
|
||||
def test_create_user_second(self):
|
||||
User.objects.create_user(customer=self.customer)
|
||||
|
@ -351,24 +357,26 @@ class UserTest(TestCaseWithCeleryTasks):
|
|||
|
||||
def test_save(self):
|
||||
user = User.objects.create_user(self.customer)
|
||||
TaskResult.objects.all().delete()
|
||||
user.save()
|
||||
taskres = TaskResult.objects.all()
|
||||
self.assertEqual(len(taskres), 2)
|
||||
task_names = [r.task_name for r in taskres]
|
||||
self.assertIn('setup_file_sftp_userdir', task_names)
|
||||
self.assertIn('setup_file_mail_userdir', task_names)
|
||||
self.assertEqual(len(taskres), 3)
|
||||
creators = [r.creator for r in taskres]
|
||||
for task in [
|
||||
'handle_group_created', 'handle_user_created',
|
||||
'handle_user_password_set']:
|
||||
self.assertIn(task, creators)
|
||||
|
||||
def test_delete_only_user(self):
|
||||
user = User.objects.create_user(self.customer)
|
||||
TaskResult.objects.all().delete()
|
||||
user.delete()
|
||||
taskres = TaskResult.objects.all()
|
||||
self.assertEqual(len(taskres), 3)
|
||||
tasknames = [r.task_name for r in taskres]
|
||||
self.assertEqual(tasknames.count('delete_file_mail_userdir'), 1)
|
||||
self.assertEqual(tasknames.count('delete_file_sftp_userdir'), 1)
|
||||
self.assertEqual(tasknames.count('delete_ldap_group'), 1)
|
||||
self.assertEqual(len(taskres), 6)
|
||||
creators = [r.creator for r in taskres]
|
||||
for task in [
|
||||
'handle_group_created', 'handle_user_created',
|
||||
'handle_user_password_set', 'handle_user_deleted',
|
||||
'handle_group_deleted', 'handle_user_deleted']:
|
||||
self.assertIn(task, creators)
|
||||
self.assertEqual(len(User.objects.all()), 0)
|
||||
|
||||
def test_delete_additional_groups(self):
|
||||
|
@ -381,11 +389,12 @@ class UserTest(TestCaseWithCeleryTasks):
|
|||
TaskResult.objects.all().delete()
|
||||
user.delete()
|
||||
taskres = TaskResult.objects.all()
|
||||
self.assertEqual(len(taskres), 3)
|
||||
tasknames = [t.task_name for t in taskres]
|
||||
self.assertEqual(tasknames.count('delete_file_mail_userdir'), 1)
|
||||
self.assertEqual(tasknames.count('delete_file_sftp_userdir'), 1)
|
||||
self.assertEqual(tasknames.count('delete_ldap_group'), 1)
|
||||
self.assertEqual(len(taskres), 5)
|
||||
creators = [t.creator for t in taskres]
|
||||
for tcount, tcreator in [
|
||||
(2, 'handle_user_removed_from_group'), (2, 'handle_user_deleted'),
|
||||
(1, 'handle_group_deleted')]:
|
||||
self.assertEqual(creators.count(tcreator), tcount)
|
||||
self.assertEqual(len(User.objects.all()), 0)
|
||||
self.assertEqual(len(AdditionalGroup.objects.all()), 0)
|
||||
|
||||
|
@ -497,7 +506,7 @@ class SshPublicKeyTest(TestCaseWithCeleryTasks):
|
|||
taskresults = TaskResult.objects.all()
|
||||
self.assertEqual(len(taskresults), 1)
|
||||
self.assertEqual(
|
||||
taskresults[0].task_name, 'set_file_ssh_authorized_keys')
|
||||
taskresults[0].creator, 'handle_ssh_keys_changed')
|
||||
|
||||
def test_call_tasks_on_delete(self):
|
||||
key = SshPublicKey.objects.create_ssh_public_key(
|
||||
|
@ -507,4 +516,4 @@ class SshPublicKeyTest(TestCaseWithCeleryTasks):
|
|||
taskresults = TaskResult.objects.all()
|
||||
self.assertEqual(len(taskresults), 1)
|
||||
self.assertEqual(
|
||||
taskresults[0].task_name, 'set_file_ssh_authorized_keys')
|
||||
taskresults[0].creator, 'handle_ssh_keys_changed')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue