Url and views for instance actor and webfinger
This commit is contained in:
parent
e793f8365f
commit
75710638de
5 changed files with 181 additions and 0 deletions
69
api/tests/federation/test_views.py
Normal file
69
api/tests/federation/test_views.py
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
from django.urls import reverse
|
||||
|
||||
import pytest
|
||||
|
||||
from funkwhale_api.federation import webfinger
|
||||
|
||||
|
||||
def test_instance_actor(db, settings, api_client):
|
||||
settings.FUNKWHALE_URL = 'http://test.com'
|
||||
url = reverse('federation:instance-actor')
|
||||
response = api_client.get(url)
|
||||
assert response.data['id'] == (
|
||||
settings.FUNKWHALE_URL + url
|
||||
)
|
||||
assert response.data['type'] == 'Service'
|
||||
assert response.data['inbox'] == (
|
||||
settings.FUNKWHALE_URL + reverse('federation:instance-inbox')
|
||||
)
|
||||
assert response.data['outbox'] == (
|
||||
settings.FUNKWHALE_URL + reverse('federation:instance-outbox')
|
||||
)
|
||||
assert response.data['@context'] == [
|
||||
'https://www.w3.org/ns/activitystreams',
|
||||
'https://w3id.org/security/v1',
|
||||
{},
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('route', [
|
||||
'instance-outbox',
|
||||
'instance-inbox',
|
||||
'instance-actor',
|
||||
'well-known-webfinger',
|
||||
])
|
||||
def test_instance_inbox_405_if_federation_disabled(
|
||||
db, settings, api_client, route):
|
||||
settings.FEDERATION_ENABLED = False
|
||||
url = reverse('federation:{}'.format(route))
|
||||
response = api_client.get(url)
|
||||
|
||||
assert response.status_code == 405
|
||||
|
||||
|
||||
def test_wellknown_webfinger_validates_resource(
|
||||
db, api_client, settings, mocker):
|
||||
clean = mocker.spy(webfinger, 'clean_resource')
|
||||
settings.FEDERATION_ENABLED = True
|
||||
url = reverse('federation:well-known-webfinger')
|
||||
response = api_client.get(url, data={'resource': 'something'})
|
||||
|
||||
clean.assert_called_once_with('something')
|
||||
assert url == '/.well-known/webfinger'
|
||||
assert response.status_code == 400
|
||||
assert response.data['errors']['resource'] == (
|
||||
'Missing webfinger resource type'
|
||||
)
|
||||
|
||||
|
||||
def test_wellknown_webfinger_system(
|
||||
db, api_client, settings, mocker):
|
||||
settings.FEDERATION_ENABLED = True
|
||||
settings.FEDERATION_HOSTNAME = 'test.federation'
|
||||
url = reverse('federation:well-known-webfinger')
|
||||
response = api_client.get(
|
||||
url, data={'resource': 'acct:service@test.federation'})
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response['Content-Type'] == 'application/jrd+json; charset=utf-8'
|
||||
assert response.data == webfinger.serialize_system_acct()
|
||||
Loading…
Add table
Add a link
Reference in a new issue