Merge pull request #4164 from matrix-org/erikj/fix_device_comparison
Fix noop checks when updating device keys
This commit is contained in:
commit
7b22421a7b
|
@ -0,0 +1 @@
|
|||
Fix noop checks when updating device keys, reducing spurious device list update notifications.
|
|
@ -40,7 +40,10 @@ class EndToEndKeyStore(SQLBaseStore):
|
|||
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:
|
||||
return False
|
||||
|
||||
|
|
|
@ -44,6 +44,21 @@ class EndToEndKeyStoreTestCase(tests.unittest.TestCase):
|
|||
dev = res["user"]["device"]
|
||||
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
|
||||
def test_get_key_with_device_name(self):
|
||||
now = 1470174257070
|
||||
|
|
Loading…
Reference in New Issue