wcs: fix cell rendering with anonymous users (#63220)
This commit is contained in:
parent
6a33066ac9
commit
cf980643eb
|
@ -494,7 +494,7 @@ class WcsCurrentFormsCell(CategoriesAndWcsSiteValidityMixin, CategoriesFiltering
|
|||
def get_api_url(self, context):
|
||||
url = '/api/user/forms/'
|
||||
user = self.get_concerned_user(context)
|
||||
if user:
|
||||
if user and not user.is_anonymous:
|
||||
user_name_id = user.get_name_id()
|
||||
if user_name_id:
|
||||
url = '/api/users/%s/forms' % user_name_id
|
||||
|
@ -574,7 +574,7 @@ class WcsCurrentDraftsCell(CategoriesAndWcsSiteValidityMixin, CategoriesFilterin
|
|||
|
||||
def get_api_url(self, context):
|
||||
user = self.get_concerned_user(context)
|
||||
if user:
|
||||
if user and not user.is_anonymous:
|
||||
user_name_id = user.get_name_id()
|
||||
if user_name_id:
|
||||
return '/api/users/%s/drafts' % user_name_id
|
||||
|
@ -898,7 +898,7 @@ class WcsCardsCell(CardMixin, WcsBlurpMixin, CellBase):
|
|||
if len(parts) > 2:
|
||||
url = '%s/%s' % (url, parts[2])
|
||||
user = self.get_concerned_user(context)
|
||||
if self.only_for_user and user and user.get_name_id():
|
||||
if self.only_for_user and user and not user.is_anonymous and user.get_name_id():
|
||||
url = '%s?filter-user-uuid=%s' % (url, user.get_name_id())
|
||||
return url
|
||||
|
||||
|
@ -1030,7 +1030,7 @@ class WcsCardInfosCell(CardMixin, CellBase):
|
|||
card_id,
|
||||
)
|
||||
user = self.get_concerned_user(context)
|
||||
if user:
|
||||
if user and not user.is_anonymous:
|
||||
user_name_id = user.get_name_id()
|
||||
if user_name_id:
|
||||
api_url += '&filter-user-uuid=%s' % user_name_id
|
||||
|
|
|
@ -961,15 +961,18 @@ def test_current_forms_name_id(context):
|
|||
cell.wcs_site = 'default'
|
||||
cell.save()
|
||||
|
||||
context['request'].user = MockUserWithNameId()
|
||||
|
||||
# query should fail as nothing is cached
|
||||
cache.clear()
|
||||
with pytest.raises(NothingInCacheException):
|
||||
cell.render(context)
|
||||
|
||||
context['synchronous'] = True # to get fresh content
|
||||
|
||||
# anonymous user
|
||||
context['request'].user = AnonymousUser()
|
||||
with mock.patch('combo.apps.wcs.models.requests.get') as requests_get:
|
||||
mock_json = mock.Mock(status_code=200)
|
||||
requests_get.return_value = mock_json
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == '/api/user/forms/?status=open&limit=100&sort=desc'
|
||||
|
||||
# user with name_id
|
||||
context['request'].user = MockUserWithNameId()
|
||||
with mock.patch('combo.apps.wcs.models.requests.get') as requests_get:
|
||||
mock_json = mock.Mock(status_code=200)
|
||||
requests_get.return_value = mock_json
|
||||
|
@ -1456,6 +1459,14 @@ def test_current_drafts_cell_render_logged_in(mock_send, context):
|
|||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == '/api/users/xyz/drafts'
|
||||
|
||||
# anonymous user
|
||||
context['request'].user = AnonymousUser()
|
||||
with mock.patch('combo.apps.wcs.models.requests.get') as requests_get:
|
||||
mock_json = mock.Mock(status_code=200)
|
||||
requests_get.return_value = mock_json
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == '/api/user/drafts'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
def test_current_drafts_cell_check_validity(mock_send, context):
|
||||
|
@ -1876,6 +1887,12 @@ def test_cards_cell_render_user(mock_send, context, nocache):
|
|||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = AnonymousUser()
|
||||
mock_send.reset_mock()
|
||||
cell.render(context)
|
||||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = MockUser()
|
||||
mock_send.reset_mock()
|
||||
cell.render(context)
|
||||
|
@ -1895,6 +1912,12 @@ def test_cards_cell_render_user(mock_send, context, nocache):
|
|||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = AnonymousUser()
|
||||
mock_send.reset_mock()
|
||||
cell.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = MockUser()
|
||||
mock_send.reset_mock()
|
||||
cell.render(context)
|
||||
|
@ -3657,11 +3680,12 @@ def test_card_cell_render_identifier_from_related(mock_send, nocache, app):
|
|||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('carddef_reference', ['default:card_model_1', 'default:card_model_1:foo'])
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_user(mock_send, context, nocache):
|
||||
def test_card_cell_render_user(mock_send, context, nocache, carddef_reference):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
cell.carddef_reference = 'default:card_model_1'
|
||||
cell.carddef_reference = carddef_reference
|
||||
cell.save()
|
||||
|
||||
context['card_model_1_id'] = 11
|
||||
|
@ -3676,6 +3700,12 @@ def test_card_cell_render_user(mock_send, context, nocache):
|
|||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = AnonymousUser()
|
||||
mock_send.reset_mock()
|
||||
cell.render(context)
|
||||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = MockUser()
|
||||
mock_send.reset_mock()
|
||||
cell.render(context)
|
||||
|
|
Loading…
Reference in New Issue