52 lines
1.7 KiB
Python
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
|