def test_request_headers(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() tester({ 'method': 'GET', 'url': '/greeting', 'request headers': { 'X-Weird-Stuff': 'goop', }, 'response body': { 'message': 'Go Serverless v1.0! Your function executed successfully!', 'input': { 'requestContext': { 'http': { 'method': 'get', 'path': '/greeting', 'protocol': 'HTTP/1.1', }, 'authentication': {}, 'authorizer': {}, }, 'rawPath': '/greeting', 'rawQueryString': '', 'headers': { 'X-Weird-Stuff': 'goop', }, 'isBase64Encoded': False, 'stageVariables': {}, 'queryStringParameters': {}, 'pathParameters': {}, }, }, })
def test_str_request_body(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() tester({ 'method': 'POST', 'url': '/greeting/neighbor', 'request body': "name=Fred", 'response body': { 'message': 'Go Serverless v1.0! Your function executed successfully!', 'input': { 'requestContext': { 'http': { 'method': 'post', 'path': '/greeting/neighbor', 'protocol': 'HTTP/1.1', }, 'authentication': {}, 'authorizer': {}, }, 'rawPath': '/greeting/neighbor', 'rawQueryString': '', 'headers': {}, 'isBase64Encoded': False, 'stageVariables': {}, 'queryStringParameters': {}, 'pathParameters': { 'subject': 'neighbor', }, 'body': 'name=Fred', }, }, })
def test_contextmgr_case_env(): def my_case_env(case): yield from contextlib import contextmanager service = subject.ServerlessHandlerMapper('test') tester = service.case_tester(case_env=contextmanager(my_case_env))
def test_client_certificate(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() client_cert = {'degree': 'master clown'} tester({ 'client certificate': client_cert, 'method': 'GET', 'url': '/greeting', 'response body': { 'message': 'Go Serverless v1.0! Your function executed successfully!', 'input': { 'requestContext': { 'http': { 'method': 'get', 'path': '/greeting', 'protocol': 'HTTP/1.1', }, 'authentication': { 'clientCert': client_cert, }, 'authorizer': {}, }, 'rawPath': '/greeting', 'rawQueryString': '', 'headers': {}, 'isBase64Encoded': False, 'stageVariables': {}, 'queryStringParameters': {}, 'pathParameters': {}, }, }, })
def test_binary_request_body(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() body = b'123456789' tester({ 'method': 'POST', 'url': '/greeting/cat', 'request body': body, 'response body': { 'message': 'Go Serverless v1.0! Your function executed successfully!', 'input': { 'requestContext': { 'http': { 'method': 'post', 'path': '/greeting/cat', 'protocol': 'HTTP/1.1', }, 'authentication': {}, 'authorizer': {}, }, 'rawPath': '/greeting/cat', 'rawQueryString': '', 'headers': {}, 'isBase64Encoded': True, 'stageVariables': {}, 'queryStringParameters': {}, 'pathParameters': { 'subject': 'cat' }, 'body': b64encode(body).decode('ASCII'), }, }, })
def test_response_header_multivalued_excessive(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() (tester, { 'method': 'GET', 'url': '/greeting', 'response headers': [ ['X-Weird-Stuff', '123'], ], 'response body': { 'message': 'Go Serverless v1.0! Your function executed successfully!', 'input': { 'requestContext': { 'http': { 'method': 'get', 'path': '/greeting', 'protocol': 'HTTP/1.1', }, 'authentication': {}, 'authorizer': {}, }, 'rawPath': '/greeting', 'rawQueryString': '', 'headers': {}, 'isBase64Encoded': False, 'stageVariables': {}, 'queryStringParameters': {}, 'pathParameters': {}, }, }, }) |should| throw(AssertionError)
def test_simple_handler_response(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() tester({ 'method': 'GET', 'url': '/simple_response', 'response body': "{\"answer\": 42}", })
def test_bad_handler_response(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() (tester, { 'method': 'GET', 'url': '/bad_response', 'response body': {}, }) |should| throw(AssertionError)
def test_full_proxy_routing(): def full_proxy_routing(self): sls_config = mock_run_serverless_print(self) sls_config['functions']['hello']['events'][0]['httpApi'] = '*' return sls_config import sys; from IPython.core.debugger import Pdb; sys.stdout.isatty() and Pdb().set_trace() with patch.object(subject.ServerlessHandlerMapper, '_get_rendered_serverless_config', full_proxy_routing): service = subject.ServerlessHandlerMapper('test') service.map('patch', '/worn_pants')
def test_unrouted(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() body = b'123456789' (tester, { 'method': 'GET', 'url': '/no-such', 'response body': b'123456789', }) |should| throw(subject.NoRoute)
def test_binary_response_body(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() body = b'123456789' tester({ 'method': 'GET', 'url': '/binary_document', 'response body': b'123456789', })
def test_unexpected_response_body(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() (tester, { 'method': 'GET', 'url': '/greeting', 'response body': { 'message': 'Go Serverless v1.0! Your function executed successfully!', }, }) |should| throw(subject.UnexpectedResponseBody)
def test_spec_missing_response_body(): service = subject.ServerlessHandlerMapper('test') tester = service.case_tester() (tester, { 'method': 'GET', 'url': '/greeting', }) |should_not| throw(subject.UnexpectedResponseBody) (tester, { 'method': 'GET', 'url': '/greeting', }) |should| throw(Exception)
def test_genfunc_case_env(): def my_case_env(case): yield service = subject.ServerlessHandlerMapper('test') tester = service.case_tester(case_env=my_case_env)
def test_ServerlessHandlerMapper_project_dir_property(): service = subject.ServerlessHandlerMapper('test') service.project_dir |should| be_kind_of(Path)