def test_load_from_file_path_str_async(tokens_dict): tokens = asyncio.run(Tokens.afrom_file(str(TOKENS_PATH))) assert tokens.access_token == tokens_dict["access_token"] assert tokens.expires_in == tokens_dict["expires_in"] assert tokens.refresh_token == tokens_dict["refresh_token"] assert tokens.scope == tokens_dict["scope"] assert tokens.token_type == tokens_dict["token_type"]
def test_load_from_file_path_object(tokens_dict): tokens = Tokens.from_file(TOKENS_PATH) assert tokens.access_token == tokens_dict["access_token"] assert tokens.expires_in == tokens_dict["expires_in"] assert tokens.refresh_token == tokens_dict["refresh_token"] assert tokens.scope == tokens_dict["scope"] assert tokens.token_type == tokens_dict["token_type"]
def test_load_from_data(tokens_dict): tokens = Tokens.from_data(tokens_dict) assert tokens.access_token == tokens_dict["access_token"] assert tokens.expires_in == tokens_dict["expires_in"] assert tokens.refresh_token == tokens_dict["refresh_token"] assert tokens.scope == tokens_dict["scope"] assert tokens.token_type == tokens_dict["token_type"]
def _retrieve_tokens(self, redirect_uris: list[str], port: int) -> Tokens: if self.legacy_auth: rd_addr = redirect_uris[0] else: ru = redirect_uris[-1] rd_addr = f"{ru}:{port}" url, _ = oauth.auth_url_and_state(self.secrets, rd_addr) code = self._mcp(url) if self.legacy_auth else self._ws(url, ru, port) data, headers = oauth.access_data_and_headers(code, self.secrets, rd_addr) r = self._session.post(self.secrets.token_uri, data=data, headers=headers) if r.is_error: raise errors.AuthenticationError(**r.json()) return Tokens.from_data(r.json())
def tokens() -> Tokens: return Tokens.from_file(TOKENS_PATH)
def _try_load_tokens(self, path: pathlib.Path) -> Tokens | None: if not path.is_file(): return None return Tokens.from_file(path)