Example #1
0
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': {},
            },
        },
    })
Example #2
0
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',
            },
        },
    })
Example #3
0
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))
Example #4
0
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': {},
            },
        },
    })
Example #5
0
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'),
            },
        },
    })
Example #6
0
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)
Example #7
0
def test_simple_handler_response():
    service = subject.ServerlessHandlerMapper('test')
    tester = service.case_tester()
    
    tester({
        'method': 'GET',
        'url': '/simple_response',
        'response body': "{\"answer\": 42}",
    })
Example #8
0
def test_bad_handler_response():
    service = subject.ServerlessHandlerMapper('test')
    tester = service.case_tester()
    
    (tester, {
        'method': 'GET',
        'url': '/bad_response',
        'response body': {},
    }) |should| throw(AssertionError)
Example #9
0
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')
Example #10
0
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)
Example #11
0
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',
    })
Example #12
0
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)
Example #13
0
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)
Example #14
0
def test_genfunc_case_env():
    def my_case_env(case):
        yield
    
    service = subject.ServerlessHandlerMapper('test')
    tester = service.case_tester(case_env=my_case_env)
Example #15
0
def test_ServerlessHandlerMapper_project_dir_property():
    service = subject.ServerlessHandlerMapper('test')
    service.project_dir |should| be_kind_of(Path)