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)
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')
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")
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"]