コード例 #1
0
 def test_privacy_field_defaults(self):
     ''' post privacy field's many default values '''
     instance = fields.PrivacyField()
     self.assertEqual(instance.max_length, 255)
     self.assertEqual([c[0] for c in instance.choices],
                      ['public', 'unlisted', 'followers', 'direct'])
     self.assertEqual(instance.default, 'public')
     self.assertEqual(instance.public,
                      'https://www.w3.org/ns/activitystreams#Public')
コード例 #2
0
ファイル: test_fields.py プロジェクト: AylaJK/bookwyrm
 def test_privacy_field_defaults(self):
     """post privacy field's many default values"""
     instance = fields.PrivacyField()
     self.assertEqual(instance.max_length, 255)
     self.assertEqual(
         [c[0] for c in instance.choices],
         ["public", "unlisted", "followers", "direct"],
     )
     self.assertEqual(instance.default, "public")
     self.assertEqual(instance.public,
                      "https://www.w3.org/ns/activitystreams#Public")
コード例 #3
0
ファイル: test_fields.py プロジェクト: AylaJK/bookwyrm
    def test_privacy_field_set_activity_from_field(self, *_):
        """translate between to/cc fields and privacy"""
        with patch(
                "bookwyrm.preview_images.generate_user_preview_image_task.delay"
        ):
            user = User.objects.create_user("rat",
                                            "*****@*****.**",
                                            "ratword",
                                            local=True,
                                            localname="rat")
        public = "https://www.w3.org/ns/activitystreams#Public"
        followers = "%s/followers" % user.remote_id

        instance = fields.PrivacyField()
        instance.name = "privacy_field"

        model_instance = Status.objects.create(user=user, content="hi")
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity["to"], [public])
        self.assertEqual(activity["cc"], [followers])

        model_instance = Status.objects.create(user=user,
                                               content="hi",
                                               privacy="unlisted")
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity["to"], [followers])
        self.assertEqual(activity["cc"], [public])

        model_instance = Status.objects.create(user=user,
                                               content="hi",
                                               privacy="followers")
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity["to"], [followers])
        self.assertEqual(activity["cc"], [])

        model_instance = Status.objects.create(
            user=user,
            content="hi",
            privacy="direct",
        )
        model_instance.mention_users.set([user])
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity["to"], [user.remote_id])
        self.assertEqual(activity["cc"], [])
コード例 #4
0
    def test_privacy_field_set_activity_from_field(self, _):
        ''' translate between to/cc fields and privacy '''
        user = User.objects.create_user('rat',
                                        '*****@*****.**',
                                        'ratword',
                                        local=True,
                                        localname='rat')
        public = 'https://www.w3.org/ns/activitystreams#Public'
        followers = '%s/followers' % user.remote_id

        instance = fields.PrivacyField()
        instance.name = 'privacy_field'

        model_instance = Status.objects.create(user=user, content='hi')
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity['to'], [public])
        self.assertEqual(activity['cc'], [followers])

        model_instance = Status.objects.create(user=user,
                                               content='hi',
                                               privacy='unlisted')
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity['to'], [followers])
        self.assertEqual(activity['cc'], [public])

        model_instance = Status.objects.create(user=user,
                                               content='hi',
                                               privacy='followers')
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity['to'], [followers])
        self.assertEqual(activity['cc'], [])

        model_instance = Status.objects.create(
            user=user,
            content='hi',
            privacy='direct',
        )
        model_instance.mention_users.set([user])
        activity = {}
        instance.set_activity_from_field(activity, model_instance)
        self.assertEqual(activity['to'], [user.remote_id])
        self.assertEqual(activity['cc'], [])
コード例 #5
0
ファイル: test_fields.py プロジェクト: AylaJK/bookwyrm
    def test_privacy_field_set_field_from_activity(self):
        """translate between to/cc fields and privacy"""
        @dataclass(init=False)
        class TestActivity(ActivityObject):
            """real simple mock"""

            to: List[str]
            cc: List[str]
            id: str = "http://hi.com"
            type: str = "Test"

        class TestPrivacyModel(ActivitypubMixin, BookWyrmModel):
            """real simple mock model because BookWyrmModel is abstract"""

            privacy_field = fields.PrivacyField()
            mention_users = fields.TagField(User)
            user = fields.ForeignKey(User, on_delete=models.CASCADE)

        public = "https://www.w3.org/ns/activitystreams#Public"
        data = TestActivity(
            to=[public],
            cc=["bleh"],
        )
        model_instance = TestPrivacyModel(privacy_field="direct")
        self.assertEqual(model_instance.privacy_field, "direct")

        instance = fields.PrivacyField()
        instance.name = "privacy_field"
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "public")

        data.to = ["bleh"]
        data.cc = []
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "direct")

        data.to = ["bleh"]
        data.cc = [public, "waah"]
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "unlisted")
コード例 #6
0
    def test_privacy_field_set_field_from_activity(self):
        ''' translate between to/cc fields and privacy '''
        @dataclass(init=False)
        class TestActivity(ActivityObject):
            ''' real simple mock '''
            to: List[str]
            cc: List[str]
            id: str = 'http://hi.com'
            type: str = 'Test'

        class TestPrivacyModel(ActivitypubMixin, BookWyrmModel):
            ''' real simple mock model because BookWyrmModel is abstract '''
            privacy_field = fields.PrivacyField()
            mention_users = fields.TagField(User)
            user = fields.ForeignKey(User, on_delete=models.CASCADE)

        public = 'https://www.w3.org/ns/activitystreams#Public'
        data = TestActivity(
            to=[public],
            cc=['bleh'],
        )
        model_instance = TestPrivacyModel(privacy_field='direct')
        self.assertEqual(model_instance.privacy_field, 'direct')

        instance = fields.PrivacyField()
        instance.name = 'privacy_field'
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, 'public')

        data.to = ['bleh']
        data.cc = []
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, 'direct')

        data.to = ['bleh']
        data.cc = [public, 'waah']
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, 'unlisted')
コード例 #7
0
ファイル: test_fields.py プロジェクト: AylaJK/bookwyrm
        class TestPrivacyModel(ActivitypubMixin, BookWyrmModel):
            """real simple mock model because BookWyrmModel is abstract"""

            privacy_field = fields.PrivacyField()
            mention_users = fields.TagField(User)
            user = fields.ForeignKey(User, on_delete=models.CASCADE)
コード例 #8
0
ファイル: test_fields.py プロジェクト: cincodenada/bookwyrm
    def test_privacy_field_set_field_from_activity(self, *_):
        """translate between to/cc fields and privacy"""

        with patch("bookwyrm.models.user.set_remote_server.delay"):
            test_user = User.objects.create_user(
                username="******",
                local=False,
                remote_id="https://example.com/test_user",
                inbox="https://example.com/users/test_user/inbox",
                followers_url="https://example.com/users/test_user/followers",
            )

        @dataclass(init=False)
        class TestActivity(ActivityObject):
            """real simple mock"""

            to: List[str]
            cc: List[str]
            id: str = "http://hi.com"
            type: str = "Test"
            attributedTo: str = test_user.remote_id

        class TestPrivacyModel(ActivitypubMixin, BookWyrmModel):
            """real simple mock model because BookWyrmModel is abstract"""

            privacy_field = fields.PrivacyField()
            mention_users = fields.TagField(User)
            user = fields.ForeignKey(User, on_delete=models.CASCADE)

        public = "https://www.w3.org/ns/activitystreams#Public"
        data = TestActivity(
            to=[public],
            cc=["bleh"],
        )
        model_instance = TestPrivacyModel(privacy_field="direct")
        self.assertEqual(model_instance.privacy_field, "direct")

        instance = fields.PrivacyField()
        instance.name = "privacy_field"
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "public")

        data.to = ["bleh"]
        data.cc = []
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "direct")

        data.to = ["bleh"]
        data.cc = [public, "waah"]
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "unlisted")

        data.to = [test_user.followers_url]
        data.cc = []
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "followers")

        data.to = ["http://user_remote/followers"]
        data.cc = ["http://mentioned_user/remote_id"]
        instance.set_field_from_activity(model_instance, data)
        self.assertEqual(model_instance.privacy_field, "followers")