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), }
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, )
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)
def perform_create(self, serializer): domain = serializer.save() federation_tasks.update_domain_nodeinfo(domain_name=domain.name)