mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 08:36:03 -04:00
Allow tracking puppeted users for MAU (#11561)
Currently when puppeting another user, the user doing the puppeting is tracked for client IPs and MAU (if configured). When tracking MAU is important, it becomes necessary to be possible to also track the client IPs and MAU of puppeted users. As an example a client that manages user creation and creation of tokens via the Synapse admin API, passing those tokens for the client to use. This PR adds optional configuration to enable tracking of puppeted users into monthly active users. The default behaviour stays the same. Signed-off-by: Jason Robinson <jasonr@matrix.org>
This commit is contained in:
parent
99ba5ae7b7
commit
2560b1b6b2
5 changed files with 63 additions and 0 deletions
|
@ -274,6 +274,39 @@ class AuthTestCase(unittest.HomeserverTestCase):
|
|||
self.assertEquals(failure.value.code, 400)
|
||||
self.assertEquals(failure.value.errcode, Codes.EXCLUSIVE)
|
||||
|
||||
def test_get_user_by_req__puppeted_token__not_tracking_puppeted_mau(self):
|
||||
self.store.get_user_by_access_token = simple_async_mock(
|
||||
TokenLookupResult(
|
||||
user_id="@baldrick:matrix.org",
|
||||
device_id="device",
|
||||
token_owner="@admin:matrix.org",
|
||||
)
|
||||
)
|
||||
self.store.insert_client_ip = simple_async_mock(None)
|
||||
request = Mock(args={})
|
||||
request.getClientIP.return_value = "127.0.0.1"
|
||||
request.args[b"access_token"] = [self.test_token]
|
||||
request.requestHeaders.getRawHeaders = mock_getRawHeaders()
|
||||
self.get_success(self.auth.get_user_by_req(request))
|
||||
self.store.insert_client_ip.assert_called_once()
|
||||
|
||||
def test_get_user_by_req__puppeted_token__tracking_puppeted_mau(self):
|
||||
self.auth._track_puppeted_user_ips = True
|
||||
self.store.get_user_by_access_token = simple_async_mock(
|
||||
TokenLookupResult(
|
||||
user_id="@baldrick:matrix.org",
|
||||
device_id="device",
|
||||
token_owner="@admin:matrix.org",
|
||||
)
|
||||
)
|
||||
self.store.insert_client_ip = simple_async_mock(None)
|
||||
request = Mock(args={})
|
||||
request.getClientIP.return_value = "127.0.0.1"
|
||||
request.args[b"access_token"] = [self.test_token]
|
||||
request.requestHeaders.getRawHeaders = mock_getRawHeaders()
|
||||
self.get_success(self.auth.get_user_by_req(request))
|
||||
self.assertEquals(self.store.insert_client_ip.call_count, 2)
|
||||
|
||||
def test_get_user_from_macaroon(self):
|
||||
self.store.get_user_by_access_token = simple_async_mock(
|
||||
TokenLookupResult(user_id="@baldrick:matrix.org", device_id="device")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue