| 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 |
|
|