Initial upload: API Mock CLI v0.1.0
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.9) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / type-check (push) Has been cancelled
CI / build (push) Has been cancelled

This commit is contained in:
2026-01-29 13:54:00 +00:00
parent b583d375f2
commit 26f54e748f

83
tests/test_router.py Normal file
View File

@@ -0,0 +1,83 @@
import pytest
from src.core.router import Router
from src.models.endpoint import Endpoint
class TestRouter:
def setup_method(self):
self.router = Router()
def test_add_route_simple(self):
endpoint = Endpoint(
path="/api/users",
method="GET",
response={"status_code": 200, "body": {"users": []}}
)
self.router.add_route(endpoint)
routes = self.router.get_all_routes()
assert len(routes) == 1
assert routes[0].path == "/api/users"
def test_match_simple_path(self):
endpoint = Endpoint(
path="/api/hello",
method="GET",
response={"status_code": 200, "body": {"message": "Hello"}}
)
self.router.add_route(endpoint)
result = self.router.match("/api/hello", "GET")
assert result is not None
endpoint_result, params = result
assert endpoint_result.path == "/api/hello"
assert params == {}
def test_match_with_path_params(self):
endpoint = Endpoint(
path="/api/users/{id}",
method="GET",
response={"status_code": 200, "body": {}}
)
self.router.add_route(endpoint)
result = self.router.match("/api/users/123", "GET")
assert result is not None
endpoint_result, params = result
assert params["id"] == "123"
def test_match_method_mismatch(self):
endpoint = Endpoint(
path="/api/users",
method="GET",
response={"status_code": 200, "body": {}}
)
self.router.add_route(endpoint)
result = self.router.match("/api/users", "POST")
assert result is None
def test_match_nonexistent_path(self):
result = self.router.match("/api/nonexistent", "GET")
assert result is None
def test_clear_routes(self):
endpoint = Endpoint(
path="/api/test",
method="GET",
response={"status_code": 200, "body": {}}
)
self.router.add_route(endpoint)
self.router.clear()
routes = self.router.get_all_routes()
assert len(routes) == 0
def test_multiple_routes(self):
endpoints = [
Endpoint(path="/api/users", method="GET", response={}),
Endpoint(path="/api/users/{id}", method="GET", response={}),
Endpoint(path="/api/posts", method="POST", response={}),
]
for ep in endpoints:
self.router.add_route(ep)
assert len(self.router.get_all_routes()) == 3
assert self.router.match("/api/users", "GET") is not None
assert self.router.match("/api/users/123", "GET") is not None
assert self.router.match("/api/posts", "POST") is not None
assert self.router.match("/api/posts", "GET") is None