70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
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()
|