from asyncio import Future from unittest.mock import Mock, MagicMock from aiounittest import AsyncTestCase from botbuilder.integration.applicationinsights.aiohttp import ( bot_telemetry_middleware, aiohttp_telemetry_middleware, ) class TestAiohttpTelemetryMiddleware(AsyncTestCase): # pylint: disable=protected-access async def test_bot_telemetry_middleware(self): req = Mock() req.headers = {"Content-Type": "application/json"} req.json = MagicMock(return_value=Future()) req.json.return_value.set_result("mock body") async def handler(value): return value sut = await bot_telemetry_middleware(req, handler) assert "mock body" in aiohttp_telemetry_middleware._REQUEST_BODIES.values() aiohttp_telemetry_middleware._REQUEST_BODIES.clear() assert req == sut def test_retrieve_aiohttp_body(self): aiohttp_telemetry_middleware._REQUEST_BODIES = Mock() aiohttp_telemetry_middleware._REQUEST_BODIES.pop = Mock( return_value="test body" ) assert aiohttp_telemetry_middleware.retrieve_aiohttp_body() == "test body" aiohttp_telemetry_middleware._REQUEST_BODIES = {}