Files
teng-lin--notebooklm-py/tests/unit/test_middleware_chain_builder.py
wehub-resource-sync 09e9f3545f
Test / Code Quality (push) Has been cancelled
Test / Test (macos-latest, Python 3.10) (push) Has been cancelled
Test / Test (macos-latest, Python 3.11) (push) Has been cancelled
Test / Test (macos-latest, Python 3.12) (push) Has been cancelled
Test / Test (macos-latest, Python 3.13) (push) Has been cancelled
Test / Test (macos-latest, Python 3.14) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.10) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.11) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.12) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.13) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.14) (push) Has been cancelled
Test / Test (windows-latest, Python 3.10) (push) Has been cancelled
Test / Test (windows-latest, Python 3.11) (push) Has been cancelled
Test / Test (windows-latest, Python 3.12) (push) Has been cancelled
Test / Test (windows-latest, Python 3.13) (push) Has been cancelled
Test / Test (windows-latest, Python 3.14) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
dependency-audit / pip-audit (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:30:13 +08:00

51 lines
1.9 KiB
Python

"""Unit tests for MiddlewareChainBuilder — pins ADR-0009 ordering at builder level."""
from __future__ import annotations
from contextlib import nullcontext
from unittest.mock import MagicMock
from notebooklm._middleware.auth_refresh import AuthRefreshMiddleware
from notebooklm._middleware.drain import DrainMiddleware
from notebooklm._middleware.error_injection import ErrorInjectionMiddleware
from notebooklm._middleware.metrics import MetricsMiddleware
from notebooklm._middleware.retry import RetryMiddleware
from notebooklm._middleware.semaphore import SemaphoreMiddleware
from notebooklm._middleware.tracing import TracingMiddleware
def _builder_kwargs():
"""Return kwargs sufficient to instantiate MiddlewareChainBuilder."""
async def _snapshot():
return MagicMock()
return {
"drain_tracker": MagicMock(),
"metrics": MagicMock(),
"rpc_semaphore_factory": lambda: nullcontext(),
"rate_limit_max_retries_provider": lambda: 3,
"server_error_max_retries_provider": lambda: 3,
"retry_timeout_provider": lambda: 30.0,
"refresh_retry_delay_provider": lambda: 0.0,
"refresh_callable": lambda: None,
"auth_snapshot_provider": _snapshot,
"is_auth_error": lambda exc: False,
"refresh_callback_enabled_provider": lambda: True,
}
def test_builder_returns_adr_009_order():
from notebooklm._middleware.chain import MiddlewareChainBuilder
chain = MiddlewareChainBuilder(**_builder_kwargs()).build()
assert len(chain) == 7
assert isinstance(chain[0], DrainMiddleware)
assert isinstance(chain[1], MetricsMiddleware)
assert isinstance(chain[2], SemaphoreMiddleware)
assert isinstance(chain[3], RetryMiddleware)
assert isinstance(chain[4], AuthRefreshMiddleware)
assert isinstance(chain[5], ErrorInjectionMiddleware)
assert isinstance(chain[6], TracingMiddleware)