26 |
26 |
from django.contrib.contenttypes.models import ContentType
|
27 |
27 |
from django.urls import reverse
|
28 |
28 |
from webtest import Upload
|
|
29 |
from webtest.app import AppError
|
29 |
30 |
|
30 |
31 |
from authentic2.a2_rbac.models import OrganizationalUnit as OU
|
31 |
32 |
from authentic2.a2_rbac.models import Permission, Role
|
... | ... | |
33 |
34 |
from authentic2.apps.journal.models import Event
|
34 |
35 |
from authentic2.custom_user.models import User
|
35 |
36 |
from authentic2.manager import user_import
|
36 |
|
from authentic2.models import Attribute, AttributeValue
|
|
37 |
from authentic2.models import Attribute, AttributeValue, UserExternalId
|
|
38 |
from authentic2.utils import misc as utils_misc
|
37 |
39 |
from authentic2_idp_oidc.models import OIDCAuthorization, OIDCClient
|
38 |
40 |
from django_rbac.models import VIEW_OP
|
39 |
41 |
from django_rbac.utils import get_operation
|
... | ... | |
645 |
647 |
assert new_app.session['_auth_user_id'] == str(simple_user.pk)
|
646 |
648 |
|
647 |
649 |
|
|
650 |
def test_su_permission_ldap_user_authn_failed(app, app_factory, superuser, simple_user, monkeypatch):
|
|
651 |
external_id = UserExternalId(
|
|
652 |
user=simple_user,
|
|
653 |
source='ldap',
|
|
654 |
external_id='abc',
|
|
655 |
)
|
|
656 |
external_id.save()
|
|
657 |
simple_user.userexternalid_set.set([external_id])
|
|
658 |
resp = login(app, superuser, '/manage/users/%s/' % simple_user.pk)
|
|
659 |
su_view_url = resp.pyquery('button[name="su"]')[0].get('data-url')
|
|
660 |
resp = app.get(su_view_url)
|
|
661 |
anchors = resp.pyquery('a#su-link')
|
|
662 |
su_url = anchors[0].get('href')
|
|
663 |
new_app = app_factory()
|
|
664 |
|
|
665 |
def patched_authenticate(request, user=None):
|
|
666 |
return None
|
|
667 |
|
|
668 |
monkeypatch.setattr(utils_misc, 'authenticate', patched_authenticate)
|
|
669 |
with pytest.raises(AppError) as exc_info:
|
|
670 |
new_app.get(su_url).follow()
|
|
671 |
assert exc_info.match('Bad response: 404 Not Found')
|
|
672 |
|
|
673 |
|
648 |
674 |
def import_csv(csv_content, app):
|
649 |
675 |
response = app.get('/manage/users/')
|
650 |
676 |
response = response.click('Import users')
|
651 |
|
-
|