Files
fn_registry/python/functions/infra/build_hoppscotch_collection_test.py
T
egutierrez eb8dbf66a1 feat(infra): auto-commit con 88 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-11 00:16:46 +02:00

173 lines
4.6 KiB
Python

"""Tests para build_hoppscotch_collection."""
import json
from build_hoppscotch_collection import build_hoppscotch_collection
def test_golden_get_simple():
calls = [
{
"method": "GET",
"url": "https://api.example.com/api/search?q=foo",
"headers": {"Accept": "application/json"},
}
]
result = build_hoppscotch_collection(calls, name="MyCol")
assert result["v"] == 1
assert result["name"] == "MyCol"
assert result["folders"] == []
assert len(result["requests"]) == 1
req = result["requests"][0]
assert req["v"] == "2"
assert req["endpoint"] == "https://api.example.com/api/search?q=foo"
assert req["name"] == "GET /api/search"
assert req["method"] == "GET"
assert req["params"] == []
assert req["headers"] == [
{"key": "Accept", "value": "application/json", "active": True}
]
assert req["auth"] == {"authType": "none", "authActive": True}
assert req["preRequestScript"] == ""
assert req["testScript"] == ""
assert req["requestVariables"] == []
assert req["body"] == {"contentType": None, "body": None}
# JSON-serializable
json.dumps(result)
def test_edge_post_json_con_headers_y_cookies():
calls = [
{
"method": "post",
"url": "https://api.example.com/login",
"headers": {
"Content-Type": "application/json",
"X-Csrf": "tok",
},
"cookies": {"session": "abc", "csrf": "xyz"},
"body": '{"user":"neo"}',
"body_type": "json",
}
]
result = build_hoppscotch_collection(calls)
req = result["requests"][0]
assert req["method"] == "POST"
assert req["name"] == "POST /login"
# Header Cookie generado al final con formato "; " join
assert req["headers"] == [
{"key": "Content-Type", "value": "application/json", "active": True},
{"key": "X-Csrf", "value": "tok", "active": True},
{"key": "Cookie", "value": "session=abc; csrf=xyz", "active": True},
]
assert req["body"] == {
"contentType": "application/json",
"body": '{"user":"neo"}',
}
json.dumps(result)
def test_request_names_sobreescribe_nombre_derivado():
calls = [
{"method": "GET", "url": "https://api.example.com/a"},
{"method": "GET", "url": "https://api.example.com/b"},
]
result = build_hoppscotch_collection(
calls, request_names=["Custom A"]
)
# Indice 0 usa el nombre explicito; indice 1 cae al derivado.
assert result["requests"][0]["name"] == "Custom A"
assert result["requests"][1]["name"] == "GET /b"
def test_form_body_genera_contenttype_urlencoded():
calls = [
{
"method": "POST",
"url": "https://api.example.com/form",
"body": "a=1&b=2",
"body_type": "form",
}
]
req = build_hoppscotch_collection(calls)["requests"][0]
assert req["body"] == {
"contentType": "application/x-www-form-urlencoded",
"body": "a=1&b=2",
}
def test_raw_body_genera_contenttype_text_plain():
calls = [
{
"method": "POST",
"url": "https://api.example.com/raw",
"body": "hello",
"body_type": "raw",
}
]
req = build_hoppscotch_collection(calls)["requests"][0]
assert req["body"] == {"contentType": "text/plain", "body": "hello"}
def test_body_type_desconocido_da_body_null():
calls = [
{
"method": "POST",
"url": "https://api.example.com/x",
"body": "ignored",
"body_type": "binary",
}
]
req = build_hoppscotch_collection(calls)["requests"][0]
assert req["body"] == {"contentType": None, "body": None}
def test_lista_vacia():
result = build_hoppscotch_collection([], name="Empty")
assert result == {
"v": 1,
"name": "Empty",
"folders": [],
"requests": [],
}
json.dumps(result)
def test_call_spec_sin_url_ni_method():
calls = [{}]
req = build_hoppscotch_collection(calls)["requests"][0]
assert req["endpoint"] == ""
assert req["method"] == "GET"
assert req["name"] == "GET /"
assert req["headers"] == []
assert req["body"] == {"contentType": None, "body": None}
def test_sin_cookies_no_anade_header_cookie():
calls = [
{
"method": "GET",
"url": "https://api.example.com/x",
"headers": {"Accept": "*/*"},
"cookies": {},
}
]
req = build_hoppscotch_collection(calls)["requests"][0]
assert all(h["key"] != "Cookie" for h in req["headers"])