Add mau_appservice_trial_days config (#12619)

* Add mau_appservice_trial_days

* Add a test

* Tweaks

* changelog

* Ensure we sync after the delay

* Fix types

* Add config statement

* Fix test

* Reinstate logging that got removed

* Fix feature name
This commit is contained in:
Will Hunt 2022-05-04 19:33:26 +01:00 committed by GitHub
parent 7fbf42499d
commit 2d74a8c178
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 110 additions and 2 deletions

View file

@ -14,6 +14,8 @@
"""Tests REST events for /rooms paths."""
from typing import List
from synapse.api.constants import APP_SERVICE_REGISTRATION_TYPE, LoginType
from synapse.api.errors import Codes, HttpResponseException, SynapseError
from synapse.appservice import ApplicationService
@ -229,6 +231,78 @@ class TestMauLimit(unittest.HomeserverTestCase):
self.reactor.advance(100)
self.assertEqual(2, self.successResultOf(count))
@override_config(
{
"mau_trial_days": 3,
"mau_appservice_trial_days": {"SomeASID": 1, "AnotherASID": 2},
}
)
def test_as_trial_days(self):
user_tokens: List[str] = []
def advance_time_and_sync():
self.reactor.advance(24 * 60 * 61)
for token in user_tokens:
self.do_sync_for_user(token)
# Cheekily add an application service that we use to register a new user
# with.
as_token_1 = "foobartoken1"
self.store.services_cache.append(
ApplicationService(
token=as_token_1,
hostname=self.hs.hostname,
id="SomeASID",
sender="@as_sender_1:test",
namespaces={"users": [{"regex": "@as_1.*", "exclusive": True}]},
)
)
as_token_2 = "foobartoken2"
self.store.services_cache.append(
ApplicationService(
token=as_token_2,
hostname=self.hs.hostname,
id="AnotherASID",
sender="@as_sender_2:test",
namespaces={"users": [{"regex": "@as_2.*", "exclusive": True}]},
)
)
user_tokens.append(self.create_user("kermit1"))
user_tokens.append(self.create_user("kermit2"))
user_tokens.append(
self.create_user("as_1kermit3", token=as_token_1, appservice=True)
)
user_tokens.append(
self.create_user("as_2kermit4", token=as_token_2, appservice=True)
)
# Advance time by 1 day to include the first appservice
advance_time_and_sync()
self.assertEqual(
self.get_success(self.store.get_monthly_active_count_by_service()),
{"SomeASID": 1},
)
# Advance time by 1 day to include the next appservice
advance_time_and_sync()
self.assertEqual(
self.get_success(self.store.get_monthly_active_count_by_service()),
{"SomeASID": 1, "AnotherASID": 1},
)
# Advance time by 1 day to include the native users
advance_time_and_sync()
self.assertEqual(
self.get_success(self.store.get_monthly_active_count_by_service()),
{
"SomeASID": 1,
"AnotherASID": 1,
"native": 2,
},
)
def create_user(self, localpart, token=None, appservice=False):
request_data = {
"username": localpart,