Skip to content
Snippets Groups Projects
test_directory.py 3.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • Matthew Hodgson's avatar
    Matthew Hodgson committed
    # Copyright 2014-2016 OpenMarket Ltd
    
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    
    
    from twisted.internet import defer
    
    from mock import Mock
    
    from synapse.handlers.directory import DirectoryHandler
    
    from synapse.types import RoomAlias
    
    from tests.utils import setup_test_homeserver
    
    
    class DirectoryHandlers(object):
        def __init__(self, hs):
            self.directory_handler = DirectoryHandler(hs)
    
    
    class DirectoryTestCase(unittest.TestCase):
        """ Tests the directory service. """
    
    
    Erik Johnston's avatar
    Erik Johnston committed
            self.mock_federation = Mock()
            self.mock_registry = Mock()
    
    Erik Johnston's avatar
    Erik Johnston committed
    
    
            def register_query_handler(query_type, handler):
                self.query_handlers[query_type] = handler
    
    Erik Johnston's avatar
    Erik Johnston committed
            self.mock_registry.register_query_handler = register_query_handler
    
            hs = yield setup_test_homeserver(
    
                federation_client=self.mock_federation,
    
    Erik Johnston's avatar
    Erik Johnston committed
                federation_registry=self.mock_registry,
    
            self.handler = hs.get_handlers().directory_handler
    
            self.my_room = RoomAlias.from_string("#my-room:test")
            self.your_room = RoomAlias.from_string("#your-room:test")
            self.remote_room = RoomAlias.from_string("#another:remote")
    
            yield self.store.create_room_alias_association(
                self.my_room, "!8765qwer:test", ["test"]
    
            )
    
            result = yield self.handler.get_association(self.my_room)
    
            self.assertEquals({
                "room_id": "!8765qwer:test",
                "servers": ["test"],
            }, result)
    
        @defer.inlineCallbacks
        def test_get_remote_association(self):
            self.mock_federation.make_query.return_value = defer.succeed(
                {"room_id": "!8765qwer:test", "servers": ["test", "remote"]}
            )
    
            result = yield self.handler.get_association(self.remote_room)
    
            self.assertEquals({
                "room_id": "!8765qwer:test",
                "servers": ["test", "remote"],
            }, result)
            self.mock_federation.make_query.assert_called_with(
                destination="remote",
                query_type="directory",
    
    Richard van der Hoff's avatar
    Richard van der Hoff committed
                ignore_backoff=True,
    
            yield self.store.create_room_alias_association(
                self.your_room, "!8765asdf:test", ["test"]
    
            )
    
            response = yield self.query_handlers["directory"](
                {"room_alias": "#your-room:test"}
            )
    
            self.assertEquals({
                "room_id": "!8765asdf:test",
                "servers": ["test"],
            }, response)