async def main(): port = 56153 base = URL("http://localhost").with_port(port) config = Config.withOverrides({ Setting.DRIVE_AUTHORIZE_URL: str(base.with_path("o/oauth2/v2/auth")), Setting.AUTHENTICATE_URL: str(base.with_path("drive/authorize")), Setting.DRIVE_TOKEN_URL: str(base.with_path("token")), Setting.DRIVE_REFRESH_URL: str(base.with_path("oauth2/v4/token")), Setting.INGRESS_PORT: 56152 }) injector = Injector(SimServerModule(config)) server = injector.get(SimulationServer) # start the server runner = aiohttp.web.AppRunner(server.createApp()) await runner.setup() site = aiohttp.web.TCPSite(runner, "0.0.0.0", port=port) await site.start() print("Server started on port " + str(port)) print("Open a browser at http://localhost:" + str(port))
async def generate_config(server_url, ports, cleandir): return Config.withOverrides({ Setting.DRIVE_URL: server_url, Setting.HASSIO_URL: server_url + "/", Setting.HOME_ASSISTANT_URL: server_url + "/core/api/", Setting.AUTHENTICATE_URL: server_url + "/drive/authorize", Setting.DRIVE_REFRESH_URL: server_url + "/oauth2/v4/token", Setting.DRIVE_AUTHORIZE_URL: server_url + "/o/oauth2/v2/auth", Setting.DRIVE_TOKEN_URL: server_url + "/token", Setting.REFRESH_URL: server_url + "/drive/refresh", Setting.ERROR_REPORT_URL: server_url + "/logerror", Setting.HASSIO_TOKEN: "test_header", Setting.SECRETS_FILE_PATH: "secrets.yaml", Setting.CREDENTIALS_FILE_PATH: "credentials.dat", Setting.FOLDER_FILE_PATH: "folder.dat", Setting.RETAINED_FILE_PATH: "retained.json", Setting.ID_FILE_PATH: "id.json", Setting.DATA_CACHE_FILE_PATH: "data_cache.json", Setting.STOP_ADDON_STATE_PATH: "stop_addon.json", Setting.INGRESS_TOKEN_FILE_PATH: "ingress.dat", Setting.DEFAULT_DRIVE_CLIENT_ID: "test_client_id", Setting.DEFAULT_DRIVE_CLIENT_SECRET: "test_client_secret", Setting.BACKUP_DIRECTORY_PATH: cleandir, Setting.PORT: ports.ui, Setting.INGRESS_PORT: ports.ingress, Setting.SNAPSHOT_STARTUP_DELAY_MINUTES: 0, })
async def generate_config(server_url: URL, ports, cleandir): return Config.withOverrides({ Setting.DRIVE_URL: str(server_url), Setting.SUPERVISOR_URL: str(server_url) + "/", Setting.AUTHORIZATION_HOST: str(server_url), Setting.TOKEN_SERVER_HOSTS: str(server_url), Setting.DRIVE_REFRESH_URL: str(server_url.with_path("/oauth2/v4/token")), Setting.DRIVE_AUTHORIZE_URL: str(server_url.with_path("/o/oauth2/v2/auth")), Setting.DRIVE_TOKEN_URL: str(server_url.with_path("/token")), Setting.SUPERVISOR_TOKEN: "test_header", Setting.SECRETS_FILE_PATH: "secrets.yaml", Setting.CREDENTIALS_FILE_PATH: "credentials.dat", Setting.FOLDER_FILE_PATH: "folder.dat", Setting.RETAINED_FILE_PATH: "retained.json", Setting.ID_FILE_PATH: "id.json", Setting.DATA_CACHE_FILE_PATH: "data_cache.json", Setting.STOP_ADDON_STATE_PATH: "stop_addon.json", Setting.INGRESS_TOKEN_FILE_PATH: "ingress.dat", Setting.DEFAULT_DRIVE_CLIENT_ID: "test_client_id", Setting.DEFAULT_DRIVE_CLIENT_SECRET: "test_client_secret", Setting.BACKUP_DIRECTORY_PATH: cleandir, Setting.PORT: ports.ui, Setting.INGRESS_PORT: ports.ingress, Setting.BACKUP_STARTUP_DELAY_MINUTES: 0, })
async def main(): port = 56153 base = URL("http://localhost").with_port(port) config = Config.withOverrides({ Setting.DRIVE_AUTHORIZE_URL: str(base.with_path("o/oauth2/v2/auth")), Setting.AUTHENTICATE_URL: str(base.with_path("drive/authorize")), Setting.DRIVE_TOKEN_URL: str(base.with_path("token")), Setting.DRIVE_REFRESH_URL: str(base.with_path("oauth2/v4/token")) }) injector = Injector(BaseModule(config, override_dns=False)) server = injector.get( ClassAssistedBuilder[SimulationServer]).build(port=port) await server.reset({ 'snapshot_min_size': 1024 * 1024 * 3, 'snapshot_max_size': 1024 * 1024 * 5, "drive_refresh_token": "test_refresh_token", "drive_upload_sleep": 0, "snapshot_wait_time": 0, "hassio_header": "test_header" }) # start the server runner = aiohttp.web.AppRunner(server.createApp()) await runner.setup() site = aiohttp.web.TCPSite(runner, "0.0.0.0", port=port) await site.start() print("Server started on port " + str(port))
def getConfig(self) -> Config: return Config.withOverrides({ Setting.DRIVE_AUTHORIZE_URL: str(self._base_url.with_path("o/oauth2/v2/auth")), Setting.AUTHORIZATION_HOST: str(self._base_url), Setting.TOKEN_SERVER_HOSTS: str(self._base_url), Setting.DRIVE_TOKEN_URL: str(self._base_url.with_path("token")), Setting.DRIVE_REFRESH_URL: str(self._base_url.with_path("oauth2/v4/token")), Setting.INGRESS_PORT: 56152 })
async def injector(cleandir, server_url, ui_port, ingress_port): drive_creds = Creds(FakeTime(), "test_client_id", None, "test_access_token", "test_refresh_token") with open(os.path.join(cleandir, "secrets.yaml"), "w") as f: f.write("for_unit_tests: \"password value\"\n") with open(os.path.join(cleandir, "credentials.dat"), "w") as f: f.write(json.dumps(drive_creds.serialize())) config = Config.withOverrides({ Setting.DRIVE_URL: server_url, Setting.HASSIO_URL: server_url + "/", Setting.HOME_ASSISTANT_URL: server_url + "/homeassistant/api/", Setting.AUTHENTICATE_URL: server_url + "/drive/authorize", Setting.DRIVE_REFRESH_URL: server_url + "/oauth2/v4/token", Setting.DRIVE_AUTHORIZE_URL: server_url + "/o/oauth2/v2/auth", Setting.DRIVE_TOKEN_URL: server_url + "/token", Setting.REFRESH_URL: server_url + "/drive/refresh", Setting.ERROR_REPORT_URL: server_url + "/logerror", Setting.HASSIO_TOKEN: "test_header", Setting.SECRETS_FILE_PATH: "secrets.yaml", Setting.CREDENTIALS_FILE_PATH: "credentials.dat", Setting.FOLDER_FILE_PATH: "folder.dat", Setting.RETAINED_FILE_PATH: "retained.json", Setting.ID_FILE_PATH: "id.json", Setting.INGRESS_TOKEN_FILE_PATH: "ingress.dat", Setting.DEFAULT_DRIVE_CLIENT_ID: "test_client_id", Setting.DEFAULT_DRIVE_CLIENT_SECRET: "test_client_secret", Setting.BACKUP_DIRECTORY_PATH: cleandir, Setting.PORT: ui_port, Setting.INGRESS_PORT: ingress_port }) # PROBLEM: Something in uploading snapshot chunks hangs between the client and server, so his keeps tests from # taking waaaaaaaay too long. Remove this line and the @pytest.mark.flaky annotations once the problem is identified. config.override(Setting.GOOGLE_DRIVE_TIMEOUT_SECONDS, 5) # logging.getLogger('injector').setLevel(logging.DEBUG) return Injector([ BaseModule(config), TestModule(cleandir, server_url, ui_port, ingress_port) ])