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.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 self.store = ApplicationServiceStore(hs.get_db_conn(), hs)
def test_unique_works(self): f1 = self._write_config(suffix="1") f2 = self._write_config(suffix="2") hs = yield setup_test_homeserver(self.addCleanup, federation_sender=Mock(), federation_client=Mock()) hs.config.app_service_config_files = [f1, f2] hs.config.event_cache_size = 1 hs.config.password_providers = [] ApplicationServiceStore(hs.get_db_conn(), hs)
def test_unique_works(self): f1 = self._write_config(suffix="1") f2 = self._write_config(suffix="2") hs = yield setup_test_homeserver(self.addCleanup, federation_sender=Mock(), federation_client=Mock()) hs.config.app_service_config_files = [f1, f2] hs.config.caches.event_cache_size = 1 hs.config.password_providers = [] database = hs.get_datastores().databases[0] ApplicationServiceStore( database, make_conn(database._database_config, database.engine), hs)
def test_duplicate_as_tokens(self): f1 = self._write_config(as_token="as_token", suffix="1") f2 = self._write_config(as_token="as_token", suffix="2") hs = yield setup_test_homeserver(self.addCleanup, federation_sender=Mock(), federation_client=Mock()) hs.config.app_service_config_files = [f1, f2] hs.config.event_cache_size = 1 hs.config.password_providers = [] with self.assertRaises(ConfigError) as cm: ApplicationServiceStore(hs.get_db_conn(), hs) e = cm.exception self.assertIn(f1, str(e)) self.assertIn(f2, str(e)) self.assertIn("as_token", str(e))
def test_duplicate_ids(self): f1 = self._write_config(id="id", suffix="1") f2 = self._write_config(id="id", suffix="2") hs = yield setup_test_homeserver(self.addCleanup, federation_sender=Mock(), federation_client=Mock()) hs.config.app_service_config_files = [f1, f2] hs.config.event_cache_size = 1 hs.config.password_providers = [] with self.assertRaises(ConfigError) as cm: database = hs.get_datastores().databases[0] ApplicationServiceStore( database, make_conn(database._database_config, database.engine), hs) e = cm.exception self.assertIn(f1, str(e)) self.assertIn(f2, str(e)) self.assertIn("id", str(e))
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.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)