fix(add tests):

This commit is contained in:
Alexander Myasoedov committed 2024-12-19 21:29:38 +02:00
1 parent da362990b2
commit 9189b52453
5 files changed
+88 -2

No files matched your search

+2 -1
View File
@@ -2,7 +2,8 @@ import httpx
from pydantic import BaseModel
class InvalidHTTPSpecError(Exception): ...
class InvalidHTTPSpecError(Exception):
...
class LLMSpec(BaseModel):
+64
View File
@@ -1,3 +1,5 @@
import pytest
from agentic_security.http_spec import LLMSpec, parse_http_spec
@@ -52,3 +54,65 @@ class TestParseHttpSpec:
assert result.url == "http://example.com"
assert result.headers == {"Content-Type": "application/json"}
assert result.body == ""
class TestLLMSpec:
def test_validate_raises_error_for_missing_files(self):
spec = LLMSpec(
method="POST", url="http://example.com", headers={}, body="", has_files=True
)
with pytest.raises(ValueError, match="Files are required for this request."):
spec.validate(prompt="", encoded_image="", files={})
def test_validate_raises_error_for_missing_image(self):
spec = LLMSpec(
method="POST", url="http://example.com", headers={}, body="", has_image=True
)
with pytest.raises(ValueError, match="An image is required for this request."):
spec.validate(prompt="", encoded_image="", files={})
@pytest.mark.asyncio
async def test_probe_sends_request(self, httpx_mock):
httpx_mock.add_response(
method="POST", url="http://example.com", status_code=200
)
spec = LLMSpec(
method="POST",
url="http://example.com",
headers={},
body='{"prompt": "<<PROMPT>>"}',
)
response = await spec.probe(prompt="test")
assert response.status_code == 200
@pytest.mark.asyncio
async def test_probe_with_files(self, httpx_mock):
httpx_mock.add_response(
method="POST", url="http://example.com", status_code=200
)
spec = LLMSpec(
method="POST",
url="http://example.com",
headers={"Content-Type": "multipart/form-data"},
body='{"prompt": "<<PROMPT>>"}',
has_files=True,
)
files = {"file": ("filename.txt", "file content")}
response = await spec.probe(prompt="test", files=files)
assert response.status_code == 200
@pytest.mark.asyncio
async def test_probe_with_image(self, httpx_mock):
httpx_mock.add_response(
method="POST", url="http://example.com", status_code=200
)
spec = LLMSpec(
method="POST",
url="http://example.com",
headers={},
body='{"image": "<<BASE64_IMAGE>>"}',
has_image=True,
)
encoded_image = "base64encodedstring"
response = await spec.probe(prompt="test", encoded_image=encoded_image)
assert response.status_code == 200