diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py
index 110f5fbb5c..1f9e15c33c 100644
--- a/synapse/handlers/device.py
+++ b/synapse/handlers/device.py
@@ -79,17 +79,17 @@ class DeviceHandler(BaseHandler):
Args:
user_id (str):
Returns:
- defer.Deferred: dict[str, dict[str, X]]: map from device_id to
- info on the device
+ defer.Deferred: list[dict[str, X]]: info on each device
"""
- devices = yield self.store.get_devices_by_user(user_id)
+ device_map = yield self.store.get_devices_by_user(user_id)
ips = yield self.store.get_last_client_ip_by_device(
- devices=((user_id, device_id) for device_id in devices.keys())
+ devices=((user_id, device_id) for device_id in device_map.keys())
)
- for device in devices.values():
+ devices = device_map.values()
+ for device in devices:
_update_device_from_client_ips(device, ips)
defer.returnValue(devices)
diff --git a/tests/handlers/test_device.py b/tests/handlers/test_device.py
index 87c3c75aea..331aa13fed 100644
--- a/tests/handlers/test_device.py
+++ b/tests/handlers/test_device.py
@@ -84,28 +84,31 @@ class DeviceTestCase(unittest.TestCase):
yield self._record_users()
res = yield self.handler.get_devices_by_user(user1)
- self.assertEqual(3, len(res.keys()))
+ self.assertEqual(3, len(res))
+ device_map = {
+ d["device_id"]: d for d in res
+ }
self.assertDictContainsSubset({
"user_id": user1,
"device_id": "xyz",
"display_name": "display 0",
"last_seen_ip": None,
"last_seen_ts": None,
- }, res["xyz"])
+ }, device_map["xyz"])
self.assertDictContainsSubset({
"user_id": user1,
"device_id": "fco",
"display_name": "display 1",
"last_seen_ip": "ip1",
"last_seen_ts": 1000000,
- }, res["fco"])
+ }, device_map["fco"])
self.assertDictContainsSubset({
"user_id": user1,
"device_id": "abc",
"display_name": "display 2",
"last_seen_ip": "ip3",
"last_seen_ts": 3000000,
- }, res["abc"])
+ }, device_map["abc"])
@defer.inlineCallbacks
def test_get_device(self):
|