16 |
16 |
from django.test import override_settings
|
17 |
17 |
from django.test.client import RequestFactory
|
18 |
18 |
from django.test.utils import CaptureQueriesContext
|
19 |
|
from django.contrib.auth.models import User
|
|
19 |
from django.contrib.auth.models import User, Group
|
20 |
20 |
from django.urls import reverse
|
21 |
21 |
from django.utils.encoding import force_text, force_bytes
|
22 |
22 |
from django.utils.timezone import now
|
... | ... | |
1226 |
1226 |
resp = app.get('/manage/assets/')
|
1227 |
1227 |
assert link_cell.get_slug_for_asset() == 'test_cell_assets'
|
1228 |
1228 |
assert u'Picture — %s (test)' % link_cell.get_label_for_asset() in resp.text
|
|
1229 |
|
|
1230 |
|
|
1231 |
@pytest.fixture
|
|
1232 |
def group(db):
|
|
1233 |
return Group.objects.create(name='Group')
|
|
1234 |
|
|
1235 |
|
|
1236 |
@pytest.fixture
|
|
1237 |
def cell_visibility_setup(db, group):
|
|
1238 |
pg = Page.objects.create(title='Test', slug='test', template_name='standard')
|
|
1239 |
|
|
1240 |
order = 0
|
|
1241 |
|
|
1242 |
def make_cell(**kwargs):
|
|
1243 |
nonlocal order
|
|
1244 |
try:
|
|
1245 |
return TextCell.objects.create(page=pg, placeholder='content', order=order, **kwargs)
|
|
1246 |
finally:
|
|
1247 |
order += 1
|
|
1248 |
|
|
1249 |
make_cell(text='<p>Always visible</p>')
|
|
1250 |
make_cell(text='<p>Visible to unlogged only</p>', restricted_to_unlogged=True)
|
|
1251 |
make_cell(text='<p>Visible to logged only</p>', public=False)
|
|
1252 |
make_cell(text='<p>Visible only to member of group</p>', public=False).groups.add(group)
|
|
1253 |
make_cell(text='<p>Visible only to non-member of group</p>', public=False,
|
|
1254 |
restricted_to_unlogged=True).groups.add(group)
|
|
1255 |
|
|
1256 |
|
|
1257 |
def test_cells_visibility_anonymous(app, cell_visibility_setup):
|
|
1258 |
response = app.get('/test/')
|
|
1259 |
|
|
1260 |
assert 'Always visible' in response
|
|
1261 |
assert 'Visible to unlogged only' in response
|
|
1262 |
assert 'Visible to logged only' not in response
|
|
1263 |
assert 'Visible only to member of group' not in response
|
|
1264 |
assert 'Visible only to non-member of group' not in response
|
|
1265 |
assert response.pyquery('.shown-because-admin').text() == ''
|
|
1266 |
|
|
1267 |
|
|
1268 |
def test_cells_visibility_user(app, cell_visibility_setup):
|
|
1269 |
User.objects.create(username='user')
|
|
1270 |
response = app.get('/test/', user='user')
|
|
1271 |
|
|
1272 |
assert 'Always visible' in response
|
|
1273 |
assert 'Visible to unlogged only' not in response
|
|
1274 |
assert 'Visible to logged only' in response
|
|
1275 |
assert 'Visible only to member of group' not in response
|
|
1276 |
assert 'Visible only to non-member of group' in response
|
|
1277 |
assert response.pyquery('.shown-because-admin').text() == ''
|
|
1278 |
|
|
1279 |
|
|
1280 |
def test_cells_visibility_user_with_role(app, cell_visibility_setup, group):
|
|
1281 |
User.objects.create(username='user').groups.add(group)
|
|
1282 |
response = app.get('/test/', user='user')
|
|
1283 |
|
|
1284 |
assert 'Always visible' in response
|
|
1285 |
assert 'Visible to unlogged only' not in response
|
|
1286 |
assert 'Visible to logged only' in response
|
|
1287 |
assert 'Visible only to member of group' in response
|
|
1288 |
assert 'Visible only to non-member of group' not in response
|
|
1289 |
assert response.pyquery('.shown-because-admin').text() == ''
|
|
1290 |
|
|
1291 |
|
|
1292 |
def test_cells_visibility_superuser(app, cell_visibility_setup):
|
|
1293 |
User.objects.create(username='superuser', is_superuser=True)
|
|
1294 |
response = app.get('/test/', user='superuser')
|
|
1295 |
|
|
1296 |
assert 'Always visible' in response
|
|
1297 |
assert 'Visible to unlogged only' not in response
|
|
1298 |
assert 'Visible to logged only' in response
|
|
1299 |
assert 'Visible only to member of group' in response
|
|
1300 |
assert 'Visible only to non-member of group' in response
|
|
1301 |
assert response.pyquery('.shown-because-admin').text() == 'Visible only to member of group'
|
|
1302 |
|
|
1303 |
|
|
1304 |
def test_cells_visibility_superuser_with_role(app, cell_visibility_setup, group):
|
|
1305 |
User.objects.create(username='superuser', is_superuser=True).groups.add(group)
|
|
1306 |
response = app.get('/test/', user='superuser')
|
|
1307 |
|
|
1308 |
assert 'Always visible' in response
|
|
1309 |
assert 'Visible to unlogged only' not in response
|
|
1310 |
assert 'Visible to logged only' in response
|
|
1311 |
assert 'Visible only to member of group' in response
|
|
1312 |
assert 'Visible only to non-member of group' in response
|
|
1313 |
assert response.pyquery('.shown-because-admin').text() == 'Visible only to non-member of group'
|