Exemple #1
0
    def test_list__application_workspace__non_verbose_mode(
            self,
            echo_mock,
            list_custom_platform_versions_mock,
            get_all_solution_stacks_mock
    ):
        self.setup_application_workspace()

        get_all_solution_stacks_mock.return_value = [
            SolutionStack('64bit Amazon Linux 2017.09 v4.4.0 running Node.js'),
            SolutionStack('64bit Amazon Linux 2017.09 v2.6.0 running PHP 5.4')

        ]
        list_custom_platform_versions_mock.return_value = [
            'arn:aws:elasticbeanstalk:us-west-2:123123123:platform/custom-platform-4/1.0.3',
            'arn:aws:elasticbeanstalk:us-west-2:123123123:platform/custom-platform-5/1.3.6'
        ]

        app = EB(argv=['platform', 'list'])
        app.setup()
        app.run()

        echo_mock.assert_called_once_with(
            'node.js', 'php-5.4', 'custom-platform-4', 'custom-platform-5', sep='{linesep}'.format(linesep=os.linesep)
        )
Exemple #2
0
    def test_deploy__specify_codecommit_source(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock,
            _check_env_lifecycle_state_mock,
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(
            argv=[
                'deploy',
                '--source', 'codecommit/my-repository/my-branch'
            ]
        )
        app.setup()
        app.run()

        _check_env_lifecycle_state_mock.assert_called_once_with('environment-1')
        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            None,
            None,
            group_name=None,
            process_app_versions=False,
            source='codecommit/my-repository/my-branch',
            staged=False,
            timeout=None
        )
Exemple #3
0
    def test_delete__single_platform_version(self,
                                             delete_platform_version_mock):
        app = EB(argv=['platform', 'delete', '1.1.1', '--force'])
        app.setup()
        app.run()

        delete_platform_version_mock.assert_called_once_with('1.1.1', True)
Exemple #4
0
    def test_create__create_with_tags(self, create_platform_version_mock,
                                      get_instance_profile_mock):
        get_instance_profile_mock.return_value = 'my-instance-profile'

        app = EB(argv=['platform', 'create', '--tags', 'a=1, b=2'])
        app.setup()
        app.run()

        create_platform_version_mock.assert_called_once_with(
            None,
            False,
            False,
            False,
            None, {
                'id': None,
                'subnets': None,
                'publicip': False
            },
            tags=[{
                'Key': 'a',
                'Value': '1'
            }, {
                'Key': 'b',
                'Value': '2'
            }],
            timeout=None)
Exemple #5
0
    def test_deploy(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(argv=['deploy'])
        app.setup()
        app.run()

        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            None,
            None,
            group_name=None,
            process_app_versions=False,
            source=None,
            staged=False,
            timeout=None
        )
Exemple #6
0
    def test_list__platform_workspace__filter_by_status(
            self,
            echo_mock,
            list_custom_platform_versions_mock,
            get_platform_name_mock
    ):
        self.setup_platform_workspace()

        list_custom_platform_versions_mock.return_value = [
            'arn:aws:elasticbeanstalk:us-west-2:123123123:platform/custom-platform-4/1.0.3',
            'arn:aws:elasticbeanstalk:us-west-2:123123123:platform/custom-platform-4/1.3.6'
        ]

        app = EB(argv=['platform', 'list', '-a', '-s', 'READY'])
        app.setup()
        app.run()

        get_platform_name_mock.assert_not_called()
        list_custom_platform_versions_mock.assert_called_once_with(
            platform_name=None,
            show_status=True,
            status='READY'
        )
        echo_mock.assert_called_once_with(
            'arn:aws:elasticbeanstalk:us-west-2:123123123:platform/custom-platform-4/1.0.3',
            'arn:aws:elasticbeanstalk:us-west-2:123123123:platform/custom-platform-4/1.3.6',
            sep='{linesep}'.format(linesep=os.linesep)
        )
Exemple #7
0
    def test_deploy__specify_codecommit_source_with_forward_slash_in_branch_name(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(
            argv=[
                'deploy',
                '--source', 'codecommit/my-repository/my-branch/feature'
            ]
        )
        app.setup()
        app.run()

        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            None,
            None,
            group_name=None,
            process_app_versions=False,
            source='codecommit/my-repository/my-branch/feature',
            staged=False,
            timeout=None
        )
Exemple #8
0
    def test_deploy__indicate_staged_changes_must_be_used(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(
            argv=[
                'deploy',
                '--process',
                '--staged'
            ]
        )
        app.setup()
        app.run()

        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            None,
            None,
            group_name=None,
            process_app_versions=True,
            source=None,
            staged=True,
            timeout=None
        )
Exemple #9
0
    def test_deploy__process_app_version_because_env_yaml_exists(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock
    ):
        open('env.yaml', 'w').close()
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(
            argv=[
                'deploy',
                '--label', 'my-label',
                '--message', 'This is my message'
            ]
        )
        app.setup()
        app.run()

        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            'my-label',
            'This is my message',
            group_name=None,
            process_app_versions=True,
            source=None,
            staged=False,
            timeout=None
        )
Exemple #10
0
    def test_deploy__process_app_version_because_process_flag_is_specified(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(
            argv=[
                'deploy',
                '--label', 'my-label',
                '--message', 'This is my message',
                '--process'
            ]
        )
        app.setup()
        app.run()

        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            'my-label',
            'This is my message',
            group_name=None,
            process_app_versions=True,
            source=None,
            staged=False,
            timeout=None
        )
Exemple #11
0
    def test_delete__all_failed_versions__force(
            self, validate_action_mock, delete_platform_version_mock,
            list_custom_platform_versions_mock):
        list_custom_platform_versions_mock.return_value = [
            'arn:aws:elasticbeanstalk:us-west-2:123123123123:platform/ibnlempnsr-custom-platform/1.0.1',
            'arn:aws:elasticbeanstalk:us-west-2:123123123123:platform/ibnlempnsr-custom-platform/1.0.0'
        ]
        validate_action_mock.side_effect = None

        app = EB(argv=[
            'platform', 'delete', '--cleanup', '--all-platforms', '--force'
        ])
        app.setup()
        app.run()

        self.assertEqual(2, delete_platform_version_mock.call_count)
        validate_action_mock.assert_not_called()
        delete_platform_version_mock.assert_has_calls([
            mock.call(
                'arn:aws:elasticbeanstalk:us-west-2:123123123123:platform/ibnlempnsr-custom-platform/1.0.0',
                force=True),
            mock.call(
                'arn:aws:elasticbeanstalk:us-west-2:123123123123:platform/ibnlempnsr-custom-platform/1.0.1',
                force=True)
        ])
    def test_logs__platform_workspace__stream_logs__unable_to_find_cloudwatch_logs(
            self, PackerStreamFormatter_mock, paginate_cloudwatch_logs_mock,
            stream_platform_logs_mock, get_platform_version_mock,
            get_platform_name_mock):
        self.setup_platform_workspace()

        streamer_formatter_mock = mock.MagicMock()
        PackerStreamFormatter_mock.return_value = streamer_formatter_mock
        get_platform_name_mock.return_value = 'custom-platform-4'
        stream_platform_logs_mock.side_effect = logs.NotFoundError

        with self.assertRaises(logs.NotFoundError) as context_manager:
            app = EB(argv=['platform', 'logs', '1.0.3', '--stream'])
            app.setup()
            app.run()

        self.assertEqual('Unable to find logs in CloudWatch.',
                         str(context_manager.exception))
        paginate_cloudwatch_logs_mock.assert_not_called()
        stream_platform_logs_mock.assert_called_once_with(
            'custom-platform-4',
            '1.0.3',
            formatter=streamer_formatter_mock,
            log_name='custom-platform-4/1.0.3')
        get_platform_version_mock.assert_not_called()
Exemple #13
0
    def test_deploy__pass_group_name(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock,
            _check_env_lifecycle_state_mock,
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(
            argv=[
                'deploy',
                '--env-group-suffix', 'group-name',
            ]
        )
        app.setup()
        app.run()

        _check_env_lifecycle_state_mock.assert_called_once_with('environment-1')
        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            None,
            None,
            group_name='group-name',
            process_app_versions=False,
            source=None,
            staged=False,
            timeout=None
        )
Exemple #14
0
    def test_deploy__with_label_and_message(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock,
            _check_env_lifecycle_state_mock,
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(
            argv=[
                'deploy',
                '--label', 'my-label',
                '--message', 'This is my message'
            ]
        )
        app.setup()
        app.run()

        _check_env_lifecycle_state_mock.assert_called_once_with('environment-1')
        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            'my-label',
            'This is my message',
            group_name=None,
            process_app_versions=False,
            source=None,
            staged=False,
            timeout=None
        )
Exemple #15
0
    def test_deploy__nohang_sets_timeout_to_zero(
            self,
            deploy_mock,
            get_env_name_mock,
            get_app_name_mock,
            _check_env_lifecycle_state_mock,
    ):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(argv=['deploy', '--nohang', '--timeout', '5'])
        app.setup()
        app.run()

        _check_env_lifecycle_state_mock.assert_called_once_with('environment-1')
        deploy_mock.assert_called_with(
            'my-application',
            'environment-1',
            None,
            None,
            None,
            group_name=None,
            process_app_versions=False,
            source=None,
            staged=False,
            timeout=0
        )
Exemple #16
0
    def test_list__all__verbose(self, list_env_names_mock, get_app_name_mock):
        get_app_name_mock.return_value = 'my-application'

        app = EB(argv=['list', '--all', '--verbose'])
        app.setup()
        app.run()

        list_env_names_mock.assert_called_with(None, True, True)
Exemple #17
0
    def test_list(self, list_env_names_mock, get_app_name_mock):
        get_app_name_mock.return_value = 'my-application'

        app = EB(argv=['list'])
        app.setup()
        app.run()

        list_env_names_mock.assert_called_with('my-application', False, False)
    def test_list__neutral_workspace__all_platforms_and_status_filters_are_not_applicable(
            self):
        self.setup_platform_workspace()
        fileoperations.write_config_setting('global', 'workspace_type', None)

        app = EB(argv=['platform', 'list', '-a', '-s', 'READY'])
        app.setup()
        app.run()
Exemple #19
0
    def test_failure_to_download_config_from_s3(self, delete_config_mock,
                                                get_app_name_mock):
        delete_config_mock.side_effect = None
        get_app_name_mock.return_value = 'my-application'

        app = EB(argv=['config', 'delete', 'my-cfg-name.config'])
        app.setup()
        app.run()
Exemple #20
0
    def test_clone__prompt_for_choice_between_current_and_latest_platform_arn_in_interactive_mode(
            self,
            prompt_for_item_in_list_mock,
            find_solution_stack_from_string_mock,
            is_cname_available_mock,
            get_app_name_mock,
            get_env_name_mock,
            make_cloned_env_mock,
            clone_environment_request_mock,
            prompt_for_environment_name_mock,
            get_environment_names_mock,
            get_environment_mock
    ):
        is_cname_available_mock.return_value = True
        find_solution_stack_from_string_mock.return_value = PlatformVersion(
            'arn:aws:elasticbeanstalk:us-west-2::platform/PHP 7.2 running on 64bit Amazon Linux/2.6.5'
        )
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'
        prompt_for_environment_name_mock.return_value = 'environment-1-clone'
        get_environment_names_mock.return_value = Environment.json_to_environment_objects_array(
            mock_responses.DESCRIBE_ENVIRONMENTS_RESPONSE['Environments']
        )
        get_environment_mock.return_value = environment_from_mock_responses('environment-1')
        prompt_for_item_in_list_mock.return_value = 'Latest  (arn:aws:elasticbeanstalk:us-west-2::platform/PHP 7.2 running on 64bit Amazon Linux/2.6.5)'
        clone_environment_request_mock.return_value = mock.MagicMock()
        clone_environment_request = clone_environment_request_mock.return_value

        app = EB(argv=['clone', '--cname', 'some-cname'])
        app.setup()
        app.run()

        prompt_for_environment_name_mock.assert_called_once_with(
            default_name='my-application-clone',
            prompt_text='Enter name for Environment Clone'
        )
        prompt_for_item_in_list_mock.assert_called_once_with(
            [
                'Latest  (arn:aws:elasticbeanstalk:us-west-2::platform/PHP 7.2 running on 64bit Amazon Linux/2.6.5)',
                'Same    (arn:aws:elasticbeanstalk:us-west-2::platform/PHP 7.1 running on 64bit Amazon Linux/2.6.5)'
            ]
        )
        clone_environment_request_mock.assert_called_once_with(
            app_name='environment-1',
            cname='some-cname',
            env_name='environment-1-clone',
            original_name='my-application',
            platform=PlatformVersion(
                'arn:aws:elasticbeanstalk:us-west-2::platform/PHP 7.2 running on 64bit Amazon Linux/2.6.5'
            ),
            scale=None,
            tags=[]
        )
        make_cloned_env_mock.assert_called_once_with(
            clone_environment_request,
            nohang=False,
            timeout=None
        )
Exemple #21
0
    def test_local_run(self, setenv_mock):
        app = EB(argv=[
            'local', 'setenv', 'ENV_URL="www.localhost.com",HOME=/home/ubuntu/'
        ])
        app.setup()
        app.run()

        setenv_mock.assert_called_once_with(
            ['ENV_URL="www.localhost.com",HOME=/home/ubuntu/'])
    def test_delete__version_not_specified(
            self,
            delete_platform_version_mock
    ):
        app = EB(argv=['platform', 'delete', '--force'])
        app.setup()
        app.run()

        delete_platform_version_mock.assert_not_called()
    def test_health(self, get_app_name_mock, get_env_name_mock, open_app_mock):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(argv=['open'])
        app.setup()
        app.run()

        open_app_mock.assert_called_once_with('my-application',
                                              'environment-1')
    def test_tags__command_fails_when_branch_has_no_default_environment(
        self,
        get_env_name_mock,
    ):
        get_env_name_mock.side_effect = NoEnvironmentForBranchError

        app = EB(argv=['tags', '--list'])
        app.setup()
        with self.assertRaises(NoEnvironmentForBranchError):
            app.run()
    def test_tags_command_fails_when_list_appears_with_add_delete_or_update(
        self,
        get_env_name_mock,
    ):
        get_env_name_mock.return_value = 'my_env'
        app = EB(argv=['tags', 'my_env', '--add', 'key1=value1', '--list'])
        app.setup()

        with self.assertRaises(InvalidOptionsError):
            app.run()
Exemple #26
0
    def test_download_config_from_s3(self, log_error_mock,
                                     download_config_from_s3_mock,
                                     get_app_name_mock):
        download_config_from_s3_mock.side_effect = None
        get_app_name_mock.return_value = 'my-application'

        app = EB(argv=['config', 'get', 'my-cfg-name.config'])
        app.setup()
        app.run()

        log_error_mock.assert_not_called()
Exemple #27
0
    def test_local_run__with_arguments(self, make_container_mock):
        app = EB(argv=[
            'local', 'run', '--envvars', 'ENV_URL="www.localhost.com"',
            '--port', '5000', '--allow-insecure-ssl'
        ])

        app.setup()
        app.run()

        make_container_mock.assert_called_once_with(
            'ENV_URL="www.localhost.com"', 5000, True)
Exemple #28
0
    def test_events__follow(self, print_events_mock, get_env_name_mock,
                            get_app_name_mock):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(argv=['events', '-f'])
        app.setup()
        app.run()

        print_events_mock.assert_called_once_with('my-application',
                                                  'environment-1', True)
Exemple #29
0
    def test_health__set_view_type(self, display_interactive_health_mock,
                                   get_env_name_mock, get_app_name_mock):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(argv=['health', '--view', 'request'])
        app.setup()
        app.run()

        display_interactive_health_mock.assert_called_once_with(
            'my-application', 'environment-1', False, False, 'request')
Exemple #30
0
    def test_health__should_refresh(self, display_interactive_health_mock,
                                    get_env_name_mock, get_app_name_mock):
        get_app_name_mock.return_value = 'my-application'
        get_env_name_mock.return_value = 'environment-1'

        app = EB(argv=['health', '--refresh'])
        app.setup()
        app.run()

        display_interactive_health_mock.assert_called_once_with(
            'my-application', 'environment-1', True, False, 'split')