Esempio n. 1
0
def test_update_domain_nodeinfo_error(factories, r_mock, now):
    domain = factories["federation.Domain"](nodeinfo_fetch_date=None)
    wellknown_url = "https://{}/.well-known/nodeinfo".format(domain.name)

    r_mock.get(wellknown_url, status_code=500)

    tasks.update_domain_nodeinfo(domain_name=domain.name)

    domain.refresh_from_db()

    assert domain.nodeinfo_fetch_date == now
    assert domain.nodeinfo == {
        "status": "error",
        "error": "500 Server Error: None for url: {}".format(wellknown_url),
    }
Esempio n. 2
0
def test_update_domain_nodeinfo(factories, mocker, now, service_actor):
    domain = factories["federation.Domain"](nodeinfo_fetch_date=None)
    actor = factories["federation.Actor"](fid="https://actor.id")
    retrieve_ap_object = mocker.spy(utils, "retrieve_ap_object")

    mocker.patch.object(
        tasks,
        "fetch_nodeinfo",
        return_value={
            "hello": "world",
            "metadata": {
                "actorId": "https://actor.id"
            }
        },
    )

    assert domain.nodeinfo == {}
    assert domain.nodeinfo_fetch_date is None
    assert domain.service_actor is None

    tasks.update_domain_nodeinfo(domain_name=domain.name)

    domain.refresh_from_db()

    assert domain.nodeinfo_fetch_date == now
    assert domain.nodeinfo == {
        "status": "ok",
        "payload": {
            "hello": "world",
            "metadata": {
                "actorId": "https://actor.id"
            }
        },
    }
    assert domain.service_actor == actor

    retrieve_ap_object.assert_called_once_with(
        "https://actor.id",
        actor=service_actor,
        queryset=models.Actor,
        serializer_class=serializers.ActorSerializer,
    )
Esempio n. 3
0
 def nodeinfo(self, request, *args, **kwargs):
     domain = self.get_object()
     federation_tasks.update_domain_nodeinfo(domain_name=domain.name)
     domain.refresh_from_db()
     return response.Response(domain.nodeinfo, status=200)
Esempio n. 4
0
 def perform_create(self, serializer):
     domain = serializer.save()
     federation_tasks.update_domain_nodeinfo(domain_name=domain.name)