Skip to content
Snippets Groups Projects
Unverified Commit 7b22421a authored by Erik Johnston's avatar Erik Johnston Committed by GitHub
Browse files

Merge pull request #4164 from matrix-org/erikj/fix_device_comparison

Fix noop checks when updating device keys
parents c70809a2 abaa93c1
Branches
Tags
No related merge requests found
Fix noop checks when updating device keys, reducing spurious device list update notifications.
...@@ -40,7 +40,10 @@ class EndToEndKeyStore(SQLBaseStore): ...@@ -40,7 +40,10 @@ class EndToEndKeyStore(SQLBaseStore):
allow_none=True, allow_none=True,
) )
new_key_json = encode_canonical_json(device_keys) # In py3 we need old_key_json to match new_key_json type. The DB
# returns unicode while encode_canonical_json returns bytes.
new_key_json = encode_canonical_json(device_keys).decode("utf-8")
if old_key_json == new_key_json: if old_key_json == new_key_json:
return False return False
......
...@@ -44,6 +44,21 @@ class EndToEndKeyStoreTestCase(tests.unittest.TestCase): ...@@ -44,6 +44,21 @@ class EndToEndKeyStoreTestCase(tests.unittest.TestCase):
dev = res["user"]["device"] dev = res["user"]["device"]
self.assertDictContainsSubset({"keys": json, "device_display_name": None}, dev) self.assertDictContainsSubset({"keys": json, "device_display_name": None}, dev)
@defer.inlineCallbacks
def test_reupload_key(self):
now = 1470174257070
json = {"key": "value"}
yield self.store.store_device("user", "device", None)
changed = yield self.store.set_e2e_device_keys("user", "device", now, json)
self.assertTrue(changed)
# If we try to upload the same key then we should be told nothing
# changed
changed = yield self.store.set_e2e_device_keys("user", "device", now, json)
self.assertFalse(changed)
@defer.inlineCallbacks @defer.inlineCallbacks
def test_get_key_with_device_name(self): def test_get_key_with_device_name(self):
now = 1470174257070 now = 1470174257070
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment