127 lines
4.3 KiB
Python
127 lines
4.3 KiB
Python
{"""Tests for code generators."""
|
|
|
|
import pytest
|
|
from curlconverter.parser import parse_curl
|
|
from curlconverter.generators import generate_code, get_supported_languages
|
|
|
|
|
|
class TestPythonGenerator:
|
|
"""Tests for Python code generator."""
|
|
|
|
def test_basic_get_request(self):
|
|
"""Test basic GET request."""
|
|
parsed = parse_curl("curl http://example.com")
|
|
code = generate_code(parsed, "python")
|
|
assert "import requests" in code
|
|
assert "url = 'http://example.com'" in code
|
|
assert "requests.get" in code
|
|
|
|
def test_post_with_json(self):
|
|
"""Test POST with JSON data."""
|
|
parsed = parse_curl('curl -X POST -H "Content-Type: application/json" -d \'{"key":"value"}\' http://example.com')
|
|
code = generate_code(parsed, "python")
|
|
assert "requests.post" in code
|
|
assert "json=data" in code
|
|
|
|
def test_basic_auth(self):
|
|
"""Test basic authentication."""
|
|
parsed = parse_curl("curl -u user:pass http://example.com")
|
|
code = generate_code(parsed, "python")
|
|
assert "Authorization" in code
|
|
assert "Basic" in code
|
|
|
|
def test_headers(self):
|
|
"""Test custom headers."""
|
|
parsed = parse_curl('curl -H "X-Custom: header" http://example.com')
|
|
code = generate_code(parsed, "python")
|
|
assert "X-Custom" in code
|
|
|
|
|
|
class TestJavaScriptGenerator:
|
|
"""Tests for JavaScript code generator."""
|
|
|
|
def test_basic_get_request(self):
|
|
"""Test basic GET request."""
|
|
parsed = parse_curl("curl http://example.com")
|
|
code = generate_code(parsed, "javascript")
|
|
assert "fetch" in code
|
|
assert "url = 'http://example.com'" in code
|
|
|
|
def test_post_with_data(self):
|
|
"""Test POST with data."""
|
|
parsed = parse_curl("curl -X POST -d 'key=value' http://example.com")
|
|
code = generate_code(parsed, "javascript")
|
|
assert "POST" in code
|
|
assert "body" in code
|
|
|
|
|
|
class TestGoGenerator:
|
|
"""Tests for Go code generator."""
|
|
|
|
def test_basic_get_request(self):
|
|
"""Test basic GET request."""
|
|
parsed = parse_curl("curl http://example.com")
|
|
code = generate_code(parsed, "go")
|
|
assert "package main" in code
|
|
assert "net/http" in code
|
|
assert "http.NewRequest" in code
|
|
|
|
def test_post_request(self):
|
|
"""Test POST request."""
|
|
parsed = parse_curl("curl -X POST -d 'key=value' http://example.com")
|
|
code = generate_code(parsed, "go")
|
|
assert "POST" in code
|
|
assert "strings.NewReader" in code
|
|
|
|
|
|
class TestRubyGenerator:
|
|
"""Tests for Ruby code generator."""
|
|
|
|
def test_basic_get_request(self):
|
|
"""Test basic GET request."""
|
|
parsed = parse_curl("curl http://example.com")
|
|
code = generate_code(parsed, "ruby")
|
|
assert "net/http" in code
|
|
assert "Net::HTTP" in code
|
|
|
|
def test_post_request(self):
|
|
"""Test POST request."""
|
|
parsed = parse_curl("curl -X POST -d 'key=value' http://example.com")
|
|
code = generate_code(parsed, "ruby")
|
|
assert "Post" in code
|
|
|
|
|
|
class TestPHPGenerator:
|
|
"""Tests for PHP code generator."""
|
|
|
|
def test_basic_get_request(self):
|
|
"""Test basic GET request."""
|
|
parsed = parse_curl("curl http://example.com")
|
|
code = generate_code(parsed, "php")
|
|
assert "curl_init" in code
|
|
assert "$url" in code
|
|
|
|
def test_post_request(self):
|
|
"""Test POST request."""
|
|
parsed = parse_curl("curl -X POST -d 'key=value' http://example.com")
|
|
code = generate_code(parsed, "php")
|
|
assert "CURLOPT_POST" in code or "CURLOPT_CUSTOMREQUEST" in code
|
|
|
|
|
|
class TestSupportedLanguages:
|
|
"""Tests for supported languages."""
|
|
|
|
def test_get_supported_languages(self):
|
|
"""Test getting supported languages."""
|
|
languages = get_supported_languages()
|
|
assert "python" in languages
|
|
assert "javascript" in languages
|
|
assert "go" in languages
|
|
assert "ruby" in languages
|
|
assert "php" in languages
|
|
|
|
def test_unsupported_language_raises_error(self):
|
|
"""Test unsupported language raises error."""
|
|
parsed = parse_curl("curl http://example.com")
|
|
with pytest.raises(ValueError, match="Unsupported language"):
|
|
generate_code(parsed, "unsupported") |