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,
|
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):
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue