From 8068d799803671f0af1036263e0fd1f76a10ec17 Mon Sep 17 00:00:00 2001 From: Jason Robinson Date: Wed, 1 Nov 2017 22:14:21 +0200 Subject: [PATCH] Ensure DiasporaReshare.public is set Diaspora removed 'public' from reshare in protocol version 0.2.2. Since we do support it, when parsing incoming payloads, set it to True if it is missing. Our Share base entity defaults to False. --- federation/entities/diaspora/entities.py | 10 ++++++++++ federation/tests/entities/diaspora/test_mappers.py | 2 +- federation/tests/fixtures/payloads.py | 4 +--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/federation/entities/diaspora/entities.py b/federation/entities/diaspora/entities.py index ade6da1..8dd47d7 100644 --- a/federation/entities/diaspora/entities.py +++ b/federation/entities/diaspora/entities.py @@ -268,6 +268,16 @@ class DiasporaReshare(DiasporaEntityMixin, Share): """Diaspora Reshare.""" _tag_name = "reshare" + @staticmethod + def fill_extra_attributes(attributes): + """If `public` is missing, add it as True. + + Diaspora removed this from protocol version 0.2.2 so assume all future reshares are public. + """ + if attributes.get("public") is None: + attributes["public"] = True + return attributes + def to_xml(self): element = etree.Element(self._tag_name) struct_to_xml(element, [ diff --git a/federation/tests/entities/diaspora/test_mappers.py b/federation/tests/entities/diaspora/test_mappers.py index 1adeac0..fe13615 100644 --- a/federation/tests/entities/diaspora/test_mappers.py +++ b/federation/tests/entities/diaspora/test_mappers.py @@ -213,7 +213,7 @@ class TestDiasporaEntityMappersReceive: assert entity.provider_display_name == "" assert entity.target_handle == "bob@example.com" assert entity.target_guid == "a0b53bc029f6013487753131731751e9" - assert entity.public is True + assert entity.public is False assert entity.entity_type == "Post" def test_message_to_objects_reshare_extra_properties(self): diff --git a/federation/tests/fixtures/payloads.py b/federation/tests/fixtures/payloads.py index 5b5ae85..86bd71f 100644 --- a/federation/tests/fixtures/payloads.py +++ b/federation/tests/fixtures/payloads.py @@ -237,10 +237,8 @@ DIASPORA_RESHARE = """ alice@example.org a0b53e5029f6013487753131731751e9 2016-07-12T00:36:42Z - bob@example.com a0b53bc029f6013487753131731751e9 - true """ @@ -252,7 +250,7 @@ DIASPORA_RESHARE_LEGACY = """ bob@example.com a0b53bc029f6013487753131731751e9 - true + false """