Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def create_rest_api_model(self):
rest_api = models.RestAPI(
resource_name='rest_api',
swagger_doc={'swagger': '2.0'},
minimum_compression='',
endpoint_type='EDGE',
api_gateway_stage='api',
lambda_function=None,
)
return rest_api
def test_can_update_rest_api(self):
function = create_function_resource('function_name')
rest_api = models.RestAPI(
resource_name='rest_api',
swagger_doc={'swagger': '2.0'},
minimum_compression='',
api_gateway_stage='api',
endpoint_type='REGIONAL',
lambda_function=function,
)
self.remote_state.declare_resource_exists(rest_api)
self.remote_state.deployed_values['rest_api'] = {
'rest_api_id': 'my_rest_api_id',
}
plan = self.determine_plan(rest_api)
self.assert_loads_needed_variables(plan)
assert plan[4:] == [
models.StoreValue(name='rest_api_id', value='my_rest_api_id'),
def test_can_custom_resource_policy(sample_app, swagger_gen):
rest_api = RestAPI(
resource_name='dev',
swagger_doc={},
lambda_function=None,
minimum_compression="",
api_gateway_stage="xyz",
endpoint_type="PRIVATE",
policy=IAMPolicy({
'Statement': [{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:*:*:*",
"arn:aws:exceute-api:*:*:*/*"
],
"Condition": {
def test_can_default_to_no_auths_in_rest_api(lambda_function):
rest_api = models.RestAPI(
resource_name='rest_api',
swagger_doc={'swagger': '2.0'},
minimum_compression='',
api_gateway_stage='api',
endpoint_type='EDGE',
lambda_function=lambda_function,
)
assert rest_api.dependencies() == [lambda_function]
def test_can_generate_swagger_builder(self):
generator = mock.Mock(spec=SwaggerGenerator)
generator.generate_swagger.return_value = {'swagger': '2.0'}
rest_api = models.RestAPI(
resource_name='foo',
swagger_doc=models.Placeholder.BUILD_STAGE,
minimum_compression='',
endpoint_type='EDGE',
api_gateway_stage='api',
lambda_function=None,
)
app = Chalice(app_name='foo')
config = Config.create(chalice_app=app)
p = SwaggerBuilder(generator)
p.handle(config, rest_api)
assert rest_api.swagger_doc == {'swagger': '2.0'}
generator.generate_swagger.assert_called_with(app, rest_api)
def test_can_update_rest_api_with_policy(self):
function = create_function_resource('function_name')
rest_api = models.RestAPI(
resource_name='rest_api',
swagger_doc={'swagger': '2.0'},
minimum_compression='',
api_gateway_stage='api',
endpoint_type='EDGE',
policy="{'Statement': []}",
lambda_function=function,
)
self.remote_state.declare_resource_exists(rest_api)
self.remote_state.deployed_values['rest_api'] = {
'rest_api_id': 'my_rest_api_id',
}
plan = self.determine_plan(rest_api)
assert plan[8].params == {
'patch_operations': [
handler_name=auth.handler_string, stage_name=stage_name,
)
authorizers.append(auth_lambda)
policy = None
policy_path = config.api_gateway_policy_file
if (config.api_gateway_endpoint_type == 'PRIVATE' and not policy_path):
policy = models.IAMPolicy(
document=self._get_default_private_api_policy(config))
elif policy_path:
policy = models.FileBasedIAMPolicy(
document=models.Placeholder.BUILD_STAGE,
filename=os.path.join(
config.project_dir, '.chalice', policy_path))
return models.RestAPI(
resource_name='rest_api',
swagger_doc=models.Placeholder.BUILD_STAGE,
endpoint_type=config.api_gateway_endpoint_type,
minimum_compression=minimum_compression,
api_gateway_stage=config.api_gateway_stage,
lambda_function=lambda_function,
authorizers=authorizers,
policy=policy
)
handler_name='app.app', stage_name=stage_name
)
# For backwards compatibility with the old deployer, the
# lambda function for the API handler doesn't have the
# resource_name appended to its complete function_name,
# it's just -.
function_name = '%s-%s' % (config.app_name, config.chalice_stage)
lambda_function.function_name = function_name
authorizers = []
for auth in config.chalice_app.builtin_auth_handlers:
auth_lambda = self._create_lambda_model(
config=config, deployment=deployment, name=auth.name,
handler_name=auth.handler_string, stage_name=stage_name,
)
authorizers.append(auth_lambda)
return models.RestAPI(
resource_name='rest_api',
swagger_doc=models.Placeholder.BUILD_STAGE,
api_gateway_stage=config.api_gateway_stage,
lambda_function=lambda_function,
authorizers=authorizers,
)