mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
@@ -2,6 +2,13 @@ import factory
|
||||
from . import models
|
||||
|
||||
|
||||
class DomainFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = models.Domain
|
||||
|
||||
quota = 10
|
||||
enabled = True
|
||||
|
||||
|
||||
class MailboxFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = models.Mailbox
|
||||
|
||||
@@ -9,8 +16,5 @@ class MailboxFactory(factory.DjangoModelFactory):
|
||||
use_domain_quota = True
|
||||
|
||||
|
||||
class DomainFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = models.Domain
|
||||
|
||||
quota = 10
|
||||
enabled = True
|
||||
class AliasFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = models.Alias
|
||||
|
||||
@@ -68,7 +68,7 @@ def get_identities(user, searchquery=None, idtfilter=None, grpfilter=None):
|
||||
from itertools import chain
|
||||
|
||||
accounts = []
|
||||
if idtfilter is None or idtfilter == "account":
|
||||
if idtfilter is None or not idtfilter or idtfilter == "account":
|
||||
ids = user.objectaccess_set \
|
||||
.filter(content_type=ContentType.objects.get_for_model(user)) \
|
||||
.values_list('object_id', flat=True)
|
||||
@@ -76,7 +76,7 @@ def get_identities(user, searchquery=None, idtfilter=None, grpfilter=None):
|
||||
if searchquery is not None:
|
||||
q &= Q(username__icontains=searchquery) \
|
||||
| Q(email__icontains=searchquery)
|
||||
if grpfilter is not None:
|
||||
if grpfilter is not None and grpfilter:
|
||||
if grpfilter == "SuperAdmins":
|
||||
q &= Q(is_superuser=True)
|
||||
else:
|
||||
@@ -84,7 +84,8 @@ def get_identities(user, searchquery=None, idtfilter=None, grpfilter=None):
|
||||
accounts = User.objects.select_related().filter(q)
|
||||
|
||||
aliases = []
|
||||
if idtfilter is None or (idtfilter in ["alias", "forward", "dlist"]):
|
||||
if idtfilter is None or not idtfilter \
|
||||
or (idtfilter in ["alias", "forward", "dlist"]):
|
||||
alct = ContentType.objects.get_for_model(Alias)
|
||||
ids = user.objectaccess_set.filter(content_type=alct) \
|
||||
.values_list('object_id', flat=True)
|
||||
|
||||
@@ -474,3 +474,61 @@ account; sa@test.com; toto; Super; Admin; True; SuperAdmins; superadmin@test.com
|
||||
})
|
||||
with self.assertRaises(User.DoesNotExist):
|
||||
User.objects.get(username="sa@test.com")
|
||||
|
||||
|
||||
class ExportTestCase(ModoTestCase):
|
||||
fixtures = ["initial_users.json"]
|
||||
|
||||
def setUp(self):
|
||||
super(ExportTestCase, self).setUp()
|
||||
sa = User.objects.get(pk=1)
|
||||
dom = factories.DomainFactory(name="test.com")
|
||||
self.admin = UserFactory.create(
|
||||
username="admin@test.com", groups=('DomainAdmins',)
|
||||
)
|
||||
self.admin.post_create(sa)
|
||||
factories.MailboxFactory(address='admin', domain=dom, user=self.admin)
|
||||
dom.add_admin(self.admin)
|
||||
u = UserFactory.create(
|
||||
username="user@test.com", groups=('SimpleUsers',)
|
||||
)
|
||||
u.post_create(sa)
|
||||
factories.MailboxFactory(address='user', domain=dom, user=u)
|
||||
# factories.AliasFactory(
|
||||
# address='forward', domain=dom, extmboxes='user@extdomain.com'
|
||||
# )
|
||||
|
||||
def __export_identities(self, idtfilter="", grpfilter=""):
|
||||
self.clt.get(
|
||||
reverse("modoboa.extensions.admin.views.identity._identities") \
|
||||
+ "?grpfilter=%s&idtfilter=%s" % (grpfilter, idtfilter)
|
||||
)
|
||||
return self.clt.post(
|
||||
reverse("modoboa.extensions.admin.views.export.export_identities"),
|
||||
{"filename": "test.csv"}
|
||||
)
|
||||
|
||||
def test_export_identities(self):
|
||||
response = self.__export_identities()
|
||||
self.assertEqual(response.content, "account;admin;{CRYPT}dTTsGDkA5ZHKg;;;True;SuperAdmins;\r\naccount;admin@test.com;{PLAIN}toto;;;True;DomainAdmins;admin@test.com;test.com\r\naccount;user@test.com;{PLAIN}toto;;;True;SimpleUsers;user@test.com\r\n")
|
||||
|
||||
def test_export_simpleusers(self):
|
||||
response = self.__export_identities(grpfilter="SimpleUsers")
|
||||
self.assertEqual(
|
||||
response.content.strip(),
|
||||
"account;user@test.com;{PLAIN}toto;;;True;SimpleUsers;user@test.com"
|
||||
)
|
||||
|
||||
def test_export_superadmins(self):
|
||||
response = self.__export_identities(grpfilter="SuperAdmins")
|
||||
self.assertEqual(
|
||||
response.content.strip(),
|
||||
"account;admin;{CRYPT}dTTsGDkA5ZHKg;;;True;SuperAdmins;"
|
||||
)
|
||||
|
||||
def test_export_domainadmins(self):
|
||||
response = self.__export_identities(grpfilter="DomainAdmins")
|
||||
self.assertEqual(
|
||||
response.content.strip(),
|
||||
"account;admin@test.com;{PLAIN}toto;;;True;DomainAdmins;admin@test.com;test.com"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user