@ -654,6 +654,71 @@ class ClientIpStoreTestCase(unittest.HomeserverTestCase):
r ,
)
def test_invalid_user_agents_are_ignored ( self ) - > None :
# First make sure we have completed all updates.
self . wait_for_background_updates ( )
user_id1 = " @user1:id "
user_id2 = " @user2:id "
device_id1 = " MY_DEVICE1 "
device_id2 = " MY_DEVICE2 "
access_token1 = " access_token1 "
access_token2 = " access_token2 "
# Insert a user IP 1
self . get_success (
self . store . store_device (
user_id1 ,
device_id1 ,
" display name1 " ,
)
)
# Insert a user IP 2
self . get_success (
self . store . store_device (
user_id2 ,
device_id2 ,
" display name2 " ,
)
)
self . get_success (
self . store . insert_client_ip (
user_id1 , access_token1 , " ip " , " sync-v3-proxy- " , device_id1
)
)
self . get_success (
self . store . insert_client_ip (
user_id2 , access_token2 , " ip " , " user_agent " , device_id2
)
)
# Force persisting to disk
self . reactor . advance ( 200 )
# We should see that in the DB
result = self . get_success (
self . store . db_pool . simple_select_list (
table = " user_ips " ,
keyvalues = { } ,
retcols = [ " access_token " , " ip " , " user_agent " , " device_id " , " last_seen " ] ,
desc = " get_user_ip_and_agents " ,
)
)
# ensure user1 is filtered out
self . assertEqual (
result ,
[
{
" access_token " : access_token2 ,
" ip " : " ip " ,
" user_agent " : " user_agent " ,
" device_id " : device_id2 ,
" last_seen " : 0 ,
}
] ,
)
class ClientIpAuthTestCase ( unittest . HomeserverTestCase ) :
servlets = [