|
13 | 13 | # limitations under the License.
|
14 | 14 |
|
15 | 15 | """Tests REST events for /rooms paths."""
|
16 |
| - |
| 16 | +import synapse.rest.admin |
17 | 17 | from synapse.api.constants import APP_SERVICE_REGISTRATION_TYPE, LoginType
|
18 | 18 | from synapse.api.errors import Codes, HttpResponseException, SynapseError
|
19 | 19 | from synapse.appservice import ApplicationService
|
20 |
| -from synapse.rest.client import register, sync |
| 20 | +from synapse.rest.client import login, profile, register, sync |
21 | 21 |
|
22 | 22 | from tests import unittest
|
23 | 23 | from tests.unittest import override_config
|
|
26 | 26 |
|
27 | 27 | class TestMauLimit(unittest.HomeserverTestCase):
|
28 | 28 |
|
29 |
| - servlets = [register.register_servlets, sync.register_servlets] |
| 29 | + servlets = [ |
| 30 | + register.register_servlets, |
| 31 | + sync.register_servlets, |
| 32 | + synapse.rest.admin.register_servlets_for_client_rest_resource, |
| 33 | + profile.register_servlets, |
| 34 | + login.register_servlets, |
| 35 | + ] |
30 | 36 |
|
31 | 37 | def default_config(self):
|
32 | 38 | config = default_config("test")
|
@@ -229,6 +235,31 @@ def test_tracked_but_not_limited(self):
|
229 | 235 | self.reactor.advance(100)
|
230 | 236 | self.assertEqual(2, self.successResultOf(count))
|
231 | 237 |
|
| 238 | + def test_deactivated_users_dont_count_towards_mau(self): |
| 239 | + user1 = self.register_user("madonna", "password") |
| 240 | + self.register_user("prince", "password2") |
| 241 | + self.register_user("frodo", "onering", True) |
| 242 | + |
| 243 | + token1 = self.login("madonna", "password") |
| 244 | + token2 = self.login("prince", "password2") |
| 245 | + admin_token = self.login("frodo", "onering") |
| 246 | + |
| 247 | + self.do_sync_for_user(token1) |
| 248 | + self.do_sync_for_user(token2) |
| 249 | + |
| 250 | + # Check that mau count is what we expect |
| 251 | + count = self.get_success(self.store.get_monthly_active_count()) |
| 252 | + self.assertEqual(count, 2) |
| 253 | + |
| 254 | + # Deactivate user1 |
| 255 | + url = "/_synapse/admin/v1/deactivate/%s" % user1 |
| 256 | + channel = self.make_request("POST", url, access_token=admin_token) |
| 257 | + self.assertIn("success", channel.json_body["id_server_unbind_result"]) |
| 258 | + |
| 259 | + # Check that deactivated user is no longer counted |
| 260 | + count = self.get_success(self.store.get_monthly_active_count()) |
| 261 | + self.assertEqual(count, 1) |
| 262 | + |
232 | 263 | def create_user(self, localpart, token=None, appservice=False):
|
233 | 264 | request_data = {
|
234 | 265 | "username": localpart,
|
|
0 commit comments