mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-10-02 22:18:25 -04:00
Merge pull request #5934 from matrix-org/erikj/censor_redactions
Censor redactions in DB after a month
This commit is contained in:
commit
470dc621ae
6 changed files with 220 additions and 2 deletions
|
@ -17,6 +17,8 @@
|
|||
|
||||
from mock import Mock
|
||||
|
||||
from canonicaljson import json
|
||||
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.constants import EventTypes, Membership
|
||||
|
@ -29,8 +31,10 @@ from tests.utils import create_room
|
|||
|
||||
class RedactionTestCase(unittest.HomeserverTestCase):
|
||||
def make_homeserver(self, reactor, clock):
|
||||
config = self.default_config()
|
||||
config["redaction_retention_period"] = "30d"
|
||||
return self.setup_test_homeserver(
|
||||
resource_for_federation=Mock(), http_client=None
|
||||
resource_for_federation=Mock(), http_client=None, config=config
|
||||
)
|
||||
|
||||
def prepare(self, reactor, clock, hs):
|
||||
|
@ -286,3 +290,74 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
self.assertEqual(
|
||||
fetched.unsigned["redacted_because"].event_id, redaction_event_id2
|
||||
)
|
||||
|
||||
def test_redact_censor(self):
|
||||
"""Test that a redacted event gets censored in the DB after a month
|
||||
"""
|
||||
|
||||
self.get_success(
|
||||
self.inject_room_member(self.room1, self.u_alice, Membership.JOIN)
|
||||
)
|
||||
|
||||
msg_event = self.get_success(self.inject_message(self.room1, self.u_alice, "t"))
|
||||
|
||||
# Check event has not been redacted:
|
||||
event = self.get_success(self.store.get_event(msg_event.event_id))
|
||||
|
||||
self.assertObjectHasAttributes(
|
||||
{
|
||||
"type": EventTypes.Message,
|
||||
"user_id": self.u_alice.to_string(),
|
||||
"content": {"body": "t", "msgtype": "message"},
|
||||
},
|
||||
event,
|
||||
)
|
||||
|
||||
self.assertFalse("redacted_because" in event.unsigned)
|
||||
|
||||
# Redact event
|
||||
reason = "Because I said so"
|
||||
self.get_success(
|
||||
self.inject_redaction(self.room1, msg_event.event_id, self.u_alice, reason)
|
||||
)
|
||||
|
||||
event = self.get_success(self.store.get_event(msg_event.event_id))
|
||||
|
||||
self.assertTrue("redacted_because" in event.unsigned)
|
||||
|
||||
self.assertObjectHasAttributes(
|
||||
{
|
||||
"type": EventTypes.Message,
|
||||
"user_id": self.u_alice.to_string(),
|
||||
"content": {},
|
||||
},
|
||||
event,
|
||||
)
|
||||
|
||||
event_json = self.get_success(
|
||||
self.store._simple_select_one_onecol(
|
||||
table="event_json",
|
||||
keyvalues={"event_id": msg_event.event_id},
|
||||
retcol="json",
|
||||
)
|
||||
)
|
||||
|
||||
self.assert_dict(
|
||||
{"content": {"body": "t", "msgtype": "message"}}, json.loads(event_json)
|
||||
)
|
||||
|
||||
# Advance by 30 days, then advance again to ensure that the looping call
|
||||
# for updating the stream position gets called and then the looping call
|
||||
# for the censoring gets called.
|
||||
self.reactor.advance(60 * 60 * 24 * 31)
|
||||
self.reactor.advance(60 * 60 * 2)
|
||||
|
||||
event_json = self.get_success(
|
||||
self.store._simple_select_one_onecol(
|
||||
table="event_json",
|
||||
keyvalues={"event_id": msg_event.event_id},
|
||||
retcol="json",
|
||||
)
|
||||
)
|
||||
|
||||
self.assert_dict({"content": {}}, json.loads(event_json))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue