Exemple #1
0
 def test_can_display_the_config_file_of_the_project(
         self, serialize_mock, mock_config):
     mock_config.__get__ = unittest.mock.Mock(
         return_value=Config.from_base_dir(
             os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['config'])
     assert serialize_mock.call_count == 1
Exemple #2
0
 def test_can_display_the_containers_of_the_config_file_of_the_project(
         self, serialize_mock, mock_config):
     mock_config.__get__ = unittest.mock.Mock(
         return_value=Config.from_base_dir(
             os.path.join(FIXTURE_ROOT, 'project01')))
     argv = ['config', '--containers']
     n = LXDock(argv)
     assert serialize_mock.call_count == 0
     assert n._parsers['main'].parse_args(argv).containers
Exemple #3
0
 def test_cannot_generate_a_lxdock_file_if_there_is_already_an_existing_lxdock_file(
         self, mock_getcwd, mock_open):
     mock_getcwd.return_value = os.path.join(FIXTURE_ROOT, 'project01')
     fd_mock = unittest.mock.Mock()
     mock_open.return_value.__enter__.return_value = fd_mock
     with pytest.raises(SystemExit):
         LXDock([
             'init',
         ])
Exemple #4
0
 def test_can_run_the_status_action_for_all_containers_of_a_project(
         self, mock_project_status, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['status'])
     assert mock_project_status.call_count == 1
     assert mock_project_status.call_args == [
         {
             'container_names': [],
         },
     ]
Exemple #5
0
 def test_can_force_the_destroy_action_if_the_containers_do_not_exist(
         self, container_exists_mock, mock_project_destroy, mock_project):
     container_exists_mock.__get__ = unittest.mock.Mock(return_value=False)
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['destroy'])
     assert mock_project_destroy.call_count == 1
     assert mock_project_destroy.call_args == [
         {
             'container_names': [],
         },
     ]
Exemple #6
0
 def test_can_run_the_up_action_for_all_containers_of_a_project(
         self, mock_project_up, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['up'])
     assert mock_project_up.call_count == 1
     assert mock_project_up.call_args == [
         {
             'container_names': [],
             'provisioning_mode': None,
         },
     ]
Exemple #7
0
 def test_can_run_the_destroy_containers_using_a_force_option(
         self, container_exists_mock, mock_project_destroy, mock_project):
     container_exists_mock.__get__ = unittest.mock.Mock(return_value=True)
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['destroy', '--force'])
     assert mock_project_destroy.call_count == 1
     assert mock_project_destroy.call_args == [
         {
             'container_names': [],
         },
     ]
Exemple #8
0
 def test_can_run_shell_command_for_a_specific_user_and_container(
         self, mock_project_shell, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['shell', '-u', 'foobar', 'c1', '-c', 'cd /; ls -l'])
     assert mock_project_shell.call_count == 1
     assert mock_project_shell.call_args == [
         {
             'container_name': 'c1',
             'username': '******',
             'command': 'cd /; ls -l'
         },
     ]
Exemple #9
0
 def test_can_run_the_shell_action_for_a_specific_container(
         self, mock_project_shell, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['shell', 'c1'])
     assert mock_project_shell.call_count == 1
     assert mock_project_shell.call_args == [
         {
             'container_name': 'c1',
             'username': None,
             'command': None
         },
     ]
Exemple #10
0
 def test_can_run_shell_command_for_a_specific_container(
         self, mock_project_shell, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['shell', 'c1', '-c', 'echo', 'he re"s', '-u', '$PATH'])
     assert mock_project_shell.call_count == 1
     assert mock_project_shell.call_args == [
         {
             'container_name': 'c1',
             'username': None,
             'cmd_args': ['echo', 'he re\"s', '-u', '$PATH']
         },
     ]
Exemple #11
0
 def test_can_generate_a_lxdock_file_by_overwriting_an_existing_file_with_the_force_option(
         self, mock_getcwd, mock_open):
     mock_getcwd.return_value = os.path.join(FIXTURE_ROOT, 'project01')
     fd_mock = unittest.mock.Mock()
     mock_open.return_value.__enter__.return_value = fd_mock
     LXDock(['init', '--force'])
     assert mock_open.call_count == 1
     assert mock_open.call_args[0] == ('lxdock.yml', )
     assert fd_mock.write.call_count == 1
     assert fd_mock.write.call_args[0][
         0] == INIT_LXDOCK_FILE_CONTENT.format(project_name=os.path.split(
             os.getcwd())[1],
                                               image='ubuntu/bionic')
Exemple #12
0
 def test_can_generate_a_basic_lxdock_file(self, mock_open):
     fd_mock = unittest.mock.Mock()
     mock_open.return_value.__enter__.return_value = fd_mock
     LXDock([
         'init',
     ])
     assert mock_open.call_count == 1
     assert mock_open.call_args[0] == ('lxdock.yml', )
     assert fd_mock.write.call_count == 1
     assert fd_mock.write.call_args[0][
         0] == INIT_LXDOCK_FILE_CONTENT.format(project_name=os.path.split(
             os.getcwd())[1],
                                               image='ubuntu/bionic')
Exemple #13
0
 def test_can_run_the_provision_action_for_specific_containers(
         self, mock_project_provision, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['provision', 'c1', 'c2'])
     assert mock_project_provision.call_count == 1
     assert mock_project_provision.call_args == [
         {
             'container_names': [
                 'c1',
                 'c2',
             ],
         },
     ]
Exemple #14
0
 def test_can_run_the_destroy_action_for_specific_containers(
         self, container_exists_mock, mock_project_destroy, mock_project,
         y_mock):
     container_exists_mock.__get__ = unittest.mock.Mock(return_value=True)
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock(['destroy', 'default'])
     assert mock_project_destroy.call_count == 1
     assert mock_project_destroy.call_args == [
         {
             'container_names': [
                 'default',
             ],
         },
     ]
Exemple #15
0
 def test_can_generate_a_lxdock_file_with_a_custom_project_name(
         self, mock_open):
     fd_mock = unittest.mock.Mock()
     mock_open.return_value.__enter__.return_value = fd_mock
     LXDock([
         'init',
         '--project',
         'customproject',
     ])
     assert mock_open.call_count == 1
     assert mock_open.call_args[0] == ('lxdock.yml', )
     assert fd_mock.write.call_count == 1
     assert fd_mock.write.call_args[0][
         0] == INIT_LXDOCK_FILE_CONTENT.format(project_name='customproject',
                                               image='ubuntu/bionic')
Exemple #16
0
 def test_can_generate_a_lxdock_file_with_a_custom_image(self, mock_open):
     fd_mock = unittest.mock.Mock()
     mock_open.return_value.__enter__.return_value = fd_mock
     LXDock([
         'init',
         '--image',
         'debian/buster',
     ])
     assert mock_open.call_count == 1
     assert mock_open.call_args[0] == ('lxdock.yml', )
     assert fd_mock.write.call_count == 1
     assert fd_mock.write.call_args[0][
         0] == INIT_LXDOCK_FILE_CONTENT.format(project_name=os.path.split(
             os.getcwd())[1],
                                               image='debian/buster')
Exemple #17
0
 def test_can_run_the_up_action_with_provisioning_disabled(
         self, mock_project_up, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         return_value=get_project(os.path.join(FIXTURE_ROOT, 'project01')))
     LXDock([
         'up',
         '--no-provision',
     ])
     assert mock_project_up.call_count == 1
     assert mock_project_up.call_args == [
         {
             'container_names': [],
             'provisioning_mode': ProvisioningMode.DISABLED,
         },
     ]
Exemple #18
0
 def test_exit_if_a_cli_error_is_encountered(self):
     with pytest.raises(SystemExit):
         LXDock(['help', 'unknown'])
Exemple #19
0
 def test_can_print_the_global_help(self):
     argv = ['help']
     n = LXDock(argv)
     assert n._parsers['main'].parse_args(argv).subcommand is None
Exemple #20
0
 def test_project_property_works(self, from_config_mock,
                                 from_base_dir_mock):
     n = LXDock(['config'])
     project1, project2 = n.project, n.project
     assert project1 == project2
     assert from_config_mock.call_count == 1
Exemple #21
0
 def test_project_config_property_works(self, from_base_dir_mock):
     n = LXDock(['config'])
     config1, config2 = n.project_config, n.project_config
     assert config1 == config2
     assert from_base_dir_mock.call_count == 1
Exemple #22
0
 def test_exit_if_a_lxdock_error_is_encountered(self, mock_project):
     mock_project.__get__ = unittest.mock.Mock(side_effect=LXDockException(
         msg='TEST'))
     with pytest.raises(SystemExit):
         LXDock(['up'])
Exemple #23
0
 def test_exit_if_a_config_error_is_encountered(self, mock_project):
     mock_project.__get__ = unittest.mock.Mock(side_effect=ConfigError(
         msg='TEST'))
     with pytest.raises(SystemExit):
         LXDock(['up'])
Exemple #24
0
 def test_exit_if_a_keyboard_interrupt_occurs(self, mock_project):
     mock_project.__get__ = unittest.mock.Mock(
         side_effect=KeyboardInterrupt)
     with pytest.raises(SystemExit):
         LXDock(['destroy'])
Exemple #25
0
 def test_can_print_the_help_for_a_specific_subcommand(self):
     argv = ['help', 'up']
     n = LXDock(argv)
     assert n._parsers['main'].parse_args(argv).subcommand == 'up'
Exemple #26
0
 def test_exit_if_no_action_is_provided(self):
     with pytest.raises(SystemExit):
         LXDock([])