Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 66f75c5

Browse files
authored
Merge pull request #8861 from matrix-org/rav/remove_unused_mocks
Remove some unnecessary mocking from the unit tests
2 parents ed51728 + 269ba1b commit 66f75c5

File tree

7 files changed

+7
-143
lines changed

7 files changed

+7
-143
lines changed

changelog.d/8861.misc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove some unnecessary stubbing from unit tests.

tests/api/test_filtering.py

+2-16
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
# See the License for the specific language governing permissions and
1717
# limitations under the License.
1818

19-
from mock import Mock
20-
2119
import jsonschema
2220

2321
from twisted.internet import defer
@@ -28,7 +26,7 @@
2826
from synapse.events import make_event_from_dict
2927

3028
from tests import unittest
31-
from tests.utils import DeferredMockCallable, MockHttpResource, setup_test_homeserver
29+
from tests.utils import setup_test_homeserver
3230

3331
user_localpart = "test_user"
3432

@@ -42,21 +40,9 @@ def MockEvent(**kwargs):
4240

4341

4442
class FilteringTestCase(unittest.TestCase):
45-
@defer.inlineCallbacks
4643
def setUp(self):
47-
self.mock_federation_resource = MockHttpResource()
48-
49-
self.mock_http_client = Mock(spec=[])
50-
self.mock_http_client.put_json = DeferredMockCallable()
51-
52-
hs = yield setup_test_homeserver(
53-
self.addCleanup,
54-
federation_http_client=self.mock_http_client,
55-
keyring=Mock(),
56-
)
57-
44+
hs = setup_test_homeserver(self.addCleanup)
5845
self.filtering = hs.get_filtering()
59-
6046
self.datastore = hs.get_datastore()
6147

6248
def test_errors_on_invalid_filters(self):

tests/handlers/test_directory.py

-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ def register_query_handler(query_type, handler):
4242
self.mock_registry.register_query_handler = register_query_handler
4343

4444
hs = self.setup_test_homeserver(
45-
federation_http_client=None,
46-
resource_for_federation=Mock(),
4745
federation_client=self.mock_federation,
4846
federation_registry=self.mock_registry,
4947
)

tests/handlers/test_profile.py

-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ def register_query_handler(query_type, handler):
4444

4545
hs = yield setup_test_homeserver(
4646
self.addCleanup,
47-
federation_http_client=None,
48-
resource_for_federation=Mock(),
4947
federation_client=self.mock_federation,
5048
federation_server=Mock(),
5149
federation_registry=self.mock_registry,

tests/storage/test_redaction.py

+3-8
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
18-
from mock import Mock
19-
2017
from canonicaljson import json
2118

2219
from twisted.internet import defer
@@ -30,12 +27,10 @@
3027

3128

3229
class RedactionTestCase(unittest.HomeserverTestCase):
33-
def make_homeserver(self, reactor, clock):
34-
config = self.default_config()
30+
def default_config(self):
31+
config = super().default_config()
3532
config["redaction_retention_period"] = "30d"
36-
return self.setup_test_homeserver(
37-
resource_for_federation=Mock(), federation_http_client=None, config=config
38-
)
33+
return config
3934

4035
def prepare(self, reactor, clock, hs):
4136
self.store = hs.get_datastore()

tests/storage/test_roommember.py

-8
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
from unittest.mock import Mock
18-
1917
from synapse.api.constants import Membership
2018
from synapse.rest.admin import register_servlets_for_client_rest_resource
2119
from synapse.rest.client.v1 import login, room
@@ -34,12 +32,6 @@ class RoomMemberStoreTestCase(unittest.HomeserverTestCase):
3432
room.register_servlets,
3533
]
3634

37-
def make_homeserver(self, reactor, clock):
38-
hs = self.setup_test_homeserver(
39-
resource_for_federation=Mock(), federation_http_client=None
40-
)
41-
return hs
42-
4335
def prepare(self, reactor, clock, hs: TestHomeServer):
4436

4537
# We can't test the RoomMemberStore on its own without the other event

tests/utils.py

+1-107
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,26 @@
2020
import time
2121
import uuid
2222
import warnings
23-
from inspect import getcallargs
2423
from typing import Type
2524
from urllib import parse as urlparse
2625

2726
from mock import Mock, patch
2827

29-
from twisted.internet import defer, reactor
28+
from twisted.internet import defer
3029

3130
from synapse.api.constants import EventTypes
3231
from synapse.api.errors import CodeMessageException, cs_error
3332
from synapse.api.room_versions import RoomVersions
3433
from synapse.config.database import DatabaseConnectionConfig
3534
from synapse.config.homeserver import HomeServerConfig
3635
from synapse.config.server import DEFAULT_ROOM_VERSION
37-
from synapse.federation.transport import server as federation_server
3836
from synapse.http.server import HttpServer
3937
from synapse.logging.context import current_context, set_current_context
4038
from synapse.server import HomeServer
4139
from synapse.storage import DataStore
4240
from synapse.storage.database import LoggingDatabaseConnection
4341
from synapse.storage.engines import PostgresEngine, create_engine
4442
from synapse.storage.prepare_database import prepare_database
45-
from synapse.util.ratelimitutils import FederationRateLimiter
4643

4744
# set this to True to run the tests against postgres instead of sqlite.
4845
#
@@ -342,32 +339,9 @@ async def validate_hash(p, h):
342339

343340
hs.get_auth_handler().validate_hash = validate_hash
344341

345-
fed = kwargs.get("resource_for_federation", None)
346-
if fed:
347-
register_federation_servlets(hs, fed)
348-
349342
return hs
350343

351344

352-
def register_federation_servlets(hs, resource):
353-
federation_server.register_servlets(
354-
hs,
355-
resource=resource,
356-
authenticator=federation_server.Authenticator(hs),
357-
ratelimiter=FederationRateLimiter(
358-
hs.get_clock(), config=hs.config.rc_federation
359-
),
360-
)
361-
362-
363-
def get_mock_call_args(pattern_func, mock_func):
364-
""" Return the arguments the mock function was called with interpreted
365-
by the pattern functions argument list.
366-
"""
367-
invoked_args, invoked_kargs = mock_func.call_args
368-
return getcallargs(pattern_func, *invoked_args, **invoked_kargs)
369-
370-
371345
def mock_getRawHeaders(headers=None):
372346
headers = headers if headers is not None else {}
373347

@@ -553,86 +527,6 @@ def time_bound_deferred(self, d, *args, **kwargs):
553527
return d
554528

555529

556-
def _format_call(args, kwargs):
557-
return ", ".join(
558-
["%r" % (a) for a in args] + ["%s=%r" % (k, v) for k, v in kwargs.items()]
559-
)
560-
561-
562-
class DeferredMockCallable:
563-
"""A callable instance that stores a set of pending call expectations and
564-
return values for them. It allows a unit test to assert that the given set
565-
of function calls are eventually made, by awaiting on them to be called.
566-
"""
567-
568-
def __init__(self):
569-
self.expectations = []
570-
self.calls = []
571-
572-
def __call__(self, *args, **kwargs):
573-
self.calls.append((args, kwargs))
574-
575-
if not self.expectations:
576-
raise ValueError(
577-
"%r has no pending calls to handle call(%s)"
578-
% (self, _format_call(args, kwargs))
579-
)
580-
581-
for (call, result, d) in self.expectations:
582-
if args == call[1] and kwargs == call[2]:
583-
d.callback(None)
584-
return result
585-
586-
failure = AssertionError(
587-
"Was not expecting call(%s)" % (_format_call(args, kwargs))
588-
)
589-
590-
for _, _, d in self.expectations:
591-
try:
592-
d.errback(failure)
593-
except Exception:
594-
pass
595-
596-
raise failure
597-
598-
def expect_call_and_return(self, call, result):
599-
self.expectations.append((call, result, defer.Deferred()))
600-
601-
@defer.inlineCallbacks
602-
def await_calls(self, timeout=1000):
603-
deferred = defer.DeferredList(
604-
[d for _, _, d in self.expectations], fireOnOneErrback=True
605-
)
606-
607-
timer = reactor.callLater(
608-
timeout / 1000,
609-
deferred.errback,
610-
AssertionError(
611-
"%d pending calls left: %s"
612-
% (
613-
len([e for e in self.expectations if not e[2].called]),
614-
[e for e in self.expectations if not e[2].called],
615-
)
616-
),
617-
)
618-
619-
yield deferred
620-
621-
timer.cancel()
622-
623-
self.calls = []
624-
625-
def assert_had_no_calls(self):
626-
if self.calls:
627-
calls = self.calls
628-
self.calls = []
629-
630-
raise AssertionError(
631-
"Expected not to received any calls, got:\n"
632-
+ "\n".join(["call(%s)" % _format_call(c[0], c[1]) for c in calls])
633-
)
634-
635-
636530
async def create_room(hs, room_id: str, creator_id: str):
637531
"""Creates and persist a creation event for the given room
638532
"""

0 commit comments

Comments
 (0)