예제 #1
0
 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)
예제 #2
0
    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]
예제 #3
0
    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]
예제 #4
0
 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'
예제 #5
0
 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]
예제 #6
0
    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]
예제 #7
0
    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]
예제 #8
0
 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)
예제 #9
0
def test_can_instantiate_app_with_deps():
    role = models.PreCreatedIAMRole(role_arn='foo')
    app = models.Application(stage='dev', resources=[role])
    assert app.dependencies() == [role]
예제 #10
0
def test_can_instantiate_empty_application():
    app = models.Application(stage='dev', resources=[])
    assert app.dependencies() == []