combo/tests/test_profile.py

52 lines
1.7 KiB
Python

import datetime
import json
import mock
import pytest
from django.test import override_settings
from combo.data.models import Page
from combo.profile.models import ProfileCell
pytestmark = pytest.mark.django_db
@override_settings(
KNOWN_SERVICES={'authentic': {'idp': {'title': 'IdP', 'url': 'http://example.org/'}}})
@mock.patch('combo.public.templatetags.combo.UserSAMLIdentifier')
@mock.patch('combo.utils.requests.get')
def test_profile_cell(requests_get, user_saml, app, admin_user):
page = Page()
page.save()
cell = ProfileCell(page=page, order=0)
cell.save()
data = {'first_name': 'Foo', 'birthdate': '2018-08-10'}
requests_get.return_value = mock.Mock(
content=json.dumps(data),
json=lambda: data,
status_code=200)
def filter_mock(user=None):
assert user is admin_user
return mock.Mock(last=lambda: mock.Mock(name_id='123456'))
mocked_objects = mock.Mock()
mocked_objects.filter = mock.Mock(side_effect=filter_mock)
user_saml.objects = mocked_objects
context = cell.get_cell_extra_context({'synchronous': True, 'selected_user': admin_user})
assert context['profile_fields']['first_name']['value'] == 'Foo'
assert context['profile_fields']['birthdate']['value'] == datetime.date(2018, 8, 10)
assert requests_get.call_args[0][0] == 'http://example.org/api/users/123456/'
def filter_mock_missing(user=None):
return mock.Mock(last=lambda: None)
mocked_objects.filter = mock.Mock(side_effect=filter_mock_missing)
context = cell.get_cell_extra_context({'synchronous': True, 'selected_user': admin_user})
assert context['error'] == 'unknown user'
assert requests_get.call_count == 1 # no new call was made