|
|
|
@ -62,6 +62,77 @@ class ClientIpStoreTestCase(unittest.HomeserverTestCase): |
|
|
|
|
r, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
def test_insert_new_client_ip_none_device_id(self): |
|
|
|
|
""" |
|
|
|
|
An insert with a device ID of NULL will not create a new entry, but |
|
|
|
|
update an existing entry in the user_ips table. |
|
|
|
|
""" |
|
|
|
|
self.reactor.advance(12345678) |
|
|
|
|
|
|
|
|
|
user_id = "@user:id" |
|
|
|
|
|
|
|
|
|
# Add & trigger the storage loop |
|
|
|
|
self.get_success( |
|
|
|
|
self.store.insert_client_ip( |
|
|
|
|
user_id, "access_token", "ip", "user_agent", None |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
self.reactor.advance(200) |
|
|
|
|
self.pump(0) |
|
|
|
|
|
|
|
|
|
result = self.get_success( |
|
|
|
|
self.store._simple_select_list( |
|
|
|
|
table="user_ips", |
|
|
|
|
keyvalues={"user_id": user_id}, |
|
|
|
|
retcols=["access_token", "ip", "user_agent", "device_id", "last_seen"], |
|
|
|
|
desc="get_user_ip_and_agents", |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
self.assertEqual( |
|
|
|
|
result, |
|
|
|
|
[ |
|
|
|
|
{ |
|
|
|
|
'access_token': 'access_token', |
|
|
|
|
'ip': 'ip', |
|
|
|
|
'user_agent': 'user_agent', |
|
|
|
|
'device_id': None, |
|
|
|
|
'last_seen': 12345678000, |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
# Add another & trigger the storage loop |
|
|
|
|
self.get_success( |
|
|
|
|
self.store.insert_client_ip( |
|
|
|
|
user_id, "access_token", "ip", "user_agent", None |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
self.reactor.advance(10) |
|
|
|
|
self.pump(0) |
|
|
|
|
|
|
|
|
|
result = self.get_success( |
|
|
|
|
self.store._simple_select_list( |
|
|
|
|
table="user_ips", |
|
|
|
|
keyvalues={"user_id": user_id}, |
|
|
|
|
retcols=["access_token", "ip", "user_agent", "device_id", "last_seen"], |
|
|
|
|
desc="get_user_ip_and_agents", |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
# Only one result, has been upserted. |
|
|
|
|
self.assertEqual( |
|
|
|
|
result, |
|
|
|
|
[ |
|
|
|
|
{ |
|
|
|
|
'access_token': 'access_token', |
|
|
|
|
'ip': 'ip', |
|
|
|
|
'user_agent': 'user_agent', |
|
|
|
|
'device_id': None, |
|
|
|
|
'last_seen': 12345878000, |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
def test_disabled_monthly_active_user(self): |
|
|
|
|
self.hs.config.limit_usage_by_mau = False |
|
|
|
|
self.hs.config.max_mau_value = 50 |
|
|
|
|