Пример #1
0
    def test_invoke_lambda_function(self, session):
        z = Zappa(session)
        z.credentials_arn = 'arn:aws:iam::724336686645:role/ZappaLambdaExecution'

        function_name = 'django-helloworld-unicode'
        payload = '{"event": "hello"}'
        response = z.invoke_lambda_function(function_name, payload)
Пример #2
0
    def test_invoke_lambda_function(self, session):
        z = Zappa(session)
        z.credentials_arn = 'arn:aws:iam::724336686645:role/ZappaLambdaExecution'

        function_name = 'django-helloworld-unicode'
        payload = '{"event": "hello"}'
        response = z.invoke_lambda_function(function_name, payload)
Пример #3
0
    def test_rollback_lambda_function_version(self, session):
        z = Zappa(session)
        z.credentials_arn = 'arn:aws:iam::724336686645:role/ZappaLambdaExecution'

        function_name = 'django-helloworld-unicode'
        too_many_versions = z.rollback_lambda_function_version(function_name, 99999)
        self.assertFalse(too_many_versions)

        function_arn = z.rollback_lambda_function_version(function_name, 1)
Пример #4
0
    def test_rollback_lambda_function_version(self, session):
        z = Zappa(session)
        z.credentials_arn = 'arn:aws:iam::724336686645:role/ZappaLambdaExecution'

        function_name = 'django-helloworld-unicode'
        too_many_versions = z.rollback_lambda_function_version(function_name, 99999)
        self.assertFalse(too_many_versions)

        function_arn = z.rollback_lambda_function_version(function_name, 1)
Пример #5
0
 def test_create_api_gateway_routes(self, session):
     z = Zappa(session)
     z.parameter_depth = 1
     z.integration_response_codes = [200]
     z.method_response_codes = [200]
     z.http_methods = ['GET']
     z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'
     lambda_arn = 'arn:aws:lambda:us-east-1:12345:function:helloworld'
     z.create_api_gateway_routes(lambda_arn)
Пример #6
0
 def test_create_api_gateway_routes(self, session):
     z = Zappa(session)
     z.parameter_depth = 1
     z.integration_response_codes = [200]
     z.method_response_codes = [200]
     z.http_methods = ['GET']
     z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'
     lambda_arn = 'arn:aws:lambda:us-east-1:12345:function:helloworld'
     with mock.patch('time.time', return_value=123.456):
         api_id = z.create_api_gateway_routes(lambda_arn)
     self.assertEqual(api_id, 'j27idab94h')
Пример #7
0
 def test_create_api_gateway_routes(self, session):
     z = Zappa(session)
     z.parameter_depth = 1
     z.integration_response_codes = [200]
     z.method_response_codes = [200]
     z.http_methods = ['GET']
     z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'
     lambda_arn = 'arn:aws:lambda:us-east-1:12345:function:helloworld'
     with mock.patch('time.time', return_value=123.456):
         api_id = z.create_api_gateway_routes(lambda_arn)
     self.assertEqual(api_id, 'j27idab94h')
Пример #8
0
    def test_deploy_api_gateway(self, session):
        z = Zappa(session)
        z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'

        z.parameter_depth = 1
        z.integration_response_codes = [200]
        z.method_response_codes = [200]
        z.http_methods = ['GET']

        lambda_arn = 'arn:aws:lambda:us-east-1:12345:function:django-helloworld-unicode'
        api_id = z.create_api_gateway_routes(lambda_arn)
        endpoint_url = z.deploy_api_gateway(api_id, "test_stage")
Пример #9
0
    def test_deploy_api_gateway(self, session):
        z = Zappa(session)
        z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'

        z.parameter_depth = 1
        z.integration_response_codes = [200]
        z.method_response_codes = [200]
        z.http_methods = ['GET']

        lambda_arn = 'arn:aws:lambda:us-east-1:12345:function:django-helloworld-unicode'
        api_id = z.create_api_gateway_routes(lambda_arn)
        endpoint_url = z.deploy_api_gateway(api_id, "test_stage")
Пример #10
0
    def test_create_lambda_function(self, session):
        bucket_name = 'lmbda'
        zip_path = 'Spheres-dev-1454694878.zip'

        z = Zappa(session)
        z.aws_region = 'us-east-1'
        z.load_credentials(session)
        z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'

        arn = z.create_lambda_function(bucket=bucket_name,
                                       s3_key=zip_path,
                                       function_name='test_lmbda_function55',
                                       handler='runme.lambda_handler')

        arn = z.update_lambda_function(
            bucket=bucket_name,
            s3_key=zip_path,
            function_name='test_lmbda_function55',
        )
Пример #11
0
    def test_create_lambda_function(self, session):
        bucket_name = 'lmbda'
        zip_path = 'Spheres-dev-1454694878.zip'

        z = Zappa(session)
        z.aws_region = 'us-east-1'
        z.load_credentials(session)
        z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'

        arn = z.create_lambda_function(
            bucket=bucket_name, 
            s3_key=zip_path, 
            function_name='test_lmbda_function55', 
            handler='runme.lambda_handler'
        )

        arn = z.update_lambda_function(
            bucket=bucket_name, 
            s3_key=zip_path, 
            function_name='test_lmbda_function55', 
        )
Пример #12
0
 def test_fetch_logs(self, session):
     z = Zappa(session)
     z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'
     events = z.fetch_logs('Spheres-demonstration')
     self.assertTrue(events is not None)
Пример #13
0
 def test_get_api_url(self, session):
     z = Zappa(session)
     z.credentials_arn = 'arn:aws:iam::724336686645:role/ZappaLambdaExecution'
     url = z.get_api_url('Spheres-demonstration')
Пример #14
0
 def test_fetch_logs(self, session):
     z = Zappa(session)
     z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'
     events = z.fetch_logs('Spheres-demonstration')
     self.assertTrue(events is not None)
Пример #15
0
 def test_get_api_url(self, session):
     z = Zappa(session)
     z.credentials_arn = 'arn:aws:iam::724336686645:role/ZappaLambdaExecution'
     url = z.get_api_url('Spheres-demonstration', 'demonstration')
Пример #16
0
    def test_create_api_gateway_routes_with_different_auth_methods(self):
        z = Zappa()
        z.parameter_depth = 1
        z.integration_response_codes = [200]
        z.method_response_codes = [200]
        z.http_methods = ['GET']
        z.credentials_arn = 'arn:aws:iam::12345:role/ZappaLambdaExecution'
        lambda_arn = 'arn:aws:lambda:us-east-1:12345:function:helloworld'

        # No auth at all
        z.create_stack_template(lambda_arn, 'helloworld', False, {}, False,
                                None)
        parsable_template = json.loads(z.cf_template.to_json())
        self.assertEqual(
            "NONE", parsable_template["Resources"]["GET0"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "NONE", parsable_template["Resources"]["GET1"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            False, parsable_template["Resources"]["GET0"]["Properties"]
            ["ApiKeyRequired"])
        self.assertEqual(
            False, parsable_template["Resources"]["GET1"]["Properties"]
            ["ApiKeyRequired"])

        # IAM auth
        z.create_stack_template(lambda_arn, 'helloworld', False, {}, True,
                                None)
        parsable_template = json.loads(z.cf_template.to_json())
        self.assertEqual(
            "AWS_IAM", parsable_template["Resources"]["GET0"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "AWS_IAM", parsable_template["Resources"]["GET1"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            False, parsable_template["Resources"]["GET0"]["Properties"]
            ["ApiKeyRequired"])
        self.assertEqual(
            False, parsable_template["Resources"]["GET1"]["Properties"]
            ["ApiKeyRequired"])

        # API Key auth
        z.create_stack_template(lambda_arn, 'helloworld', True, {}, True, None)
        parsable_template = json.loads(z.cf_template.to_json())
        self.assertEqual(
            "AWS_IAM", parsable_template["Resources"]["GET0"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "AWS_IAM", parsable_template["Resources"]["GET1"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            True, parsable_template["Resources"]["GET0"]["Properties"]
            ["ApiKeyRequired"])
        self.assertEqual(
            True, parsable_template["Resources"]["GET1"]["Properties"]
            ["ApiKeyRequired"])

        # Authorizer and IAM
        authorizer = {
            "function":
            "runapi.authorization.gateway_authorizer.evaluate_token",
            "result_ttl": 300,
            "token_header": "Authorization",
            "validation_expression": "xxx"
        }
        z.create_stack_template(lambda_arn, 'helloworld', False, {}, True,
                                authorizer)
        parsable_template = json.loads(z.cf_template.to_json())
        self.assertEqual(
            "AWS_IAM", parsable_template["Resources"]["GET0"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "AWS_IAM", parsable_template["Resources"]["GET1"]["Properties"]
            ["AuthorizationType"])
        with self.assertRaises(KeyError):
            parsable_template["Resources"]["Authorizer"]

        # Authorizer with validation expression
        invocations_uri = 'arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/' + lambda_arn + '/invocations'
        z.create_stack_template(lambda_arn, 'helloworld', False, {}, False,
                                authorizer)
        parsable_template = json.loads(z.cf_template.to_json())
        self.assertEqual(
            "CUSTOM", parsable_template["Resources"]["GET0"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "CUSTOM", parsable_template["Resources"]["GET1"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "TOKEN",
            parsable_template["Resources"]["Authorizer"]["Properties"]["Type"])
        self.assertEqual(
            "ZappaAuthorizer",
            parsable_template["Resources"]["Authorizer"]["Properties"]["Name"])
        self.assertEqual(
            300, parsable_template["Resources"]["Authorizer"]["Properties"]
            ["AuthorizerResultTtlInSeconds"])
        self.assertEqual(
            invocations_uri, parsable_template["Resources"]["Authorizer"]
            ["Properties"]["AuthorizerUri"])
        self.assertEqual(
            z.credentials_arn, parsable_template["Resources"]["Authorizer"]
            ["Properties"]["AuthorizerCredentials"])
        self.assertEqual(
            "xxx", parsable_template["Resources"]["Authorizer"]["Properties"]
            ["IdentityValidationExpression"])

        # Authorizer without validation expression
        authorizer.pop('validation_expression', None)
        z.create_stack_template(lambda_arn, 'helloworld', False, {}, False,
                                authorizer)
        parsable_template = json.loads(z.cf_template.to_json())
        self.assertEqual(
            "CUSTOM", parsable_template["Resources"]["GET0"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "CUSTOM", parsable_template["Resources"]["GET1"]["Properties"]
            ["AuthorizationType"])
        self.assertEqual(
            "TOKEN",
            parsable_template["Resources"]["Authorizer"]["Properties"]["Type"])
        with self.assertRaises(KeyError):
            parsable_template["Resources"]["Authorizer"]["Properties"][
                "IdentityValidationExpression"]