def test_setup_non_existing_default_public_key(self, _get_user_config, _is_key_valid, _set_user_config, _create_default_ssh): user = UserController(Mock(), Settings()) user.api.read_users.return_value = [{'username': '******'}] args = Mock(email='*****@*****.**', ssh_key_path='/default/path/to/key', ssh_auth='yes') _is_key_valid.return_value = False _get_user_config.return_value = {} user.setup(args) self.assertTrue(user.api.read_users.called) self.assertTrue(user.api.create_user_key.called) self.assertTrue(_create_default_ssh.called) self.assertEqual(2, len(_set_user_config.mock_calls)) self.assertEqual(call(user.settings, email='*****@*****.**'), _set_user_config.mock_calls[0]) self.assertEqual( call(user.settings, ssh_auth=True, ssh_path='/default/path/to/key'), _set_user_config.mock_calls[1])
def test_add_config_force_arg(self, parse_config_variables): app = AppController(None, Settings()) app.api = Mock() args = Mock() args.name = 'app/dep' args.force_add = False args.variables = ['foo=bar', '--force'] app.addConfig(args) self.assertTrue(parse_config_variables.called) self.assertTrue(app.api.update_addon.called)
def test_add_config_duplicated_flag(self, parse_config_variables): app = AppController(None, Settings()) app.api = Mock() args = Mock() args.name = 'app/dep' args.force_add = True args.variables = ['foo=bar', '-f'] with self.assertRaises(InputErrorException) as df: app.addConfig(args) self.assertEqual('[ERROR] Please, specify a flag only once.', str(df.exception)) self.assertFalse(parse_config_variables.called) self.assertFalse(app.api.update_addon.called)
def test_add_config_no_variables_given(self, parse_config_variables): app = AppController(None, Settings()) app.api = Mock() args = Mock() args.name = 'app/dep' args.force_add = False args.variables = None with self.assertRaises(InputErrorException) as nvg: app.addConfig(args) self.assertEqual('[ERROR] You must provide some variables.', str(nvg.exception)) self.assertFalse(parse_config_variables.called) self.assertFalse(app.api.update_addon.called)
def test_setup_wrong_public_key(self, _is_key_valid, *args): user = UserController(Mock(), Settings()) args = Mock(email='*****@*****.**', ssh_key_path='not-existing', ssh_auth='yes') _is_key_valid.return_value = False with self.assertRaises(InputErrorException) as iep: user.setup(args) self.assertEqual('[ERROR] Public Key not found or invalid.', str(iep.exception)) self.assertFalse(user.api.read_users.called) self.assertFalse(user.api.create_user_key.called)
def test_setup_no_args_provided(self, _get_user_config, _is_key_valid, _set_user_config, *args): user = UserController(Mock(), Settings()) user.api.read_users.return_value = [{'username': '******'}] args = Mock(email=None, ssh_key_path=None, ssh_auth='yes') _get_user_config.return_value = {} _is_key_valid.return_value = True user.setup(args) self.assertTrue(user.api.read_users.called) self.assertTrue(user.api.create_user_key.called) self.assertEqual(1, len(_set_user_config.mock_calls)) _set_user_config.assert_called_once_with( user.settings, ssh_auth=True, ssh_path='/default/path/to/key')
def test_setup_only_email_provided(self, _get_user_config, _is_key_valid, _set_user_config, *args): user = UserController(Mock(), Settings()) user.api.read_users.return_value = [{'username': '******'}] args = Mock(email='*****@*****.**', ssh_key_path=None, ssh_auth=None) _get_user_config.return_value = { 'ssh_auth': True, 'ssh_path': '/path/to/key' } _is_key_valid.return_value = True user.setup(args) self.assertTrue(user.api.read_users.called) self.assertTrue(user.api.create_user_key.called) self.assertEqual(2, len(_set_user_config.mock_calls)) self.assertEqual(call(user.settings, email='*****@*****.**'), _set_user_config.mock_calls[0]) self.assertEqual( call(user.settings, ssh_auth=True, ssh_path='/path/to/key'), _set_user_config.mock_calls[1])
def test_ssh_forwarder_url_set_by_argument(self): test_env = {'SSH_FORWARDER': "any.env_api.url"} settings = Settings(ssh_forwarder_url='my.ssh_forwarder.url', env=test_env) self.assertEqual('my.ssh_forwarder.url', settings.ssh_forwarder)
def test_api_url_default(self): settings = Settings(env={}) self.assertEqual('https://api.cloudcontrolled.com', settings.api_url)
def test_check_for_updates_set_by_argument(self): settings = Settings(api_url='any.api.url', check_for_updates=False) self.assertFalse(settings.check_for_updates)
def test_check_for_updates_default(self): settings = Settings(env={}) self.assertTrue(settings.check_for_updates)
def test_api_url_set_by_environment(self): test_env = {'CCTRL_API_URL': "my.env_api.url"} settings = Settings(env=test_env) self.assertEqual('my.env_api.url', settings.api_url)
def test_ssh_forwarder_url_default(self): settings = Settings(env={}) self.assertEqual('sshforwarder.cloudcontrolled.com', settings.ssh_forwarder)
def test_config_path_given_home_path(self): settings = Settings(home_path='.cloudControl') self.assertTrue( settings.config_path.endswith('.cloudControl/user.cfg'))
def test_token_path_given_home_path(self): settings = Settings(home_path='.cloudControl') self.assertTrue( settings.token_path.endswith('.cloudControl/token.json'))
def test_token_source_url_should_default_to_api_url(self): settings = Settings(api_url='my.api.url') self.assertEqual('my.api.url/token/', settings.token_source_url)
def test_token_source_url_set_by_constructor(self): settings = Settings(token_source_url='my.token_source.url', api_url='any.api.url') self.assertEqual('my.token_source.url', settings.token_source_url)
def test_ssh_forwarder_set_by_environment(self): test_env = {'SSH_FORWARDER': "my.ssh_forwarder.url"} settings = Settings(env=test_env) self.assertEqual('my.ssh_forwarder.url', settings.ssh_forwarder)
def test_api_url_set_by_argument(self): test_env = {'CCTRL_API_URL': "any.env_api.url"} settings = Settings(api_url='my.api.url', env=test_env) self.assertEqual('my.api.url', settings.api_url)