def create_project(**kwargs): from Q.questionnaire.models.models_projects import QProject _project_name = kwargs.pop("name") _project_title = kwargs.pop("title") _project_email = kwargs.pop("email") _project_url = kwargs.pop("url", None) _project_description = kwargs.pop("description", None) _project_authenticated = kwargs.pop("authenticated", False) _project_ontologies = kwargs.pop("ontologies", []) with transaction.atomic(): project = QProject( name=_project_name, title=_project_title, email=_project_email, ) if _project_url: project.url = _project_url if _project_description: project.description = _project_description if _project_authenticated: project.authenticated = _project_authenticated project.save() for ontology in _project_ontologies: project.ontologies.add(ontology) project.save() return project
def setUp(self): super(TestQUser, self).setUp() self.test_project_name = "test_project" self.test_project = QProject( name=self.test_project_name, title=self.test_project_name, ) self.test_project.save()
class TestQProject(TestQBase): def setUp(self): super(TestQProject, self).setUp() self.test_project_name = "test_project" self.test_project = QProject(name=self.test_project_name, title=self.test_project_name) self.test_project.save() def test_project_groups_created(self): """ test that the correct groups and permissions exist after creating a project :return: """ for group_suffix, permission_prefixes in GROUP_PERMISSIONS.iteritems(): group = self.test_project.get_group(group_suffix) self.assertIsNotNone(group.pk) for permission_prefix in permission_prefixes: permission = self.test_project.get_permission(permission_prefix) self.assertIsNotNone(permission.pk) self.assertIn(permission, group.permissions.all()) def test_project_groups_deleted(self): """ test that the correct groups and permissions no longer exist after deleting a project :return: """ self.test_project.delete() project_groups = Group.objects.filter(name__startswith=self.test_project_name) self.assertEqual(0, len(project_groups)) project_permissions = Permission.objects.filter(codename__endswith=self.test_project_name) self.assertEqual(0, len(project_permissions)) def test_project_queryset(self): """ tests that my custom queryset manager works as expected :return: """ self.test_project.is_active = True self.test_project.save() self.assertIn(self.test_project, QProject.objects.active_projects()) self.test_project.is_active = False self.test_project.save() self.assertNotIn(self.test_project, QProject.objects.active_projects()) def test_get_pending_users(self): self.assertNotIn(self.test_user, self.test_project.get_pending_users()) self.test_user.profile.add_pending_permissions(self.test_project) self.assertIn(self.test_user, self.test_project.get_pending_users()) def test_get_member_users(self): self.assertNotIn(self.test_user, self.test_project.get_member_users()) self.test_user.profile.add_member_permissions(self.test_project) self.assertIn(self.test_user, self.test_project.get_member_users()) def test_get_user_users(self): self.assertNotIn(self.test_user, self.test_project.get_user_users()) self.test_user.profile.add_user_permissions(self.test_project) self.assertIn(self.test_user, self.test_project.get_user_users()) def test_get_admin_users(self): self.assertNotIn(self.test_user, self.test_project.get_admin_users()) self.test_user.profile.add_admin_permissions(self.test_project) self.assertIn(self.test_user, self.test_project.get_admin_users())
class TestQUser(TestQBase): def setUp(self): super(TestQUser, self).setUp() self.test_project_name = "test_project" self.test_project = QProject( name=self.test_project_name, title=self.test_project_name, ) self.test_project.save() def test_pending(self): """ this implicitly tests is_pending_of, add_pending_permissions, remove_pending_permissions, and add_group :return: """ user_profile = self.test_user.profile self.assertFalse(user_profile.is_pending_of(self.test_project)) user_profile.add_pending_permissions(self.test_project) self.assertTrue(user_profile.is_pending_of(self.test_project)) user_profile.remove_pending_permissions(self.test_project) self.assertFalse(user_profile.is_pending_of(self.test_project)) def test_member(self): """ this implicitly tests is_member_of, add_member_permissions, remove_member_permissions, and add_group :return: """ user_profile = self.test_user.profile self.assertFalse(user_profile.is_member_of(self.test_project)) user_profile.add_member_permissions(self.test_project) self.assertTrue(user_profile.is_member_of(self.test_project)) user_profile.remove_member_permissions(self.test_project) self.assertFalse(user_profile.is_member_of(self.test_project)) def test_user(self): """ this implicitly tests is_user_of, add_user_permissions, remove_user_permissions, and add_group :return: """ user_profile = self.test_user.profile self.assertFalse(user_profile.is_user_of(self.test_project)) user_profile.add_user_permissions(self.test_project) self.assertTrue(user_profile.is_user_of(self.test_project)) user_profile.remove_user_permissions(self.test_project) self.assertFalse(user_profile.is_user_of(self.test_project)) def test_admin(self): """ this implicitly tests is_admin_of, add_admin_permissions, remove_admin_permissions, and add_group :return: """ user_profile = self.test_user.profile self.assertFalse(user_profile.is_admin_of(self.test_project)) user_profile.add_admin_permissions(self.test_project) self.assertTrue(user_profile.is_admin_of(self.test_project)) user_profile.remove_admin_permissions(self.test_project) self.assertFalse(user_profile.is_admin_of(self.test_project)) def test_join_project(self): user_profile = self.test_user.profile self.assertFalse(user_profile.is_pending_of(self.test_project)) self.assertFalse(user_profile.is_member_of(self.test_project)) self.assertFalse(user_profile.is_user_of(self.test_project)) self.assertFalse(user_profile.is_admin_of(self.test_project)) user_profile.join_project(self.test_project) self.assertFalse(user_profile.is_pending_of(self.test_project)) self.assertTrue(user_profile.is_member_of(self.test_project)) self.assertTrue(user_profile.is_user_of(self.test_project)) self.assertFalse(user_profile.is_admin_of(self.test_project)) def test_leave_project(self): user_profile = self.test_user.profile self.assertFalse(user_profile.is_pending_of(self.test_project)) self.assertFalse(user_profile.is_member_of(self.test_project)) self.assertFalse(user_profile.is_user_of(self.test_project)) self.assertFalse(user_profile.is_admin_of(self.test_project)) user_profile.join_project(self.test_project) user_profile.leave_project(self.test_project) self.assertFalse(user_profile.is_pending_of(self.test_project)) self.assertFalse(user_profile.is_member_of(self.test_project)) self.assertFalse(user_profile.is_user_of(self.test_project)) self.assertFalse(user_profile.is_admin_of(self.test_project)) def test_project_join_request_permission_set(self): user_profile = self.test_user.profile self.assertFalse(user_profile.is_pending_of(self.test_project)) self.assertFalse(user_profile.is_member_of(self.test_project)) self.assertFalse(user_profile.is_user_of(self.test_project)) self.assertFalse(user_profile.is_admin_of(self.test_project)) project_join_request(self.test_project, self.test_user) self.assertTrue(user_profile.is_pending_of(self.test_project)) def test_project_join_request_email_sent(self): from django.core.mail import outbox pre_request_message_len = len(outbox) project_join_request(self.test_project, self.test_user) post_request_message_len = len(outbox) self.assertEqual(pre_request_message_len, post_request_message_len - 1) message = outbox.pop() self.assertEqual(message.subject, "ES-DOC Questionnaire project join request") self.assertIn(self.test_user.username, message.body) self.assertIn(self.test_project.name, message.body)