make /devices return a list

Turns out I specced this to return a list of devices rather than a dict of them
pull/944/head
Richard van der Hoff 2016-07-21 15:55:13 +01:00
parent 2c28e25bda
commit 55abbe1850
2 changed files with 12 additions and 9 deletions

View File

@ -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)

View File

@ -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):