Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit e7b769a

Browse files
authored
Convert storage test cases to HomeserverTestCase. (#9736)
1 parent e2b8a90 commit e7b769a

File tree

11 files changed

+265
-499
lines changed

11 files changed

+265
-499
lines changed

changelog.d/9736.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Convert various testcases to `HomeserverTestCase`.

tests/storage/test_devices.py

Lines changed: 32 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
# Copyright 2016 OpenMarket Ltd
2+
# Copyright 2016-2021 The Matrix.org Foundation C.I.C.
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -13,32 +13,21 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
from twisted.internet import defer
17-
1816
import synapse.api.errors
1917

20-
import tests.unittest
21-
import tests.utils
22-
23-
24-
class DeviceStoreTestCase(tests.unittest.TestCase):
25-
def __init__(self, *args, **kwargs):
26-
super().__init__(*args, **kwargs)
27-
self.store = None # type: synapse.storage.DataStore
18+
from tests.unittest import HomeserverTestCase
2819

29-
@defer.inlineCallbacks
30-
def setUp(self):
31-
hs = yield tests.utils.setup_test_homeserver(self.addCleanup)
3220

21+
class DeviceStoreTestCase(HomeserverTestCase):
22+
def prepare(self, reactor, clock, hs):
3323
self.store = hs.get_datastore()
3424

35-
@defer.inlineCallbacks
3625
def test_store_new_device(self):
37-
yield defer.ensureDeferred(
26+
self.get_success(
3827
self.store.store_device("user_id", "device_id", "display_name")
3928
)
4029

41-
res = yield defer.ensureDeferred(self.store.get_device("user_id", "device_id"))
30+
res = self.get_success(self.store.get_device("user_id", "device_id"))
4231
self.assertDictContainsSubset(
4332
{
4433
"user_id": "user_id",
@@ -48,19 +37,18 @@ def test_store_new_device(self):
4837
res,
4938
)
5039

51-
@defer.inlineCallbacks
5240
def test_get_devices_by_user(self):
53-
yield defer.ensureDeferred(
41+
self.get_success(
5442
self.store.store_device("user_id", "device1", "display_name 1")
5543
)
56-
yield defer.ensureDeferred(
44+
self.get_success(
5745
self.store.store_device("user_id", "device2", "display_name 2")
5846
)
59-
yield defer.ensureDeferred(
47+
self.get_success(
6048
self.store.store_device("user_id2", "device3", "display_name 3")
6149
)
6250

63-
res = yield defer.ensureDeferred(self.store.get_devices_by_user("user_id"))
51+
res = self.get_success(self.store.get_devices_by_user("user_id"))
6452
self.assertEqual(2, len(res.keys()))
6553
self.assertDictContainsSubset(
6654
{
@@ -79,43 +67,41 @@ def test_get_devices_by_user(self):
7967
res["device2"],
8068
)
8169

82-
@defer.inlineCallbacks
8370
def test_count_devices_by_users(self):
84-
yield defer.ensureDeferred(
71+
self.get_success(
8572
self.store.store_device("user_id", "device1", "display_name 1")
8673
)
87-
yield defer.ensureDeferred(
74+
self.get_success(
8875
self.store.store_device("user_id", "device2", "display_name 2")
8976
)
90-
yield defer.ensureDeferred(
77+
self.get_success(
9178
self.store.store_device("user_id2", "device3", "display_name 3")
9279
)
9380

94-
res = yield defer.ensureDeferred(self.store.count_devices_by_users())
81+
res = self.get_success(self.store.count_devices_by_users())
9582
self.assertEqual(0, res)
9683

97-
res = yield defer.ensureDeferred(self.store.count_devices_by_users(["unknown"]))
84+
res = self.get_success(self.store.count_devices_by_users(["unknown"]))
9885
self.assertEqual(0, res)
9986

100-
res = yield defer.ensureDeferred(self.store.count_devices_by_users(["user_id"]))
87+
res = self.get_success(self.store.count_devices_by_users(["user_id"]))
10188
self.assertEqual(2, res)
10289

103-
res = yield defer.ensureDeferred(
90+
res = self.get_success(
10491
self.store.count_devices_by_users(["user_id", "user_id2"])
10592
)
10693
self.assertEqual(3, res)
10794

108-
@defer.inlineCallbacks
10995
def test_get_device_updates_by_remote(self):
11096
device_ids = ["device_id1", "device_id2"]
11197

11298
# Add two device updates with a single stream_id
113-
yield defer.ensureDeferred(
99+
self.get_success(
114100
self.store.add_device_change_to_streams("user_id", device_ids, ["somehost"])
115101
)
116102

117103
# Get all device updates ever meant for this remote
118-
now_stream_id, device_updates = yield defer.ensureDeferred(
104+
now_stream_id, device_updates = self.get_success(
119105
self.store.get_device_updates_by_remote("somehost", -1, limit=100)
120106
)
121107

@@ -131,37 +117,35 @@ def _check_devices_in_updates(self, expected_device_ids, device_updates):
131117
}
132118
self.assertEqual(received_device_ids, set(expected_device_ids))
133119

134-
@defer.inlineCallbacks
135120
def test_update_device(self):
136-
yield defer.ensureDeferred(
121+
self.get_success(
137122
self.store.store_device("user_id", "device_id", "display_name 1")
138123
)
139124

140-
res = yield defer.ensureDeferred(self.store.get_device("user_id", "device_id"))
125+
res = self.get_success(self.store.get_device("user_id", "device_id"))
141126
self.assertEqual("display_name 1", res["display_name"])
142127

143128
# do a no-op first
144-
yield defer.ensureDeferred(self.store.update_device("user_id", "device_id"))
145-
res = yield defer.ensureDeferred(self.store.get_device("user_id", "device_id"))
129+
self.get_success(self.store.update_device("user_id", "device_id"))
130+
res = self.get_success(self.store.get_device("user_id", "device_id"))
146131
self.assertEqual("display_name 1", res["display_name"])
147132

148133
# do the update
149-
yield defer.ensureDeferred(
134+
self.get_success(
150135
self.store.update_device(
151136
"user_id", "device_id", new_display_name="display_name 2"
152137
)
153138
)
154139

155140
# check it worked
156-
res = yield defer.ensureDeferred(self.store.get_device("user_id", "device_id"))
141+
res = self.get_success(self.store.get_device("user_id", "device_id"))
157142
self.assertEqual("display_name 2", res["display_name"])
158143

159-
@defer.inlineCallbacks
160144
def test_update_unknown_device(self):
161-
with self.assertRaises(synapse.api.errors.StoreError) as cm:
162-
yield defer.ensureDeferred(
163-
self.store.update_device(
164-
"user_id", "unknown_device_id", new_display_name="display_name 2"
165-
)
166-
)
167-
self.assertEqual(404, cm.exception.code)
145+
exc = self.get_failure(
146+
self.store.update_device(
147+
"user_id", "unknown_device_id", new_display_name="display_name 2"
148+
),
149+
synapse.api.errors.StoreError,
150+
)
151+
self.assertEqual(404, exc.value.code)

tests/storage/test_directory.py

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
# Copyright 2014-2016 OpenMarket Ltd
2+
# Copyright 2014-2021 The Matrix.org Foundation C.I.C.
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -13,74 +13,52 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
17-
from twisted.internet import defer
18-
1916
from synapse.types import RoomAlias, RoomID
2017

21-
from tests import unittest
22-
from tests.utils import setup_test_homeserver
18+
from tests.unittest import HomeserverTestCase
2319

2420

25-
class DirectoryStoreTestCase(unittest.TestCase):
26-
@defer.inlineCallbacks
27-
def setUp(self):
28-
hs = yield setup_test_homeserver(self.addCleanup)
29-
21+
class DirectoryStoreTestCase(HomeserverTestCase):
22+
def prepare(self, reactor, clock, hs):
3023
self.store = hs.get_datastore()
3124

3225
self.room = RoomID.from_string("!abcde:test")
3326
self.alias = RoomAlias.from_string("#my-room:test")
3427

35-
@defer.inlineCallbacks
3628
def test_room_to_alias(self):
37-
yield defer.ensureDeferred(
29+
self.get_success(
3830
self.store.create_room_alias_association(
3931
room_alias=self.alias, room_id=self.room.to_string(), servers=["test"]
4032
)
4133
)
4234

4335
self.assertEquals(
4436
["#my-room:test"],
45-
(
46-
yield defer.ensureDeferred(
47-
self.store.get_aliases_for_room(self.room.to_string())
48-
)
49-
),
37+
(self.get_success(self.store.get_aliases_for_room(self.room.to_string()))),
5038
)
5139

52-
@defer.inlineCallbacks
5340
def test_alias_to_room(self):
54-
yield defer.ensureDeferred(
41+
self.get_success(
5542
self.store.create_room_alias_association(
5643
room_alias=self.alias, room_id=self.room.to_string(), servers=["test"]
5744
)
5845
)
5946

6047
self.assertObjectHasAttributes(
6148
{"room_id": self.room.to_string(), "servers": ["test"]},
62-
(
63-
yield defer.ensureDeferred(
64-
self.store.get_association_from_room_alias(self.alias)
65-
)
66-
),
49+
(self.get_success(self.store.get_association_from_room_alias(self.alias))),
6750
)
6851

69-
@defer.inlineCallbacks
7052
def test_delete_alias(self):
71-
yield defer.ensureDeferred(
53+
self.get_success(
7254
self.store.create_room_alias_association(
7355
room_alias=self.alias, room_id=self.room.to_string(), servers=["test"]
7456
)
7557
)
7658

77-
room_id = yield defer.ensureDeferred(self.store.delete_room_alias(self.alias))
59+
room_id = self.get_success(self.store.delete_room_alias(self.alias))
7860
self.assertEqual(self.room.to_string(), room_id)
7961

8062
self.assertIsNone(
81-
(
82-
yield defer.ensureDeferred(
83-
self.store.get_association_from_room_alias(self.alias)
84-
)
85-
)
63+
(self.get_success(self.store.get_association_from_room_alias(self.alias)))
8664
)

tests/storage/test_end_to_end_keys.py

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
# Copyright 2016 OpenMarket Ltd
2+
# Copyright 2016-2021 The Matrix.org Foundation C.I.C.
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -13,69 +13,55 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
from twisted.internet import defer
16+
from tests.unittest import HomeserverTestCase
1717

18-
import tests.unittest
19-
import tests.utils
2018

21-
22-
class EndToEndKeyStoreTestCase(tests.unittest.TestCase):
23-
@defer.inlineCallbacks
24-
def setUp(self):
25-
hs = yield tests.utils.setup_test_homeserver(self.addCleanup)
19+
class EndToEndKeyStoreTestCase(HomeserverTestCase):
20+
def prepare(self, reactor, clock, hs):
2621
self.store = hs.get_datastore()
2722

28-
@defer.inlineCallbacks
2923
def test_key_without_device_name(self):
3024
now = 1470174257070
3125
json = {"key": "value"}
3226

33-
yield defer.ensureDeferred(self.store.store_device("user", "device", None))
27+
self.get_success(self.store.store_device("user", "device", None))
3428

35-
yield defer.ensureDeferred(
36-
self.store.set_e2e_device_keys("user", "device", now, json)
37-
)
29+
self.get_success(self.store.set_e2e_device_keys("user", "device", now, json))
3830

39-
res = yield defer.ensureDeferred(
31+
res = self.get_success(
4032
self.store.get_e2e_device_keys_for_cs_api((("user", "device"),))
4133
)
4234
self.assertIn("user", res)
4335
self.assertIn("device", res["user"])
4436
dev = res["user"]["device"]
4537
self.assertDictContainsSubset(json, dev)
4638

47-
@defer.inlineCallbacks
4839
def test_reupload_key(self):
4940
now = 1470174257070
5041
json = {"key": "value"}
5142

52-
yield defer.ensureDeferred(self.store.store_device("user", "device", None))
43+
self.get_success(self.store.store_device("user", "device", None))
5344

54-
changed = yield defer.ensureDeferred(
45+
changed = self.get_success(
5546
self.store.set_e2e_device_keys("user", "device", now, json)
5647
)
5748
self.assertTrue(changed)
5849

5950
# If we try to upload the same key then we should be told nothing
6051
# changed
61-
changed = yield defer.ensureDeferred(
52+
changed = self.get_success(
6253
self.store.set_e2e_device_keys("user", "device", now, json)
6354
)
6455
self.assertFalse(changed)
6556

66-
@defer.inlineCallbacks
6757
def test_get_key_with_device_name(self):
6858
now = 1470174257070
6959
json = {"key": "value"}
7060

71-
yield defer.ensureDeferred(
72-
self.store.set_e2e_device_keys("user", "device", now, json)
73-
)
74-
yield defer.ensureDeferred(
75-
self.store.store_device("user", "device", "display_name")
76-
)
61+
self.get_success(self.store.set_e2e_device_keys("user", "device", now, json))
62+
self.get_success(self.store.store_device("user", "device", "display_name"))
7763

78-
res = yield defer.ensureDeferred(
64+
res = self.get_success(
7965
self.store.get_e2e_device_keys_for_cs_api((("user", "device"),))
8066
)
8167
self.assertIn("user", res)
@@ -85,29 +71,28 @@ def test_get_key_with_device_name(self):
8571
{"key": "value", "unsigned": {"device_display_name": "display_name"}}, dev
8672
)
8773

88-
@defer.inlineCallbacks
8974
def test_multiple_devices(self):
9075
now = 1470174257070
9176

92-
yield defer.ensureDeferred(self.store.store_device("user1", "device1", None))
93-
yield defer.ensureDeferred(self.store.store_device("user1", "device2", None))
94-
yield defer.ensureDeferred(self.store.store_device("user2", "device1", None))
95-
yield defer.ensureDeferred(self.store.store_device("user2", "device2", None))
77+
self.get_success(self.store.store_device("user1", "device1", None))
78+
self.get_success(self.store.store_device("user1", "device2", None))
79+
self.get_success(self.store.store_device("user2", "device1", None))
80+
self.get_success(self.store.store_device("user2", "device2", None))
9681

97-
yield defer.ensureDeferred(
82+
self.get_success(
9883
self.store.set_e2e_device_keys("user1", "device1", now, {"key": "json11"})
9984
)
100-
yield defer.ensureDeferred(
85+
self.get_success(
10186
self.store.set_e2e_device_keys("user1", "device2", now, {"key": "json12"})
10287
)
103-
yield defer.ensureDeferred(
88+
self.get_success(
10489
self.store.set_e2e_device_keys("user2", "device1", now, {"key": "json21"})
10590
)
106-
yield defer.ensureDeferred(
91+
self.get_success(
10792
self.store.set_e2e_device_keys("user2", "device2", now, {"key": "json22"})
10893
)
10994

110-
res = yield defer.ensureDeferred(
95+
res = self.get_success(
11196
self.store.get_e2e_device_keys_for_cs_api(
11297
(("user1", "device1"), ("user2", "device2"))
11398
)

0 commit comments

Comments
 (0)