From 8cff05a196d02fdd98dcf1854a14388dfa604901 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 11:34:27 +0000 Subject: [PATCH] Initial commit: Add http-convert project --- tests/test_generators.py | 141 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 tests/test_generators.py diff --git a/tests/test_generators.py b/tests/test_generators.py new file mode 100644 index 0000000..4ed9184 --- /dev/null +++ b/tests/test_generators.py @@ -0,0 +1,141 @@ +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")