feat(t221): add exact-order erp connector
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
|
||||
import pytest
|
||||
from fastapi import HTTPException
|
||||
|
||||
from shunyunbaoerp import api
|
||||
|
||||
from test_normalizer import raw_result
|
||||
|
||||
|
||||
VALID_KEY = "k" * 32
|
||||
|
||||
|
||||
class FakeClient:
|
||||
is_logged_in = True
|
||||
token_expires_at = None
|
||||
|
||||
def get_freight_details(self, order_number: str) -> dict:
|
||||
assert order_number == "SOURCE-12"
|
||||
return raw_result()
|
||||
|
||||
|
||||
def test_query_requires_configured_service_key(monkeypatch) -> None:
|
||||
monkeypatch.delenv("SHUNYUNBAO_SERVICE_API_KEY", raising=False)
|
||||
|
||||
with pytest.raises(HTTPException) as raised:
|
||||
api.require_api_key(VALID_KEY)
|
||||
|
||||
assert raised.value.status_code == 503
|
||||
assert raised.value.detail == "CONNECTOR_API_KEY_NOT_CONFIGURED"
|
||||
|
||||
|
||||
def test_query_rejects_wrong_service_key(monkeypatch) -> None:
|
||||
monkeypatch.setenv("SHUNYUNBAO_SERVICE_API_KEY", VALID_KEY)
|
||||
|
||||
with pytest.raises(HTTPException) as raised:
|
||||
api.require_api_key("x" * 32)
|
||||
|
||||
assert raised.value.status_code == 401
|
||||
assert raised.value.detail == "CONNECTOR_API_KEY_INVALID"
|
||||
|
||||
|
||||
def test_query_returns_only_normalized_fields(monkeypatch) -> None:
|
||||
monkeypatch.setenv("SHUNYUNBAO_SERVICE_API_KEY", VALID_KEY)
|
||||
monkeypatch.setattr(api, "get_client", lambda: FakeClient())
|
||||
api.require_api_key(VALID_KEY)
|
||||
response = api.query_freight(
|
||||
api.FreightQueryRequest(order_number="SOURCE-12"),
|
||||
None,
|
||||
)
|
||||
|
||||
assert len(response["orders"][0]["items"]) == 2
|
||||
encoded = json.dumps(response, ensure_ascii=False)
|
||||
assert "receiverTel" not in encoded
|
||||
assert "receiverAddr" not in encoded
|
||||
assert "PRIVATE-QUERY" not in encoded
|
||||
Reference in New Issue
Block a user