userver: samples/grpc_middleware_service/tests/test_middlewares.py
Loading...
Searching...
No Matches
samples/grpc_middleware_service/tests/test_middlewares.py
1from grpc import StatusCode
2from grpc.aio import AioRpcError
3import pytest
4
5# /// [gRPC mockserver]
6import samples.greeter_pb2 as greeter_protos
7import samples.greeter_pb2_grpc as greeter_services
8
9
10async def test_basic_mock_server(service_client, grpc_mockserver):
11 @grpc_mockserver(greeter_services.GreeterServiceServicer.SayHello)
12 async def mock_say_hello(request, context):
13 return greeter_protos.GreetingResponse(
14 greeting=f'Hello, {request.name} from mockserver!',
15 )
16
17 response = await service_client.post('/hello?case=say_hello', data='tests')
18 assert response.status == 200
19 assert response.text == 'Hello, tests from mockserver!'
20 assert mock_say_hello.times_called == 1
21
22
23# /// [gRPC mockserver]
24
25
26async def test_meta_filter(grpc_client):
27 request = greeter_protos.GreetingRequest(name='Python')
28
29 with pytest.raises(AioRpcError) as err:
30 await grpc_client.SayHello(
31 request=request,
32 metadata=[
33 ('x-key', 'secret-credentials'),
34 ('bad-header', 'bad-value'),
35 ],
36 )
37 assert err.value.code() == StatusCode.FAILED_PRECONDITION
38
39
40# /// [grpc authentication tests]
41async def test_correct_credentials(grpc_client):
42 request = greeter_protos.GreetingRequest(name='Python')
43 response = await grpc_client.SayHello(
44 request=request,
45 metadata=[
46 ('x-key', 'secret-credentials'),
47 ('specific-header', 'specific-value'),
48 ],
49 )
50 assert response.greeting == 'Hello, Python!'
51
52
53async def test_incorrect_credentials(grpc_client):
54 request = greeter_protos.GreetingRequest(name='Python')
55
56 with pytest.raises(AioRpcError) as err:
57 await grpc_client.SayHello(
58 request=request,
59 metadata=[('x-key', 'secretcredentials')],
60 )
61 assert err.value.code() == StatusCode.PERMISSION_DENIED
62
63
64async def test_no_credentials(grpc_client):
65 request = greeter_protos.GreetingRequest(name='Python')
66
67 with pytest.raises(AioRpcError) as err:
68 await grpc_client.SayHello(request=request)
69 assert err.value.code() == StatusCode.PERMISSION_DENIED
70
71
72# /// [grpc authentication tests]