Example #1
0
 def test_body(self):
     from slam._handler import lambda_handler
     app.write = b'baz'
     app.body = [b'foo', b'bar']
     rv = lambda_handler({'body': 'foo'}, self.context)
     self.assertEqual(app.environ['wsgi.input'].read(), b'foo')
     self.assertEqual(rv['body'], b'bazfoobar')
Example #2
0
 def test_headers(self):
     from slam._handler import lambda_handler
     app.headers = [('bar', 'baz')]
     rv = lambda_handler({'headers': {'a': 'b', 'foo-bar': 'baz'}},
                         self.context)
     self.assertEqual(app.environ['HTTP_A'], 'b')
     self.assertEqual(app.environ['HTTP_FOO_BAR'], 'baz')
     self.assertEqual(rv['headers'], {'bar': 'baz'})
Example #3
0
 def test_body_binary(self):
     from slam._handler import lambda_handler
     app.write = b'baz\x88'
     app.body = [b'foo\x99', b'\xaabar']
     rv = lambda_handler({'body': 'foo'}, self.context)
     self.assertEqual(app.environ['wsgi.input'].read(), b'foo')
     self.assertEqual(rv['body'], 'YmF6iGZvb5mqYmFy')
     self.assertTrue(rv['isBase64Encoded'])
Example #4
0
    def test_generator(self):
        def g():
            yield b'foo'
            yield b'bar'
            yield b'baz'

        from slam._handler import lambda_handler
        app.write = None
        app.body = g()
        rv = lambda_handler({}, self.context)
        self.assertEqual(rv['body'], b'foobarbaz')
Example #5
0
 def test_default_request(self):
     from slam._handler import lambda_handler
     rv = lambda_handler({}, self.context)
     self.assertEqual(app.environ['lambda.event'], {})
     self.assertEqual(app.environ['lambda.context'], self.context)
     self.assertEqual(app.environ['REQUEST_METHOD'], 'GET')
     self.assertEqual(app.environ['PATH_INFO'], '/')
     self.assertEqual(os.environ.get('STAGE'), 'dev')
     self.assertEqual(os.environ.get('FOO'), 'bar')
     self.assertEqual(os.environ.get('FOODEV'), 'bardev')
     self.assertEqual(os.environ.get('FOOPROD'), None)
     self.assertEqual(rv['statusCode'], 200)
Example #6
0
 def test_no_stage_request(self):
     from slam._handler import lambda_handler
     context = LambdaContext(
         function_version='foo-version',
         invoked_function_arn='arn:aws:lambda:us-east-1:123456:function:'
                              'foo-function')
     rv = lambda_handler({}, context)
     self.assertEqual(app.environ['lambda.event'], {})
     self.assertEqual(app.environ['lambda.context'], context)
     self.assertEqual(app.environ['REQUEST_METHOD'], 'GET')
     self.assertEqual(app.environ['PATH_INFO'], '/')
     self.assertEqual(os.environ.get('STAGE'), 'dev')
     self.assertEqual(os.environ.get('FOO'), 'bar')
     self.assertEqual(os.environ.get('FOODEV'), 'bardev')
     self.assertEqual(os.environ.get('FOOPROD'), None)
     self.assertEqual(rv['statusCode'], 200)
Example #7
0
 def test_request_method(self):
     from slam._handler import lambda_handler
     for method in ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD']:
         lambda_handler({'httpMethod': method}, self.context)
     self.assertEqual(app.environ['REQUEST_METHOD'], method)
Example #8
0
 def test_environment(self):
     from slam._handler import lambda_handler
     lambda_handler({'stageVariables': {'foo': 'bar'}}, self.context)
     self.assertEqual(os.environ['foo'], 'bar')
     self.assertEqual(os.environ['LAMBDA_VERSION'],
                      self.context.function_version)
Example #9
0
 def test_status_code(self):
     from slam._handler import lambda_handler
     app.status = '401 UNAUTHORIZED'
     rv = lambda_handler({}, self.context)
     self.assertEqual(rv['statusCode'], 401)
Example #10
0
 def test_query_string(self):
     from slam._handler import lambda_handler
     lambda_handler({'queryStringParameters': {
         'foo': 'bar', 'a?': 'b&'}}, self.context)
     self.assertTrue(app.environ['QUERY_STRING'] == 'a%3F=b%26&foo=bar' or
                     app.environ['QUERY_STRING'] == 'foo=bar&a%3F=b%26')
Example #11
0
 def test_path(self):
     from slam._handler import lambda_handler
     lambda_handler({'path': '/foo/bar'}, self.context)
     self.assertEqual(app.environ['PATH_INFO'], '/foo/bar')