summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2014-09-17 15:33:10 +0100
committerPaul "LeoNerd" Evans <paul@matrix.org>2014-09-17 15:33:10 +0100
commitde1485323749b5aed0d0143c695180eb25ee8808 (patch)
treee438b4d32be923bb981cc243946945f570a25a41
parentPrint expected-vs-actual data types on typecheck failure from check_json() (diff)
downloadsynapse-de1485323749b5aed0d0143c695180eb25ee8808.tar.xz
More RoomStore tests
-rw-r--r--tests/storage/test_room.py44
1 files changed, 40 insertions, 4 deletions
diff --git a/tests/storage/test_room.py b/tests/storage/test_room.py
index 2477f965e6..8d85d56b9a 100644
--- a/tests/storage/test_room.py
+++ b/tests/storage/test_room.py
@@ -18,7 +18,6 @@ from tests import unittest
 from twisted.internet import defer
 
 from synapse.server import HomeServer
-from synapse.storage.room import RoomStore
 
 from tests.utils import SQLiteMemoryDbPool
 
@@ -34,20 +33,57 @@ class RoomStoreTestCase(unittest.TestCase):
             db_pool=db_pool,
         )
 
-        self.store = RoomStore(hs)
+        # We can't test RoomStore on its own without the DirectoryStore, for
+        # management of the 'room_aliases' table
+        self.store = hs.get_datastore()
 
         self.room = hs.parse_roomid("!abcde:test")
+        self.alias = hs.parse_roomalias("#a-room-name:test")
         self.u_creator = hs.parse_userid("@creator:test")
 
-    @defer.inlineCallbacks
-    def test_store_room(self):
         yield self.store.store_room(self.room.to_string(),
             room_creator_user_id=self.u_creator.to_string(),
             is_public=True
         )
 
+    @defer.inlineCallbacks
+    def test_get_room(self):
         room = yield self.store.get_room(self.room.to_string())
 
         self.assertEquals(self.room.to_string(), room.room_id)
         self.assertEquals(self.u_creator.to_string(), room.creator)
         self.assertTrue(room.is_public)
+
+    @defer.inlineCallbacks
+    def test_store_room_config(self):
+        yield self.store.store_room_config(self.room.to_string(),
+            visibility=False
+        )
+
+        room = yield self.store.get_room(self.room.to_string())
+
+        self.assertFalse(room.is_public)
+
+    @defer.inlineCallbacks
+    def test_get_rooms(self):
+        # get_rooms does an INNER JOIN on the room_aliases table :(
+
+        rooms = yield self.store.get_rooms(is_public=True)
+        # Should be empty before we add the alias
+        self.assertEquals([], rooms)
+
+        yield self.store.create_room_alias_association(
+            room_alias=self.alias,
+            room_id=self.room.to_string(),
+            servers=["test"]
+        )
+
+        rooms = yield self.store.get_rooms(is_public=True)
+
+        self.assertEquals(1, len(rooms))
+        self.assertEquals({
+            "name": None,
+            "room_id": self.room.to_string(),
+            "topic": None,
+            "aliases": [self.alias.to_string()],
+        }, rooms[0])