@ -91,6 +91,49 @@ class RelationsTestCase(unittest.HomeserverTestCase):
channel = self . _send_relation ( RelationTypes . ANNOTATION , EventTypes . Member )
self . assertEquals ( 400 , channel . code , channel . json_body )
def test_deny_invalid_event ( self ) :
""" Test that we deny relations on non-existant events """
channel = self . _send_relation (
RelationTypes . ANNOTATION ,
EventTypes . Message ,
parent_id = " foo " ,
content = { " body " : " foo " , " msgtype " : " m.text " } ,
)
self . assertEquals ( 400 , channel . code , channel . json_body )
# Unless that event is referenced from another event!
self . get_success (
self . hs . get_datastore ( ) . db_pool . simple_insert (
table = " event_relations " ,
values = {
" event_id " : " bar " ,
" relates_to_id " : " foo " ,
" relation_type " : RelationTypes . THREAD ,
} ,
desc = " test_deny_invalid_event " ,
)
)
channel = self . _send_relation (
RelationTypes . THREAD ,
EventTypes . Message ,
parent_id = " foo " ,
content = { " body " : " foo " , " msgtype " : " m.text " } ,
)
self . assertEquals ( 200 , channel . code , channel . json_body )
def test_deny_invalid_room ( self ) :
""" Test that we deny relations on non-existant events """
# Create another room and send a message in it.
room2 = self . helper . create_room_as ( self . user_id , tok = self . user_token )
res = self . helper . send ( room2 , body = " Hi! " , tok = self . user_token )
parent_id = res [ " event_id " ]
# Attempt to send an annotation to that event.
channel = self . _send_relation (
RelationTypes . ANNOTATION , " m.reaction " , parent_id = parent_id , key = " A "
)
self . assertEquals ( 400 , channel . code , channel . json_body )
def test_deny_double_react ( self ) :
""" Test that we deny relations on membership events """
channel = self . _send_relation ( RelationTypes . ANNOTATION , " m.reaction " , key = " a " )
@ -99,6 +142,25 @@ class RelationsTestCase(unittest.HomeserverTestCase):
channel = self . _send_relation ( RelationTypes . ANNOTATION , " m.reaction " , " a " )
self . assertEquals ( 400 , channel . code , channel . json_body )
def test_deny_forked_thread ( self ) :
""" It is invalid to start a thread off a thread. """
channel = self . _send_relation (
RelationTypes . THREAD ,
" m.room.message " ,
content = { " msgtype " : " m.text " , " body " : " foo " } ,
parent_id = self . parent_id ,
)
self . assertEquals ( 200 , channel . code , channel . json_body )
parent_id = channel . json_body [ " event_id " ]
channel = self . _send_relation (
RelationTypes . THREAD ,
" m.room.message " ,
content = { " msgtype " : " m.text " , " body " : " foo " } ,
parent_id = parent_id ,
)
self . assertEquals ( 400 , channel . code , channel . json_body )
def test_basic_paginate_relations ( self ) :
""" Tests that calling pagination API correctly the latest relations. """
channel = self . _send_relation ( RelationTypes . ANNOTATION , " m.reaction " , " a " )