Пример #1
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)
Пример #2
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')
Пример #3
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')
Пример #4
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")
Пример #5
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")
Пример #6
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"]