Resolve "Have an actor for our users"

This commit is contained in:
Eliot Berriot 2018-07-22 10:20:16 +00:00
commit 6b16a8b963
17 changed files with 308 additions and 9 deletions

View file

@ -1,7 +1,10 @@
import datetime
import pytest
from django.urls import reverse
from funkwhale_api.users import models
from funkwhale_api.federation import utils as federation_utils
def test__str__(factories):
@ -127,3 +130,26 @@ def test_can_filter_closed_invitations(factories):
assert models.Invitation.objects.count() == 3
assert list(models.Invitation.objects.order_by("id").open(False)) == [expired, used]
def test_creating_actor_from_user(factories, settings):
user = factories["users.User"]()
actor = models.create_actor(user)
assert actor.preferred_username == user.username
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})
)
assert actor.shared_inbox_url == federation_utils.full_url(
reverse("federation:actors-inbox", kwargs={"user__username": user.username})
)
assert actor.inbox_url == federation_utils.full_url(
reverse("federation:actors-inbox", kwargs={"user__username": user.username})
)
assert actor.outbox_url == federation_utils.full_url(
reverse("federation:actors-outbox", kwargs={"user__username": user.username})
)

View file

@ -249,3 +249,25 @@ def test_user_can_patch_their_own_avatar(logged_in_api_client, avatar):
user.refresh_from_db()
assert user.avatar.read() == content
def test_creating_user_creates_actor_as_well(
api_client, factories, mocker, preferences
):
actor = factories["federation.Actor"]()
url = reverse("rest_register")
data = {
"username": "test1",
"email": "test1@test.com",
"password1": "testtest",
"password2": "testtest",
}
preferences["users__registration_enabled"] = True
mocker.patch("funkwhale_api.users.models.create_actor", return_value=actor)
response = api_client.post(url, data)
assert response.status_code == 201
user = User.objects.get(username="test1")
assert user.actor == actor