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 )
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) )
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 )
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 )
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 )
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()
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 )
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 )
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 )
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) )
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 )
def test_init__non_interactive_mode( self, get_platform_name_and_version_mock, setup_mock, set_region_mock, set_up_credentials_mock, get_region_from_inputs_mock, touch_config_folder_mock, write_keyname_mock, set_workspace_to_latest_mock ): get_region_from_inputs_mock.return_value = 'us-west-2' get_platform_name_and_version_mock.return_value = ('my-custom-platform', None) set_up_credentials_mock.return_value = 'us-west-2' app = EB(argv=['platform', 'init', 'my-custom-platform']) app.setup() app.run() set_region_mock.assert_has_calls([mock.call(None), mock.call('us-west-2')]) set_up_credentials_mock.assert_called_once_with(None, 'us-west-2', False) setup_mock.assert_called_once_with( 'Custom Platform Builder', 'us-west-2', None, platform_name='my-custom-platform', platform_version=None, workspace_type='Platform' ) touch_config_folder_mock.assert_called_once_with() write_keyname_mock.assert_called_once_with(None) set_workspace_to_latest_mock.assert_called_once_with()
def test_init__force_interactive_mode_by_passing_interactive_argument_and_omitting_platform_argument( self, get_keyname_mock, get_platform_name_and_version_mock, setup_mock, set_region_mock, set_up_credentials_mock, get_region_mock, touch_config_folder_mock, write_keyname_mock, set_workspace_to_latest_mock ): get_region_mock.return_value = 'us-west-2' get_platform_name_and_version_mock.return_value = ('my-custom-platform', '1.0.3') set_up_credentials_mock.return_value = 'us-west-2' get_keyname_mock.return_value = 'keyname' app = EB(argv=['platform', 'init', '-i']) app.setup() app.run() set_region_mock.assert_has_calls([mock.call(None), mock.call('us-west-2')]) set_up_credentials_mock.assert_called_once_with(None, 'us-west-2', True) setup_mock.assert_called_once_with( 'Custom Platform Builder', 'us-west-2', None, platform_name='my-custom-platform', platform_version='1.0.3', workspace_type='Platform' ) get_region_mock.assert_called_once_with(None, True) touch_config_folder_mock.assert_called_once_with() write_keyname_mock.assert_called_once_with('keyname') set_workspace_to_latest_mock.assert_not_called()
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_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)
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)
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 )
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_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()
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()
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)
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 )
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_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_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()
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_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_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')
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)
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()