mirror of https://github.com/gsi-upm/senpy
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
852 B
Python
32 lines
852 B
Python
from past.builtins import basestring
|
|
|
|
import os
|
|
import responses as requestmock
|
|
|
|
from .models import BaseModel
|
|
|
|
|
|
MOCK_REQUESTS = os.environ.get('MOCK_REQUESTS', '').lower() in ['no', 'false']
|
|
|
|
|
|
def patch_all_requests(responses):
|
|
|
|
patched = requestmock.RequestsMock()
|
|
|
|
for response in responses or []:
|
|
args = response.copy()
|
|
if 'json' in args and isinstance(args['json'], BaseModel):
|
|
args['json'] = args['json'].jsonld()
|
|
args['method'] = getattr(requestmock, args.get('method', 'GET'))
|
|
patched.add(**args)
|
|
return patched
|
|
|
|
|
|
def patch_requests(url, response, method='GET', status=200):
|
|
args = {'url': url, 'method': method, 'status': status}
|
|
if isinstance(response, basestring):
|
|
args['body'] = response
|
|
else:
|
|
args['json'] = response
|
|
return patch_all_requests([args])
|