60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
import httpx
|
|
|
|
from app.services.remnawave_client import RemnawaveApiClient
|
|
|
|
|
|
def test_normalize_base_url_adds_api_suffix() -> None:
|
|
assert (
|
|
RemnawaveApiClient.normalize_base_url("https://panel.example.com")
|
|
== "https://panel.example.com/api/"
|
|
)
|
|
|
|
|
|
def test_normalize_base_url_keeps_existing_api_suffix() -> None:
|
|
assert (
|
|
RemnawaveApiClient.normalize_base_url("https://panel.example.com/api/")
|
|
== "https://panel.example.com/api/"
|
|
)
|
|
|
|
|
|
def test_unwrap_payload_response_field() -> None:
|
|
payload = {"response": {"ok": True}}
|
|
assert RemnawaveApiClient.unwrap_payload(payload) == {"ok": True}
|
|
|
|
|
|
def test_build_error_includes_error_code() -> None:
|
|
client = object.__new__(RemnawaveApiClient)
|
|
response = httpx.Response(
|
|
500,
|
|
json={
|
|
"message": "Failed to create user",
|
|
"errorCode": "A018",
|
|
},
|
|
request=httpx.Request("POST", "https://panel.example.com/api/users"),
|
|
)
|
|
|
|
error = client._build_error(response)
|
|
|
|
assert error.message == "Failed to create user [A018]"
|
|
|
|
|
|
def test_build_error_includes_validation_details() -> None:
|
|
client = object.__new__(RemnawaveApiClient)
|
|
response = httpx.Response(
|
|
400,
|
|
json={
|
|
"message": "Validation failed",
|
|
"errors": [
|
|
{
|
|
"message": "Invalid uuid",
|
|
"path": ["uuid"],
|
|
}
|
|
],
|
|
},
|
|
request=httpx.Request("DELETE", "https://panel.example.com/api/users/not-a-uuid"),
|
|
)
|
|
|
|
error = client._build_error(response)
|
|
|
|
assert error.message == "Validation failed | uuid: Invalid uuid"
|