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