This commit is contained in:
141
tests/test_generators.py
Normal file
141
tests/test_generators.py
Normal file
@@ -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")
|
||||||
Reference in New Issue
Block a user