This commit is contained in:
71
tests/test_models.py
Normal file
71
tests/test_models.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import pytest
|
||||
from src.http_convert.models import HTTPRequest, HttpMethod, OutputFormat, InputFormat
|
||||
|
||||
|
||||
class TestHTTPRequest:
|
||||
def test_default_values(self):
|
||||
request = HTTPRequest(url="https://example.com")
|
||||
assert request.method == HttpMethod.GET
|
||||
assert request.url == "https://example.com"
|
||||
assert request.headers == {}
|
||||
assert request.params == {}
|
||||
assert request.body is None
|
||||
|
||||
def test_custom_values(self):
|
||||
request = HTTPRequest(
|
||||
method=HttpMethod.POST,
|
||||
url="https://api.example.com/users",
|
||||
headers={"Content-Type": "application/json"},
|
||||
params={"page": "1"},
|
||||
body='{"name": "test"}'
|
||||
)
|
||||
assert request.method == HttpMethod.POST
|
||||
assert request.url == "https://api.example.com/users"
|
||||
assert request.headers["Content-Type"] == "application/json"
|
||||
assert request.params["page"] == "1"
|
||||
assert request.body == '{"name": "test"}'
|
||||
|
||||
def test_get_final_url_no_params(self):
|
||||
request = HTTPRequest(url="https://example.com/users")
|
||||
assert request.get_final_url() == "https://example.com/users"
|
||||
|
||||
def test_get_final_url_with_params(self):
|
||||
request = HTTPRequest(
|
||||
url="https://example.com/users",
|
||||
params={"page": "1", "limit": "10"}
|
||||
)
|
||||
result = request.get_final_url()
|
||||
assert "https://example.com/users?page=1&limit=10" == result or \
|
||||
"https://example.com/users?limit=10&page=1" == result
|
||||
|
||||
def test_get_final_url_with_existing_query(self):
|
||||
request = HTTPRequest(
|
||||
url="https://example.com/users?active=true",
|
||||
params={"page": "1"}
|
||||
)
|
||||
result = request.get_final_url()
|
||||
assert "page=1" in result
|
||||
assert "active=true" in result
|
||||
|
||||
|
||||
class TestHttpMethod:
|
||||
def test_all_methods(self):
|
||||
assert HttpMethod.GET.value == "GET"
|
||||
assert HttpMethod.POST.value == "POST"
|
||||
assert HttpMethod.PUT.value == "PUT"
|
||||
assert HttpMethod.PATCH.value == "PATCH"
|
||||
assert HttpMethod.DELETE.value == "DELETE"
|
||||
assert HttpMethod.HEAD.value == "HEAD"
|
||||
assert HttpMethod.OPTIONS.value == "OPTIONS"
|
||||
|
||||
def test_method_from_string(self):
|
||||
assert HttpMethod("GET") == HttpMethod.GET
|
||||
assert HttpMethod("POST") == HttpMethod.POST
|
||||
|
||||
|
||||
class TestOutputFormat:
|
||||
def test_all_formats(self):
|
||||
assert OutputFormat.CURL.value == "curl"
|
||||
assert OutputFormat.HTTPie.value == "httpie"
|
||||
assert OutputFormat.FETCH.value == "fetch"
|
||||
assert OutputFormat.AXIOS.value == "axios"
|
||||
Reference in New Issue
Block a user