Files
curl-to-code-cli/.tests/test_generators.py

150 lines
5.3 KiB
Python

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