diff --git a/tests/handlers/test_federation.py b/tests/handlers/test_federation.py
index bc260c8aab..fd19442645 100644
--- a/tests/handlers/test_federation.py
+++ b/tests/handlers/test_federation.py
@@ -28,6 +28,8 @@ from mock import NonCallableMock, ANY
import logging
+from ..utils import get_mock_call_args
+
logging.getLogger().addHandler(logging.NullHandler())
@@ -99,9 +101,13 @@ class FederationTestCase(unittest.TestCase):
mem_handler = self.handlers.room_member_handler
self.assertEquals(1, mem_handler.change_membership.call_count)
- self.assertEquals(True, mem_handler.change_membership.call_args[0][1])
+ call_args = get_mock_call_args(
+ lambda event, do_auth: None,
+ mem_handler.change_membership
+ )
+ self.assertEquals(True, call_args["do_auth"])
- new_event = mem_handler.change_membership.call_args[0][0]
+ new_event = call_args["event"]
self.assertEquals(RoomMemberEvent.TYPE, new_event.type)
self.assertEquals(room_id, new_event.room_id)
self.assertEquals(user_id, new_event.state_key)
diff --git a/tests/utils.py b/tests/utils.py
index 6666b06931..b32d5ef356 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -28,6 +28,16 @@ from mock import patch, Mock
import json
import urlparse
+from inspect import getcallargs
+
+
+def get_mock_call_args(pattern_func, mock_func):
+ """ Return the arguments the mock function was called with interpreted
+ by the pattern functions argument list.
+ """
+ invoked_args, invoked_kargs = mock_func.call_args
+ return getcallargs(pattern_func, *invoked_args, **invoked_kargs)
+
# This is a mock /resource/ not an entire server
class MockHttpResource(HttpServer):
|