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