3d_model / tests /test_lambda_cloud_client.py
Azan
Clean deployment build (Squashed)
7a87926
from __future__ import annotations
import pytest
from ylff.services.orchestration.lambda_cloud import (
LambdaCloudClient,
LambdaCloudClientConfig,
LambdaCloudError,
)
class _Resp:
def __init__(self, *, status_code: int, json_obj=None, text: str = "", headers=None):
self.status_code = int(status_code)
self._json = json_obj
self.text = text
self.headers = dict(headers or {})
def json(self):
if isinstance(self._json, Exception):
raise self._json
return self._json
def test_lambda_cloud_client_success(monkeypatch):
def _fake_request(method, url, headers=None, json=None, timeout=None):
assert method == "GET"
assert url.endswith("/instances")
return _Resp(status_code=200, json_obj={"data": [{"id": "i-1"}]}, text="ok")
import ylff.services.orchestration.lambda_cloud as lc
monkeypatch.setattr(lc.requests, "request", _fake_request)
c = LambdaCloudClient(LambdaCloudClientConfig(api_key="k", min_interval_s=0.0, max_retries=0))
out = c.list_instances()
assert out["data"][0]["id"] == "i-1"
def test_lambda_cloud_client_error_code_normalization(monkeypatch):
def _fake_request(method, url, headers=None, json=None, timeout=None):
return _Resp(
status_code=400,
json_obj={"error": {"code": "bad_request", "message": "nope"}},
text="err",
)
import ylff.services.orchestration.lambda_cloud as lc
monkeypatch.setattr(lc.requests, "request", _fake_request)
c = LambdaCloudClient(LambdaCloudClientConfig(api_key="k", min_interval_s=0.0, max_retries=0))
with pytest.raises(LambdaCloudError) as ei:
c.list_instances()
assert ei.value.code == "bad_request"
assert ei.value.status_code == 400