Re-upload: CI infrastructure issue resolved, all tests verified passing
This commit is contained in:
129
old_tests/test_diff_engine.py
Normal file
129
old_tests/test_diff_engine.py
Normal file
@@ -0,0 +1,129 @@
|
||||
"""Tests for diff engine."""
|
||||
|
||||
import pytest
|
||||
from datetime import datetime
|
||||
|
||||
from http_log_explorer.analyzers import DiffEngine
|
||||
from http_log_explorer.models import HTTPEntry, Request, Response
|
||||
|
||||
|
||||
def make_entry(
|
||||
method: str = "GET",
|
||||
url: str = "https://api.example.com/test",
|
||||
status: int = 200,
|
||||
req_headers: dict | None = None,
|
||||
resp_headers: dict | None = None,
|
||||
req_body: str | None = None,
|
||||
resp_body: str | None = None,
|
||||
) -> HTTPEntry:
|
||||
"""Create a test HTTPEntry."""
|
||||
return HTTPEntry(
|
||||
id=f"entry-{method}-{status}",
|
||||
request=Request(
|
||||
method=method,
|
||||
url=url,
|
||||
headers=req_headers or {"Content-Type": "application/json"},
|
||||
body=req_body,
|
||||
),
|
||||
response=Response(
|
||||
status=status,
|
||||
status_text="OK",
|
||||
headers=resp_headers or {"Content-Type": "application/json"},
|
||||
body=resp_body,
|
||||
),
|
||||
timestamp=datetime.now(),
|
||||
)
|
||||
|
||||
|
||||
class TestDiffEngine:
|
||||
"""Tests for DiffEngine."""
|
||||
|
||||
def test_diff_same_entries(self):
|
||||
"""Test diffing identical entries."""
|
||||
entry1 = make_entry()
|
||||
entry2 = make_entry()
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
|
||||
assert not engine.has_differences(result)
|
||||
assert result.status1 == result.status2
|
||||
|
||||
def test_diff_status_change(self):
|
||||
"""Test diffing entries with different status codes."""
|
||||
entry1 = make_entry(status=200)
|
||||
entry2 = make_entry(status=404)
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
|
||||
assert result.status_changed
|
||||
assert result.status1 == 200
|
||||
assert result.status2 == 404
|
||||
|
||||
def test_diff_url_change(self):
|
||||
"""Test diffing entries with different URLs."""
|
||||
entry1 = make_entry(url="https://api.example.com/users")
|
||||
entry2 = make_entry(url="https://api.example.com/posts")
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
|
||||
assert result.url_changed
|
||||
|
||||
def test_diff_headers_change(self):
|
||||
"""Test diffing entries with different headers."""
|
||||
entry1 = make_entry(
|
||||
req_headers={"Content-Type": "application/json", "X-Request-ID": "123"}
|
||||
)
|
||||
entry2 = make_entry(
|
||||
req_headers={"Content-Type": "application/json", "X-Request-ID": "456"}
|
||||
)
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
|
||||
assert len(result.request_headers_diff) > 0
|
||||
|
||||
def test_diff_headers_added_removed(self):
|
||||
"""Test detecting added/removed headers."""
|
||||
entry1 = make_entry(req_headers={"Content-Type": "application/json"})
|
||||
entry2 = make_entry(req_headers={"Authorization": "Bearer token"})
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
|
||||
assert any("+ Authorization:" in s for s in result.request_headers_diff)
|
||||
assert any("- Content-Type:" in s for s in result.request_headers_diff)
|
||||
|
||||
def test_diff_body_change(self):
|
||||
"""Test diffing entries with different bodies."""
|
||||
entry1 = make_entry(resp_body='{"id": 1, "name": "Alice"}')
|
||||
entry2 = make_entry(resp_body='{"id": 1, "name": "Bob"}')
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
|
||||
assert len(result.response_body_diff) > 0
|
||||
|
||||
def test_unified_diff_output(self):
|
||||
"""Test unified diff output formatting."""
|
||||
entry1 = make_entry(status=200)
|
||||
entry2 = make_entry(status=404)
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
output = engine.unified_diff_output(result)
|
||||
|
||||
assert "Status: 200 -> 404" in output
|
||||
|
||||
def test_no_differences(self):
|
||||
"""Test output when no differences exist."""
|
||||
entry1 = make_entry()
|
||||
entry2 = make_entry()
|
||||
|
||||
engine = DiffEngine()
|
||||
result = engine.diff(entry1, entry2)
|
||||
output = engine.unified_diff_output(result)
|
||||
|
||||
assert "No differences found" in output
|
||||
Reference in New Issue
Block a user