diff --git a/tests/test_mau.py b/tests/test_mau.py
index bdbacb8448..04f95c942f 100644
--- a/tests/test_mau.py
+++ b/tests/test_mau.py
@@ -21,30 +21,20 @@ from mock import Mock, NonCallableMock
from synapse.api.constants import LoginType
from synapse.api.errors import Codes, HttpResponseException, SynapseError
-from synapse.http.server import JsonResource
from synapse.rest.client.v2_alpha import register, sync
-from synapse.util import Clock
from tests import unittest
-from tests.server import (
- ThreadedMemoryReactorClock,
- make_request,
- render,
- setup_test_homeserver,
-)
-class TestMauLimit(unittest.TestCase):
- def setUp(self):
- self.reactor = ThreadedMemoryReactorClock()
- self.clock = Clock(self.reactor)
+class TestMauLimit(unittest.HomeserverTestCase):
- self.hs = setup_test_homeserver(
- self.addCleanup,
+ servlets = [register.register_servlets, sync.register_servlets]
+
+ def make_homeserver(self, reactor, clock):
+
+ self.hs = self.setup_test_homeserver(
"red",
http_client=None,
- clock=self.clock,
- reactor=self.reactor,
federation_client=Mock(),
ratelimiter=NonCallableMock(spec_set=["send_message"]),
)
@@ -63,10 +53,7 @@ class TestMauLimit(unittest.TestCase):
self.hs.config.server_notices_mxid_display_name = None
self.hs.config.server_notices_mxid_avatar_url = None
self.hs.config.server_notices_room_name = "Test Server Notice Room"
-
- self.resource = JsonResource(self.hs)
- register.register_servlets(self.hs, self.resource)
- sync.register_servlets(self.hs, self.resource)
+ return self.hs
def test_simple_deny_mau(self):
# Create and sync so that the MAU counts get updated
@@ -184,6 +171,24 @@ class TestMauLimit(unittest.TestCase):
self.assertEqual(e.code, 403)
self.assertEqual(e.errcode, Codes.RESOURCE_LIMIT_EXCEEDED)
+ def test_tracked_but_not_limited(self):
+ self.hs.config.max_mau_value = 1 # should not matter
+ self.hs.config.limit_usage_by_mau = False
+ self.hs.config.mau_stats_only = True
+
+ # Simply being able to create 2 users indicates that the
+ # limit was not reached.
+ token1 = self.create_user("kermit1")
+ self.do_sync_for_user(token1)
+ token2 = self.create_user("kermit2")
+ self.do_sync_for_user(token2)
+
+ # We do want to verify that the number of tracked users
+ # matches what we want though
+ count = self.store.get_monthly_active_count()
+ self.reactor.advance(100)
+ self.assertEqual(2, self.successResultOf(count))
+
def create_user(self, localpart):
request_data = json.dumps(
{
@@ -193,8 +198,8 @@ class TestMauLimit(unittest.TestCase):
}
)
- request, channel = make_request("POST", "/register", request_data)
- render(request, self.resource, self.reactor)
+ request, channel = self.make_request("POST", "/register", request_data)
+ self.render(request)
if channel.code != 200:
raise HttpResponseException(
@@ -206,10 +211,10 @@ class TestMauLimit(unittest.TestCase):
return access_token
def do_sync_for_user(self, token):
- request, channel = make_request(
- "GET", "/sync", access_token=token.encode('ascii')
+ request, channel = self.make_request(
+ "GET", "/sync", access_token=token
)
- render(request, self.resource, self.reactor)
+ self.render(request)
if channel.code != 200:
raise HttpResponseException(
|