def test_undo_follow_serializer_save(factories): follow = factories["federation.Follow"](approved=True) data = { "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", {}, ], "id": follow.get_federation_id() + "/undo", "type": "Undo", "actor": follow.actor.fid, "object": serializers.FollowSerializer(follow).data, } serializer = serializers.UndoFollowSerializer(data=data) assert serializer.is_valid(raise_exception=True) serializer.save() with pytest.raises(models.Follow.DoesNotExist): follow.refresh_from_db()
def test_undo_follow_serializer_validates_on_context(factories): follow = factories["federation.Follow"](approved=True) impostor = factories["federation.Actor"]() data = { "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", {}, ], "id": follow.get_federation_id() + "/undo", "type": "Undo", "actor": impostor.url, "object": serializers.FollowSerializer(follow).data, } serializer = serializers.UndoFollowSerializer(data=data, context={ "follow_actor": impostor, "follow_target": impostor }) assert serializer.is_valid() is False assert "actor" in serializer.errors["object"] assert "object" in serializer.errors["object"]
def test_accept_follow_serializer_save(factories): follow = factories["federation.Follow"](approved=None) data = { "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", {}, ], "id": follow.get_federation_id() + "/accept", "type": "Accept", "actor": follow.target.fid, "object": serializers.FollowSerializer(follow).data, } serializer = serializers.AcceptFollowSerializer(data=data) assert serializer.is_valid(raise_exception=True) serializer.save() follow.refresh_from_db() assert follow.approved is True
def test_outbox_follow_library(factories, mocker): follow = factories["federation.LibraryFollow"]() activity = list(routes.outbox_follow({"follow": follow}))[0] serializer = serializers.FollowSerializer(follow, context={"actor": follow.actor}) expected = serializer.data expected["to"] = [follow.target.actor] assert activity["payload"] == expected assert activity["actor"] == follow.actor assert activity["object"] == follow.target
def test_follow_serializer_save(factories): actor = factories["federation.Actor"]() target = factories["federation.Actor"]() data = { "id": "https://test.follow", "type": "Follow", "actor": actor.fid, "object": target.fid, } serializer = serializers.FollowSerializer(data=data) assert serializer.is_valid(raise_exception=True) follow = serializer.save() assert follow.pk is not None assert follow.actor == actor assert follow.target == target assert follow.approved is None
def test_follow_serializer_save_validates_on_context(factories): actor = factories["federation.Actor"]() target = factories["federation.Actor"]() impostor = factories["federation.Actor"]() data = { "id": "https://test.follow", "type": "Follow", "actor": actor.fid, "object": target.fid, } serializer = serializers.FollowSerializer(data=data, context={ "follow_actor": impostor, "follow_target": impostor }) assert serializer.is_valid() is False assert "actor" in serializer.errors assert "object" in serializer.errors
def test_follow_serializer_to_ap(factories): follow = factories["federation.Follow"](local=True) serializer = serializers.FollowSerializer(follow) expected = { "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", {}, ], "id": follow.get_federation_id(), "type": "Follow", "actor": follow.actor.fid, "object": follow.target.fid, } assert serializer.data == expected
def test_undo_follow_serializer_representation(factories): follow = factories["federation.Follow"](approved=True) expected = { "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", {}, ], "id": follow.get_federation_id() + "/undo", "type": "Undo", "actor": follow.actor.fid, "object": serializers.FollowSerializer(follow).data, } serializer = serializers.UndoFollowSerializer(follow) assert serializer.data == expected