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')
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")
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"], [])
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'], [])
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")
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')
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)
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")