mirror of
https://github.com/kuhyx/testsAndMisc-archive.git
synced 2026-07-04 20:23:14 +02:00
77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
|
|
"""Unit tests for mock_server module."""
|
||
|
|
|
||
|
|
from unittest.mock import MagicMock
|
||
|
|
|
||
|
|
from python_pkg.mock_server.mock_server import request
|
||
|
|
|
||
|
|
|
||
|
|
class TestRequest:
|
||
|
|
"""Tests for request function."""
|
||
|
|
|
||
|
|
def test_intercepts_example_com(self) -> None:
|
||
|
|
"""Test that requests to example.com are intercepted."""
|
||
|
|
flow = MagicMock()
|
||
|
|
flow.request.host = "example.com"
|
||
|
|
flow.response = None
|
||
|
|
|
||
|
|
request(flow)
|
||
|
|
|
||
|
|
# Response should be set
|
||
|
|
assert flow.response is not None
|
||
|
|
|
||
|
|
def test_returns_502_for_example_com(self) -> None:
|
||
|
|
"""Test that intercepted requests return 502 status."""
|
||
|
|
flow = MagicMock()
|
||
|
|
flow.request.host = "www.example.com"
|
||
|
|
flow.response = None
|
||
|
|
|
||
|
|
request(flow)
|
||
|
|
|
||
|
|
# Check status code is 502
|
||
|
|
assert flow.response is not None
|
||
|
|
assert flow.response.status_code == 502
|
||
|
|
|
||
|
|
def test_does_not_intercept_other_hosts(self) -> None:
|
||
|
|
"""Test that requests to other hosts are not intercepted."""
|
||
|
|
flow = MagicMock()
|
||
|
|
flow.request.host = "google.com"
|
||
|
|
flow.response = None
|
||
|
|
|
||
|
|
request(flow)
|
||
|
|
|
||
|
|
# Response should remain None
|
||
|
|
assert flow.response is None
|
||
|
|
|
||
|
|
def test_intercepts_subdomains_of_example_com(self) -> None:
|
||
|
|
"""Test that subdomains of example.com are also intercepted."""
|
||
|
|
flow = MagicMock()
|
||
|
|
flow.request.host = "api.example.com"
|
||
|
|
flow.response = None
|
||
|
|
|
||
|
|
request(flow)
|
||
|
|
|
||
|
|
assert flow.response is not None
|
||
|
|
|
||
|
|
def test_response_body_contains_simulated_message(self) -> None:
|
||
|
|
"""Test that response body contains failure message."""
|
||
|
|
flow = MagicMock()
|
||
|
|
flow.request.host = "example.com"
|
||
|
|
flow.response = None
|
||
|
|
|
||
|
|
request(flow)
|
||
|
|
|
||
|
|
assert flow.response is not None
|
||
|
|
assert b"Simulated connection failure" in flow.response.content
|
||
|
|
|
||
|
|
def test_response_content_type_is_text_plain(self) -> None:
|
||
|
|
"""Test that response has correct content type."""
|
||
|
|
flow = MagicMock()
|
||
|
|
flow.request.host = "example.com"
|
||
|
|
flow.response = None
|
||
|
|
|
||
|
|
request(flow)
|
||
|
|
|
||
|
|
# Check headers
|
||
|
|
assert flow.response is not None
|
||
|
|
assert flow.response.headers["Content-Type"] == "text/plain"
|