|
3 | 3 | import tempfile |
4 | 4 |
|
5 | 5 | import pytest |
| 6 | +from decoy import Decoy |
6 | 7 |
|
| 8 | +from rsocket.awaitable.awaitable_rsocket import AwaitableRSocket |
7 | 9 | from rsocket.cli.command import parse_uri, build_composite_metadata, create_request_payload, get_metadata_value, \ |
8 | 10 | create_setup_payload, normalize_data, normalize_limit_rate, RequestType, get_request_type, parse_headers, \ |
9 | | - normalize_metadata_mime_type |
| 11 | + normalize_metadata_mime_type, execute_request |
10 | 12 | from rsocket.extensions.helpers import route, authenticate_simple, authenticate_bearer |
11 | 13 | from rsocket.extensions.mimetypes import WellKnownMimeTypes |
12 | 14 | from rsocket.frame import MAX_REQUEST_N |
| 15 | +from rsocket.helpers import create_future |
13 | 16 | from rsocket.payload import Payload |
14 | 17 | from tests.rsocket.helpers import create_data |
15 | 18 |
|
@@ -175,3 +178,43 @@ def test_normalize_metadata_mime_type(composite_items, metadata_mime_type, expec |
175 | 178 | actual = normalize_metadata_mime_type(composite_items, metadata_mime_type) |
176 | 179 |
|
177 | 180 | assert actual == expected |
| 181 | + |
| 182 | + |
| 183 | +async def test_execute_request_response(decoy: Decoy): |
| 184 | + client = decoy.mock(cls=AwaitableRSocket) |
| 185 | + |
| 186 | + decoy.when(await client.request_response(Payload())).then_return(Payload(b'abc')) |
| 187 | + |
| 188 | + result = await execute_request(client, RequestType.response, 3, Payload()) |
| 189 | + |
| 190 | + assert result.data == b'abc' |
| 191 | + |
| 192 | + |
| 193 | +async def test_execute_request_stream(decoy: Decoy): |
| 194 | + client = decoy.mock(cls=AwaitableRSocket) |
| 195 | + |
| 196 | + decoy.when(await client.request_stream(Payload(), limit_rate=3)).then_return([Payload(b'abc')]) |
| 197 | + |
| 198 | + result = await execute_request(client, RequestType.stream, 3, Payload()) |
| 199 | + |
| 200 | + assert result[0].data == b'abc' |
| 201 | + |
| 202 | + |
| 203 | +async def test_execute_request_channel(decoy: Decoy): |
| 204 | + client = decoy.mock(cls=AwaitableRSocket) |
| 205 | + |
| 206 | + decoy.when(await client.request_channel(Payload(), limit_rate=3)).then_return([Payload(b'abc')]) |
| 207 | + |
| 208 | + result = await execute_request(client, RequestType.channel, 3, Payload()) |
| 209 | + |
| 210 | + assert result[0].data == b'abc' |
| 211 | + |
| 212 | + |
| 213 | +async def test_execute_request_fnf(decoy: Decoy): |
| 214 | + client = decoy.mock(cls=AwaitableRSocket) |
| 215 | + |
| 216 | + decoy.when(client.fire_and_forget(Payload())).then_return(create_future(None)) |
| 217 | + |
| 218 | + result = await execute_request(client, RequestType.fnf, 3, Payload()) |
| 219 | + |
| 220 | + assert result is None |
0 commit comments