forked from ucloud/ucloud-sdk-python3
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmock.py
More file actions
28 lines (20 loc) · 863 Bytes
/
mock.py
File metadata and controls
28 lines (20 loc) · 863 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import json
import typing
from ucloud.core.transport import Transport, Request, Response
class MockedTransport(Transport):
def __init__(self):
super(MockedTransport, self).__init__()
self.transport_handlers = []
self.client_handler = []
def send(self, req: Request, **options: typing.Any) -> Response:
resp = Response(req.url, req.method)
for handler in self.transport_handlers:
resp = handler(req)
for handler in self.client_handler:
payload = handler(req.payload())
resp.content = json.dumps(payload).encode("utf-8")
return resp
def mock(self, handler: typing.Callable[[Request], Response]):
self.transport_handlers.append(handler)
def mock_data(self, handler: typing.Callable[[dict], dict]):
self.client_handler.append(handler)