mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-04 15:59:18 +02:00
Implement LDAP authentication
This commit is contained in:
parent
6ed5740f6f
commit
4ce46ff2a0
17 changed files with 232 additions and 15 deletions
|
@ -424,7 +424,10 @@ def test_library_track_action_import(factories, superuser_api_client, mocker):
|
|||
|
||||
def test_local_actor_detail(factories, api_client):
|
||||
user = factories["users.User"](with_actor=True)
|
||||
url = reverse("federation:actors-detail", kwargs={"user__username": user.username})
|
||||
url = reverse(
|
||||
"federation:actors-detail",
|
||||
kwargs={"preferred_username": user.actor.preferred_username},
|
||||
)
|
||||
serializer = serializers.ActorSerializer(user.actor)
|
||||
response = api_client.get(url)
|
||||
|
||||
|
|
22
api/tests/users/test_ldap.py
Normal file
22
api/tests/users/test_ldap.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
from django.contrib.auth import get_backends
|
||||
|
||||
from django_auth_ldap import backend
|
||||
|
||||
|
||||
def test_ldap_user_creation_also_creates_actor(settings, factories, mocker):
|
||||
actor = factories["federation.Actor"]()
|
||||
mocker.patch("funkwhale_api.users.models.create_actor", return_value=actor)
|
||||
mocker.patch(
|
||||
"django_auth_ldap.backend.LDAPBackend.ldap_to_django_username",
|
||||
return_value="hello",
|
||||
)
|
||||
settings.AUTHENTICATION_BACKENDS += ("django_auth_ldap.backend.LDAPBackend",)
|
||||
# django-auth-ldap offers a populate_user signal we can use
|
||||
# to create our user actor if it does not exists
|
||||
ldap_backend = get_backends()[-1]
|
||||
ldap_user = backend._LDAPUser(ldap_backend, username="hello")
|
||||
ldap_user._user_attrs = {"hello": "world"}
|
||||
ldap_user._get_or_create_user()
|
||||
ldap_user._user.refresh_from_db()
|
||||
|
||||
assert ldap_user._user.actor == actor
|
|
@ -133,23 +133,35 @@ def test_can_filter_closed_invitations(factories):
|
|||
|
||||
|
||||
def test_creating_actor_from_user(factories, settings):
|
||||
user = factories["users.User"]()
|
||||
user = factories["users.User"](username="Hello M. world")
|
||||
actor = models.create_actor(user)
|
||||
|
||||
assert actor.preferred_username == user.username
|
||||
assert actor.preferred_username == "Hello_M_world" # slugified
|
||||
assert actor.domain == settings.FEDERATION_HOSTNAME
|
||||
assert actor.type == "Person"
|
||||
assert actor.name == user.username
|
||||
assert actor.manually_approves_followers is False
|
||||
assert actor.url == federation_utils.full_url(
|
||||
reverse("federation:actors-detail", kwargs={"user__username": user.username})
|
||||
reverse(
|
||||
"federation:actors-detail",
|
||||
kwargs={"preferred_username": actor.preferred_username},
|
||||
)
|
||||
)
|
||||
assert actor.shared_inbox_url == federation_utils.full_url(
|
||||
reverse("federation:actors-inbox", kwargs={"user__username": user.username})
|
||||
reverse(
|
||||
"federation:actors-inbox",
|
||||
kwargs={"preferred_username": actor.preferred_username},
|
||||
)
|
||||
)
|
||||
assert actor.inbox_url == federation_utils.full_url(
|
||||
reverse("federation:actors-inbox", kwargs={"user__username": user.username})
|
||||
reverse(
|
||||
"federation:actors-inbox",
|
||||
kwargs={"preferred_username": actor.preferred_username},
|
||||
)
|
||||
)
|
||||
assert actor.outbox_url == federation_utils.full_url(
|
||||
reverse("federation:actors-outbox", kwargs={"user__username": user.username})
|
||||
reverse(
|
||||
"federation:actors-outbox",
|
||||
kwargs={"preferred_username": actor.preferred_username},
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue