Files
http-convert/tests/test_generators.py
7000pctAUTO 8cff05a196
Some checks failed
CI / test (push) Has been cancelled
Initial commit: Add http-convert project
2026-01-29 11:34:27 +00:00

142 lines
4.9 KiB
Python

import pytest
from src.http_convert.generators import CurlGenerator, HTTPieGenerator, FetchGenerator, AxiosGenerator, Generator
from src.http_convert.models import HTTPRequest, HttpMethod, OutputFormat
@pytest.fixture
def sample_request():
return HTTPRequest(
method=HttpMethod.GET,
url="https://api.example.com/users",
headers={"Accept": "application/json"},
params={"page": "1"},
body=None
)
@pytest.fixture
def post_request():
return HTTPRequest(
method=HttpMethod.POST,
url="https://api.example.com/users",
headers={"Content-Type": "application/json"},
body='{"name": "John"}'
)
class TestCurlGenerator:
def test_generate_simple_get(self, sample_request):
result = CurlGenerator.generate(sample_request)
assert "curl" in result
assert "https://api.example.com/users" in result
def test_generate_with_headers(self, sample_request):
result = CurlGenerator.generate(sample_request)
assert "-H" in result
assert "Accept" in result
def test_generate_with_method(self):
request = HTTPRequest(method=HttpMethod.POST, url="https://example.com")
result = CurlGenerator.generate(request)
assert "-X POST" in result
def test_generate_compact(self, sample_request):
result = CurlGenerator.generate(sample_request, compact=True)
assert " " in result and "\\" not in result
def test_generate_multiline(self, sample_request):
result = CurlGenerator.generate(sample_request, compact=False)
assert "\\" in result
class TestHTTPieGenerator:
def test_generate_simple_get(self, sample_request):
result = HTTPieGenerator.generate(sample_request)
assert "GET" in result
assert "https://api.example.com/users" in result
def test_generate_with_headers(self, sample_request):
result = HTTPieGenerator.generate(sample_request)
assert "Accept:application/json" in result
def test_generate_with_params(self, sample_request):
result = HTTPieGenerator.generate(sample_request)
assert "page==" in result
def test_generate_with_body(self, post_request):
result = HTTPieGenerator.generate(post_request)
assert "POST" in result
assert "https://api.example.com/users" in result
class TestFetchGenerator:
def test_generate_simple_get(self, sample_request):
result = FetchGenerator.generate(sample_request)
assert "fetch(" in result
assert "https://api.example.com/users" in result
def test_generate_with_headers(self, sample_request):
result = FetchGenerator.generate(sample_request)
assert "headers" in result
assert "Accept" in result
def test_generate_with_method(self, sample_request):
result = FetchGenerator.generate(sample_request)
assert "method" in result
assert "GET" in result
def test_generate_with_body(self, post_request):
result = FetchGenerator.generate(post_request)
assert "body" in result
def test_generate_compact(self, sample_request):
result = FetchGenerator.generate(sample_request, compact=True)
assert " " in result and "\\n" not in result
class TestAxiosGenerator:
def test_generate_simple_get(self, sample_request):
result = AxiosGenerator.generate(sample_request)
assert "axios(" in result
assert "https://api.example.com/users" in result
def test_generate_with_headers(self, sample_request):
result = AxiosGenerator.generate(sample_request)
assert "headers" in result
assert "Accept" in result
def test_generate_with_method(self, sample_request):
result = AxiosGenerator.generate(sample_request)
assert "method" in result
assert "GET" in result
def test_generate_with_url(self, sample_request):
result = AxiosGenerator.generate(sample_request)
assert "url" in result
def test_generate_with_body(self, post_request):
result = AxiosGenerator.generate(post_request)
assert "data" in result
class TestGenerator:
def test_generate_curl(self, sample_request):
result = Generator.generate(sample_request, OutputFormat.CURL)
assert "curl" in result
def test_generate_httpie(self, sample_request):
result = Generator.generate(sample_request, OutputFormat.HTTPie)
assert "GET" in result
def test_generate_fetch(self, sample_request):
result = Generator.generate(sample_request, OutputFormat.FETCH)
assert "fetch(" in result
def test_generate_axios(self, sample_request):
result = Generator.generate(sample_request, OutputFormat.AXIOS)
assert "axios(" in result
def test_generate_invalid_format(self, sample_request):
with pytest.raises(ValueError):
Generator.generate(sample_request, "invalid")