Ejemplo n.º 1
0
class ApplicationServiceStoreTestCase(unittest.HomeserverTestCase):
    def setUp(self):
        super(ApplicationServiceStoreTestCase, self).setUp()

        self.as_yaml_files: List[str] = []

        self.hs.config.appservice.app_service_config_files = self.as_yaml_files
        self.hs.config.caches.event_cache_size = 1

        self.as_token = "token1"
        self.as_url = "some_url"
        self.as_id = "as1"
        self._add_appservice(self.as_token, self.as_id, self.as_url,
                             "some_hs_token", "bob")
        self._add_appservice("token2", "as2", "some_url", "some_hs_token",
                             "bob")
        self._add_appservice("token3", "as3", "some_url", "some_hs_token",
                             "bob")
        # must be done after inserts
        database = self.hs.get_datastores().databases[0]
        self.store = ApplicationServiceStore(
            database,
            make_conn(database._database_config, database.engine, "test"),
            self.hs,
        )

    def tearDown(self) -> None:
        # TODO: suboptimal that we need to create files for tests!
        for f in self.as_yaml_files:
            try:
                os.remove(f)
            except Exception:
                pass

        super(ApplicationServiceStoreTestCase, self).tearDown()

    def _add_appservice(self, as_token, id, url, hs_token, sender) -> None:
        as_yaml = {
            "url": url,
            "as_token": as_token,
            "hs_token": hs_token,
            "id": id,
            "sender_localpart": sender,
            "namespaces": {},
        }
        # use the token as the filename
        with open(as_token, "w") as outfile:
            outfile.write(yaml.dump(as_yaml))
            self.as_yaml_files.append(as_token)

    def test_retrieve_unknown_service_token(self) -> None:
        service = self.store.get_app_service_by_token("invalid_token")
        self.assertEquals(service, None)

    def test_retrieval_of_service(self) -> None:
        stored_service = self.store.get_app_service_by_token(self.as_token)
        assert stored_service is not None
        self.assertEquals(stored_service.token, self.as_token)
        self.assertEquals(stored_service.id, self.as_id)
        self.assertEquals(stored_service.url, self.as_url)
        self.assertEquals(
            stored_service.namespaces[ApplicationService.NS_ALIASES], [])
        self.assertEquals(
            stored_service.namespaces[ApplicationService.NS_ROOMS], [])
        self.assertEquals(
            stored_service.namespaces[ApplicationService.NS_USERS], [])

    def test_retrieval_of_all_services(self) -> None:
        services = self.store.get_app_services()
        self.assertEquals(len(services), 3)
Ejemplo n.º 2
0
class ApplicationServiceStoreTestCase(unittest.TestCase):
    @defer.inlineCallbacks
    def setUp(self):
        self.as_yaml_files = []
        hs = yield setup_test_homeserver(self.addCleanup,
                                         federation_sender=Mock(),
                                         federation_client=Mock())

        hs.config.app_service_config_files = self.as_yaml_files
        hs.config.caches.event_cache_size = 1
        hs.config.password_providers = []

        self.as_token = "token1"
        self.as_url = "some_url"
        self.as_id = "as1"
        self._add_appservice(self.as_token, self.as_id, self.as_url,
                             "some_hs_token", "bob")
        self._add_appservice("token2", "as2", "some_url", "some_hs_token",
                             "bob")
        self._add_appservice("token3", "as3", "some_url", "some_hs_token",
                             "bob")
        # must be done after inserts
        database = hs.get_datastores().databases[0]
        self.store = ApplicationServiceStore(
            database, make_conn(database._database_config, database.engine),
            hs)

    def tearDown(self):
        # TODO: suboptimal that we need to create files for tests!
        for f in self.as_yaml_files:
            try:
                os.remove(f)
            except Exception:
                pass

    def _add_appservice(self, as_token, id, url, hs_token, sender):
        as_yaml = {
            "url": url,
            "as_token": as_token,
            "hs_token": hs_token,
            "id": id,
            "sender_localpart": sender,
            "namespaces": {},
        }
        # use the token as the filename
        with open(as_token, "w") as outfile:
            outfile.write(yaml.dump(as_yaml))
            self.as_yaml_files.append(as_token)

    def test_retrieve_unknown_service_token(self):
        service = self.store.get_app_service_by_token("invalid_token")
        self.assertEquals(service, None)

    def test_retrieval_of_service(self):
        stored_service = self.store.get_app_service_by_token(self.as_token)
        self.assertEquals(stored_service.token, self.as_token)
        self.assertEquals(stored_service.id, self.as_id)
        self.assertEquals(stored_service.url, self.as_url)
        self.assertEquals(
            stored_service.namespaces[ApplicationService.NS_ALIASES], [])
        self.assertEquals(
            stored_service.namespaces[ApplicationService.NS_ROOMS], [])
        self.assertEquals(
            stored_service.namespaces[ApplicationService.NS_USERS], [])

    def test_retrieval_of_all_services(self):
        services = self.store.get_app_services()
        self.assertEquals(len(services), 3)