import json from unittest.mock import patch from cloud.iam import IAMClient class Response: def read(self) -> bytes: return json.dumps({"access_token": "fresh-token"}).encode() def __enter__(self) -> "Response": return self def __exit__(self, *args: object) -> None: return None @patch("cloud.iam.urlopen") def test_fetches_iam_token(urlopen) -> None: urlopen.return_value = Response() assert IAMClient("key-id", "secret").get_access_token() == "fresh-token" request = urlopen.call_args.args[0] assert request.full_url == "https://iam.api.cloud.ru/api/v1/auth/token" assert json.loads(request.data) == {"keyId": "key-id", "secret": "secret"}