27 lines
707 B
Python
27 lines
707 B
Python
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"}
|