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