Initial commit: Add curl-to-code-cli project
This commit is contained in:
149
.tests/test_generators.py
Normal file
149
.tests/test_generators.py
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
import pytest
|
||||||
|
from curl_to_code.parser import parse_curl_command
|
||||||
|
from curl_to_code.generators import (
|
||||||
|
generate_python,
|
||||||
|
generate_javascript,
|
||||||
|
generate_go,
|
||||||
|
generate_rust,
|
||||||
|
generate_php,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestPythonGenerator:
|
||||||
|
def test_simple_get_request(self):
|
||||||
|
curl_cmd = "curl https://api.example.com/users"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_python(parsed)
|
||||||
|
|
||||||
|
assert "import requests" in code
|
||||||
|
assert "https://api.example.com/users" in code
|
||||||
|
assert "requests.get" in code or "requests." in code
|
||||||
|
|
||||||
|
def test_post_with_json(self):
|
||||||
|
curl_cmd = """curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com/users"""
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_python(parsed)
|
||||||
|
|
||||||
|
assert "json=" in code or "json_data" in code
|
||||||
|
assert 'HTTPBasicAuth' in code or "auth" in code
|
||||||
|
|
||||||
|
def test_request_with_auth(self):
|
||||||
|
curl_cmd = "curl -u user:password https://api.example.com"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_python(parsed)
|
||||||
|
|
||||||
|
assert "HTTPBasicAuth" in code
|
||||||
|
assert "user" in code
|
||||||
|
assert "password" in code
|
||||||
|
|
||||||
|
def test_request_with_headers(self):
|
||||||
|
curl_cmd = 'curl -H "Accept: application/json" https://api.example.com'
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_python(parsed)
|
||||||
|
|
||||||
|
assert "headers" in code
|
||||||
|
assert "Accept" in code
|
||||||
|
|
||||||
|
|
||||||
|
class TestJavaScriptGenerator:
|
||||||
|
def test_simple_get_request(self):
|
||||||
|
curl_cmd = "curl https://api.example.com/users"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_javascript(parsed)
|
||||||
|
|
||||||
|
assert "async function" in code or "await fetch" in code
|
||||||
|
assert "https://api.example.com/users" in code
|
||||||
|
|
||||||
|
def test_post_with_json(self):
|
||||||
|
curl_cmd = """curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com/users"""
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_javascript(parsed)
|
||||||
|
|
||||||
|
assert "JSON.stringify" in code
|
||||||
|
assert "response.json()" in code
|
||||||
|
|
||||||
|
def test_request_with_headers(self):
|
||||||
|
curl_cmd = 'curl -H "Authorization: Bearer token123" https://api.example.com'
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_javascript(parsed)
|
||||||
|
|
||||||
|
assert "headers" in code or "Authorization" in code
|
||||||
|
|
||||||
|
|
||||||
|
class TestGoGenerator:
|
||||||
|
def test_simple_get_request(self):
|
||||||
|
curl_cmd = "curl https://api.example.com/users"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_go(parsed)
|
||||||
|
|
||||||
|
assert "package main" in code
|
||||||
|
assert "net/http" in code
|
||||||
|
assert "https://api.example.com/users" in code
|
||||||
|
assert "http.NewRequest" in code
|
||||||
|
|
||||||
|
def test_post_with_json(self):
|
||||||
|
curl_cmd = """curl -X POST -d '{"name":"test"}' https://api.example.com/users"""
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_go(parsed)
|
||||||
|
|
||||||
|
assert "bytes.NewBuffer" in code or "json" in code
|
||||||
|
|
||||||
|
|
||||||
|
class TestRustGenerator:
|
||||||
|
def test_simple_get_request(self):
|
||||||
|
curl_cmd = "curl https://api.example.com/users"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_rust(parsed)
|
||||||
|
|
||||||
|
assert "reqwest" in code
|
||||||
|
assert "tokio::main" in code or "#[tokio::main]" in code
|
||||||
|
assert "https://api.example.com/users" in code
|
||||||
|
|
||||||
|
def test_request_with_headers(self):
|
||||||
|
curl_cmd = 'curl -H "Accept: application/json" https://api.example.com'
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_rust(parsed)
|
||||||
|
|
||||||
|
assert "HashMap" in code or "headers" in code
|
||||||
|
|
||||||
|
|
||||||
|
class TestPHPGenerator:
|
||||||
|
def test_simple_get_request(self):
|
||||||
|
curl_cmd = "curl https://api.example.com/users"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_php(parsed)
|
||||||
|
|
||||||
|
assert "curl_init" in code
|
||||||
|
assert "https://api.example.com/users" in code
|
||||||
|
assert "curl_exec" in code
|
||||||
|
|
||||||
|
def test_request_with_auth(self):
|
||||||
|
curl_cmd = "curl -u user:pass https://api.example.com"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
code = generate_php(parsed)
|
||||||
|
|
||||||
|
assert "CURLOPT_USERPWD" in code
|
||||||
|
assert "user" in code
|
||||||
|
assert "pass" in code
|
||||||
|
|
||||||
|
|
||||||
|
class TestAllGenerators:
|
||||||
|
def test_all_languages_produce_output(self):
|
||||||
|
curl_cmd = "curl https://api.example.com/users"
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
|
||||||
|
assert len(generate_python(parsed)) > 0
|
||||||
|
assert len(generate_javascript(parsed)) > 0
|
||||||
|
assert len(generate_go(parsed)) > 0
|
||||||
|
assert len(generate_rust(parsed)) > 0
|
||||||
|
assert len(generate_php(parsed)) > 0
|
||||||
|
|
||||||
|
def test_complex_curl_all_languages(self):
|
||||||
|
curl_cmd = '''curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer token123" -d '{"name":"test","value":1}' https://api.example.com/users'''
|
||||||
|
parsed = parse_curl_command(curl_cmd)
|
||||||
|
|
||||||
|
assert len(generate_python(parsed)) > 0
|
||||||
|
assert len(generate_javascript(parsed)) > 0
|
||||||
|
assert len(generate_go(parsed)) > 0
|
||||||
|
assert len(generate_rust(parsed)) > 0
|
||||||
|
assert len(generate_php(parsed)) > 0
|
||||||
Reference in New Issue
Block a user