14 |
14 |
# You should have received a copy of the GNU Affero General Public License
|
15 |
15 |
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16 |
16 |
|
17 |
|
import time
|
18 |
|
|
19 |
|
import pytest
|
20 |
17 |
from django.contrib.auth import get_user_model
|
21 |
18 |
from django.contrib.contenttypes.models import ContentType
|
22 |
19 |
from django.db import connection
|
... | ... | |
104 |
101 |
for i in range(10):
|
105 |
102 |
roles.append(Role.objects.create(name='r%d' % i, ou=ou))
|
106 |
103 |
role_parenting_qs = RoleParenting.objects.filter(Q(parent__in=roles) | Q(child__in=roles))
|
107 |
|
assert not len(role_parenting_qs.all())
|
|
104 |
assert not role_parenting_qs.exists()
|
108 |
105 |
|
109 |
106 |
rps = []
|
110 |
107 |
for i in range(5):
|
... | ... | |
130 |
127 |
for i in range(10):
|
131 |
128 |
roles.append(Role.objects.create(name='r%d' % i, ou=ou))
|
132 |
129 |
role_parenting_qs = RoleParenting.objects.filter(Q(parent__in=roles) | Q(child__in=roles))
|
133 |
|
assert not len(role_parenting_qs.all())
|
|
130 |
assert not role_parenting_qs.exists()
|
134 |
131 |
|
135 |
132 |
rps = []
|
136 |
133 |
for i in range(5):
|
... | ... | |
167 |
164 |
relations.append(RoleParenting(parent=roles[i], child=roles[(i - 1) // SPAN]))
|
168 |
165 |
RoleParenting.objects.bulk_create(relations)
|
169 |
166 |
RoleParenting.objects.update_transitive_closure()
|
170 |
|
operation, created = models.Operation.objects.get_or_create(slug='admin')
|
171 |
|
perm, created = Permission.objects.get_or_create(
|
|
167 |
operation, _ = models.Operation.objects.get_or_create(slug='admin')
|
|
168 |
perm, _ = Permission.objects.get_or_create(
|
172 |
169 |
operation=operation,
|
173 |
170 |
target_ct=ContentType.objects.get_for_model(ContentType),
|
174 |
171 |
target_id=ContentType.objects.get_for_model(User).id,
|
... | ... | |
293 |
290 |
r3.add_parent(r2)
|
294 |
291 |
r2.add_parent(r1)
|
295 |
292 |
for member in r1.all_members():
|
296 |
|
if member == u1 or member == u3:
|
|
293 |
if member in (u1, u3):
|
297 |
294 |
assert member.direct == [r1]
|
298 |
295 |
if member == u2:
|
299 |
296 |
assert member.direct == []
|
300 |
297 |
for member in Role.objects.filter(id=r1.id).all_members():
|
301 |
|
if member == u1 or member == u3:
|
|
298 |
if member in (u1, u3):
|
302 |
299 |
assert member.direct == [r1]
|
303 |
300 |
if member == u2:
|
304 |
301 |
assert member.direct == []
|