Skip to content

Commit e43f97c

Browse files
committed
fix getting composite metadata on router via annotation
1 parent c4bd4b0 commit e43f97c

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

rsocket/routing/request_router.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ def _collect_route_arguments(self,
174174
for parameter in route_signature.parameters:
175175
parameter_type = route_signature.parameters[parameter]
176176

177-
if 'composite_metadata' == parameter or parameter_type is CompositeMetadata:
178-
route_kwargs['composite_metadata'] = composite_metadata
177+
if 'composite_metadata' == parameter or parameter_type.annotation is CompositeMetadata:
178+
route_kwargs[parameter] = composite_metadata
179179
else:
180180
payload_data = payload
181181

tests/rsocket/test_routing.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,25 @@ async def response(composite_metadata: CompositeMetadata):
141141
assert result.metadata == b'test.path'
142142

143143

144+
async def test_routed_request_response_composite_according_to_type(lazy_pipe):
145+
router = RequestRouter()
146+
147+
def handler_factory():
148+
return RoutingRequestHandler(router)
149+
150+
@router.response('test.path')
151+
async def response(metadata: CompositeMetadata):
152+
return create_response(metadata=metadata.items[0].tags[0])
153+
154+
async with lazy_pipe(
155+
client_arguments={'metadata_encoding': WellKnownMimeTypes.MESSAGE_RSOCKET_COMPOSITE_METADATA},
156+
server_arguments={'handler_factory': handler_factory}) as (server, client):
157+
result = await client.request_response(Payload(metadata=composite(route('test.path'))))
158+
159+
assert result.metadata == b'test.path'
160+
161+
162+
144163
async def test_routed_request_response_properly_finished_accept_payload_and_metadata(lazy_pipe):
145164
router = RequestRouter()
146165

0 commit comments

Comments
 (0)