def build(self, config, stage_name): # type: (Config, str) -> models.Application resources = [] # type: List[models.Model] deployment = models.DeploymentPackage(models.Placeholder.BUILD_STAGE) for function in config.chalice_app.pure_lambda_functions: resource = self._create_lambda_model( config=config, deployment=deployment, name=function.name, handler_name=function.handler_string, stage_name=stage_name) resources.append(resource) for event_source in config.chalice_app.event_sources: scheduled_event = self._create_event_model(config, deployment, event_source, stage_name) resources.append(scheduled_event) if config.chalice_app.routes: rest_api = self._create_rest_api_model(config, deployment, config.chalice_app, stage_name) resources.append(rest_api) for s3_event in config.chalice_app.s3_events: bucket_notification = self._create_bucket_notification( config, deployment, s3_event, stage_name) resources.append(bucket_notification) return models.Application(stage_name, resources)
def test_can_build_resource_with_single_dep(self): role = models.PreCreatedIAMRole(role_arn='foo') app = models.Application(stage='dev', resources=[role]) dep_builder = DependencyBuilder() deps = dep_builder.build_dependencies(app) assert deps == [role]
def test_no_duplicate_depedencies(self): leaf = LeafResource(name='leaf') second_parent = FooResource(name='second', leaf=leaf) first_parent = FooResource(name='first', leaf=[leaf, second_parent]) app = models.Application(stage='dev', resources=[first_parent]) dep_builder = DependencyBuilder() deps = dep_builder.build_dependencies(app) assert deps == [leaf, second_parent, first_parent]
def test_supports_precreated_role(self): builder = DependencyBuilder() resources = builder.build_dependencies( models.Application( stage='dev', resources=[self.lambda_function()], )) template = self.template_gen.generate_sam_template(resources) assert template['Resources']['Foo']['Properties']['Role'] == 'role:arn'
def test_is_first_element_in_list(self): shared_leaf = LeafResource(name='leaf-resource') first_parent = FooResource(name='first', leaf=shared_leaf) app = models.Application( stage='dev', resources=[first_parent, shared_leaf], ) dep_builder = DependencyBuilder() deps = dep_builder.build_dependencies(app) assert deps == [shared_leaf, first_parent]
def test_can_build_resource_with_dag_deps(self): shared_leaf = LeafResource(name='leaf-resource') first_parent = FooResource(name='first', leaf=shared_leaf) second_parent = FooResource(name='second', leaf=shared_leaf) app = models.Application(stage='dev', resources=[first_parent, second_parent]) dep_builder = DependencyBuilder() deps = dep_builder.build_dependencies(app) assert deps == [shared_leaf, first_parent, second_parent]
def test_can_compares_with_identity_not_equality(self): first_leaf = LeafResource(name='same-name') second_leaf = LeafResource(name='same-name') first_parent = FooResource(name='first', leaf=first_leaf) second_parent = FooResource(name='second', leaf=second_leaf) app = models.Application(stage='dev', resources=[first_parent, second_parent]) dep_builder = DependencyBuilder() deps = dep_builder.build_dependencies(app) assert deps == [first_leaf, first_parent, second_leaf, second_parent]
def build(self, config, stage_name): # type: (Config, str) -> models.Application resources = [] # type: List[models.Model] deployment = models.DeploymentPackage(models.Placeholder.BUILD_STAGE) for function in config.chalice_app.pure_lambda_functions: resource = self._create_lambda_model( config=config, deployment=deployment, name=function.name, handler_name=function.handler_string, stage_name=stage_name) resources.append(resource) event_resources = self._create_lambda_event_resources( config, deployment, stage_name) resources.extend(event_resources) if config.chalice_app.routes: rest_api = self._create_rest_api_model( config, deployment, stage_name) resources.append(rest_api) return models.Application(stage_name, resources)
def test_can_instantiate_app_with_deps(): role = models.PreCreatedIAMRole(role_arn='foo') app = models.Application(stage='dev', resources=[role]) assert app.dependencies() == [role]
def test_can_instantiate_empty_application(): app = models.Application(stage='dev', resources=[]) assert app.dependencies() == []