64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import pytest
|
|
|
|
from django.urls import reverse
|
|
|
|
from funkwhale_api.instance import views
|
|
|
|
|
|
@pytest.mark.parametrize('view,permissions', [
|
|
(views.AdminSettings, ['settings']),
|
|
])
|
|
def test_permissions(assert_user_permission, view, permissions):
|
|
assert_user_permission(view, permissions)
|
|
|
|
|
|
def test_nodeinfo_endpoint(db, api_client, mocker):
|
|
payload = {
|
|
'test': 'test'
|
|
}
|
|
mocked_nodeinfo = mocker.patch(
|
|
'funkwhale_api.instance.nodeinfo.get', return_value=payload)
|
|
url = reverse('api:v1:instance:nodeinfo-2.0')
|
|
response = api_client.get(url)
|
|
ct = 'application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8' # noqa
|
|
assert response.status_code == 200
|
|
assert response['Content-Type'] == ct
|
|
assert response.data == payload
|
|
|
|
|
|
def test_nodeinfo_endpoint_disabled(db, api_client, preferences):
|
|
preferences['instance__nodeinfo_enabled'] = False
|
|
url = reverse('api:v1:instance:nodeinfo-2.0')
|
|
response = api_client.get(url)
|
|
|
|
assert response.status_code == 404
|
|
|
|
|
|
def test_settings_only_list_public_settings(db, api_client, preferences):
|
|
url = reverse('api:v1:instance:settings')
|
|
response = api_client.get(url)
|
|
|
|
for conf in response.data:
|
|
p = preferences.model.objects.get(
|
|
section=conf['section'], name=conf['name'])
|
|
assert p.preference.show_in_api is True
|
|
|
|
|
|
def test_admin_settings_restrict_access(db, logged_in_api_client, preferences):
|
|
url = reverse('api:v1:instance:admin-settings-list')
|
|
response = logged_in_api_client.get(url)
|
|
|
|
assert response.status_code == 403
|
|
|
|
|
|
def test_admin_settings_correct_permission(
|
|
db, logged_in_api_client, preferences):
|
|
user = logged_in_api_client.user
|
|
user.permission_settings = True
|
|
user.save()
|
|
url = reverse('api:v1:instance:admin-settings-list')
|
|
response = logged_in_api_client.get(url)
|
|
|
|
assert response.status_code == 200
|
|
assert len(response.data) == len(preferences.all())
|