Skip to content
Snippets Groups Projects
test_views.py 2.12 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.urls import reverse
    
    import pytest
    
    
    from funkwhale_api.federation import actors
    
    from funkwhale_api.federation import serializers
    
    from funkwhale_api.federation import webfinger
    
    
    
    
    @pytest.mark.parametrize('system_actor', actors.SYSTEM_ACTORS.keys())
    def test_instance_actors(system_actor, db, settings, api_client):
        actor = actors.SYSTEM_ACTORS[system_actor]['get_actor']()
        url = reverse(
            'federation:instance-actors-detail',
            kwargs={'actor': system_actor})
    
        response = api_client.get(url)
    
        serializer = serializers.ActorSerializer(actor)
    
    
        assert response.status_code == 200
    
        assert response.data == serializer.data
    
    
    # @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')
        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'
        )
    
    
    
    @pytest.mark.parametrize('system_actor', actors.SYSTEM_ACTORS.keys())
    
    def test_wellknown_webfinger_system(
    
            system_actor, db, api_client, settings, mocker):
        actor = actors.SYSTEM_ACTORS[system_actor]['get_actor']()
    
        url = reverse('federation:well-known-webfinger')
        response = api_client.get(
    
            url, data={'resource': 'acct:{}'.format(actor.webfinger_subject)})
        serializer = serializers.ActorWebfingerSerializer(actor)
    
    
        assert response.status_code == 200
    
        assert response['Content-Type'] == 'application/jrd+json'
    
        assert response.data == serializer.data