diff --git a/tests/test_generators.py b/tests/test_generators.py new file mode 100644 index 0000000..d03279c --- /dev/null +++ b/tests/test_generators.py @@ -0,0 +1,158 @@ +"""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 generating Python code for GET request.""" + curl = "curl https://api.example.com/users" + parsed = parse_curl(curl) + code = generate_code(parsed, "python") + + assert "import requests" in code + assert "https://api.example.com/users" in code + assert "requests.get" in code + + def test_post_with_json(self): + """Test generating Python code for POST with JSON.""" + curl = 'curl -X POST -H "Content-Type: application/json" -d \'{"name":"test"}\' https://api.example.com/users' + parsed = parse_curl(curl) + code = generate_code(parsed, "python") + + assert "requests.post" in code + assert "json=data" in code or "json=data" in code + + def test_basic_auth(self): + """Test generating Python code with basic auth.""" + curl = "curl -u user:pass https://api.example.com" + parsed = parse_curl(curl) + code = generate_code(parsed, "python") + + assert "Authorization" in code or "requests" in code + + def test_headers(self): + """Test generating Python code with headers.""" + curl = 'curl -H "Authorization: Bearer token" https://api.example.com' + parsed = parse_curl(curl) + code = generate_code(parsed, "python") + + assert "headers" in code + + +class TestJavaScriptGenerator: + """Tests for JavaScript code generator.""" + + def test_basic_get_request(self): + """Test generating JavaScript code for GET request.""" + curl = "curl https://api.example.com/users" + parsed = parse_curl(curl) + code = generate_code(parsed, "javascript") + + assert "fetch" in code + assert "https://api.example.com/users" in code + assert "GET" in code + + def test_post_with_data(self): + """Test generating JavaScript code for POST.""" + curl = "curl -X POST -d 'name=test' https://api.example.com/users" + parsed = parse_curl(curl) + 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 generating Go code for GET request.""" + curl = "curl https://api.example.com/users" + parsed = parse_curl(curl) + code = generate_code(parsed, "go") + + assert "package main" in code + assert "net/http" in code + assert "https://api.example.com/users" in code + + def test_post_request(self): + """Test generating Go code for POST.""" + curl = "curl -X POST -d 'name=test' https://api.example.com/users" + parsed = parse_curl(curl) + code = generate_code(parsed, "go") + + assert "POST" in code + assert "bytes.NewBuffer" in code + + +class TestRubyGenerator: + """Tests for Ruby code generator.""" + + def test_basic_get_request(self): + """Test generating Ruby code for GET request.""" + curl = "curl https://api.example.com/users" + parsed = parse_curl(curl) + code = generate_code(parsed, "ruby") + + assert "require 'net/http'" in code + assert "Net::HTTP::Get" in code + assert "https://api.example.com/users" in code + + def test_post_request(self): + """Test generating Ruby code for POST.""" + curl = "curl -X POST -d 'name=test' https://api.example.com/users" + parsed = parse_curl(curl) + code = generate_code(parsed, "ruby") + + assert "Net::HTTP::Post" in code + + +class TestPHPGenerator: + """Tests for PHP code generator.""" + + def test_basic_get_request(self): + """Test generating PHP code for GET request.""" + curl = "curl https://api.example.com/users" + parsed = parse_curl(curl) + code = generate_code(parsed, "php") + + assert "