funkwhale/api/tests/federation/test_library.py

71 wiersze
2.2 KiB
Python

from funkwhale_api.federation import library
from funkwhale_api.federation import serializers
def test_library_scan_from_account_name(mocker, factories):
actor = factories['federation.Actor'](
preferred_username='library',
domain='test.library'
)
get_resource_result = {'actor_url': actor.url}
get_resource = mocker.patch(
'funkwhale_api.federation.webfinger.get_resource',
return_value=get_resource_result)
actor_data = serializers.ActorSerializer(actor).data
actor_data['manuallyApprovesFollowers'] = False
actor_data['url'] = [{
'type': 'Link',
'name': 'library',
'mediaType': 'application/activity+json',
'href': 'https://test.library'
}]
get_actor_data = mocker.patch(
'funkwhale_api.federation.actors.get_actor_data',
return_value=actor_data)
get_library_data_result = {'test': 'test'}
get_library_data = mocker.patch(
'funkwhale_api.federation.library.get_library_data',
return_value=get_library_data_result)
result = library.scan_from_account_name('library@test.actor')
get_resource.assert_called_once_with('acct:library@test.actor')
get_actor_data.assert_called_once_with(actor.url)
get_library_data.assert_called_once_with(actor_data['url'][0]['href'])
assert result == {
'webfinger': get_resource_result,
'actor': actor_data,
'library': get_library_data_result,
'local': {
'following': False,
'awaiting_approval': False,
},
}
def test_get_library_data(r_mock, factories):
actor = factories['federation.Actor']()
url = 'https://test.library'
conf = {
'id': url,
'items': [],
'actor': actor,
'page_size': 5,
}
data = serializers.PaginatedCollectionSerializer(conf).data
r_mock.get(url, json=data)
result = library.get_library_data(url)
for f in ['totalItems', 'actor', 'id', 'type']:
assert result[f] == data[f]
def test_get_library_data_requires_authentication(r_mock, factories):
url = 'https://test.library'
r_mock.get(url, status_code=403)
result = library.get_library_data(url)
assert result['errors'] == ['Permission denied while scanning library']