Ejemplo n.º 1
0
    def test_generate_command_asgi_service_option_nginx_conf_not_linux(
            self, mock_os_path_isfile, mock_file, mock_env,
            mock_os_path_exists, mock_linux_distribution, mock_render_template,
            mock_write_info):
        mock_args = mock.MagicMock(conda_prefix=False)
        mock_args.type = GEN_ASGI_SERVICE_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False
        mock_env.side_effect = ['/foo/conda', 'conda_env']
        mock_os_path_exists.return_value = True
        mock_linux_distribution.side_effect = Exception
        mock_file.return_value = mock.mock_open(
            read_data='user foo_user').return_value

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
        mock_env.assert_called_with('CONDA_PREFIX')
        mock_os_path_exists.assert_any_call('/etc/nginx/nginx.conf')
        context = mock_render_template.call_args_list[0][0][1]
        self.assertEqual('', context['user_option_prefix'])
        self.assertEqual('foo_user', context['nginx_user'])

        mock_write_info.assert_called()
Ejemplo n.º 2
0
    def test_generate_command_metayaml(self, mock_print, mock_os_path_isfile,
                                       mock_file, mock_run_command, mock_load,
                                       mock_Template, _, mock_os_path_join):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_META_YAML_OPTION
        mock_args.directory = None
        mock_args.pin_level = 'minor'
        mock_os_path_isfile.return_value = False
        mock_os_path_join.return_value = f"{TETHYS_SRC}/conda.recipe"
        stdout = '# packages in environment at /home/nswain/miniconda/envs/tethys:\n' \
                 '#\n' \
                 '# Name                    Version                   Build  Channel\n' \
                 'foo                       1.2.3                     py37_0    conda-forge\n' \
                 'bar                       4.5.6                     py37h516909a_0    conda-forge\n' \
                 'goo                       7.8                       py37h516909a_0    conda-forge\n'
        mock_run_command.return_value = (stdout, '', 0)
        mock_load.return_value = {'dependencies': ['foo', 'bar=4.5', 'goo']}
        mock_Template().render.return_value = 'out'
        generate_command(args=mock_args)

        mock_run_command.assert_any_call('list', 'foo')
        mock_run_command.assert_any_call('list', 'goo')

        rts_call_args = mock_print.call_args_list
        self.assertListEqual([], rts_call_args)

        render_context = mock_Template().render.call_args_list[0][0][0]
        expected_context = {
            'run_requirements': ['foo=1.2.*', 'bar=4.5', 'goo=7.8']
        }
        self.assertDictEqual(expected_context, render_context)
        mock_file.assert_called()
        mock_os_path_join.assert_called()
Ejemplo n.º 3
0
    def test_generate_command_portal_yaml(self, mock_os_path_isfile, mock_file):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_PORTAL_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
Ejemplo n.º 4
0
    def test_generate_command_settings_option(self, mock_os_path_isfile, mock_file):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_SETTINGS_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
Ejemplo n.º 5
0
    def test_generate_command_nginx_service(self, mock_os_path_isfile, mock_file):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_NGINX_SERVICE_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
Ejemplo n.º 6
0
    def test_generate_command_nginx_option(self, mock_os_path_isfile, mock_file, mock_settings):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_NGINX_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False
        mock_settings.side_effect = ['/foo/workspace', '/foo/static']

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
        mock_settings.assert_any_call('TETHYS_WORKSPACES_ROOT')
        mock_settings.assert_called_with('STATIC_ROOT')
Ejemplo n.º 7
0
    def test_generate_command_install_option(self, mock_print, mock_os_path_isfile, mock_file):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_INSTALL_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False

        generate_command(args=mock_args)

        rts_call_args = mock_print.call_args_list
        self.assertIn('Please review the generated install.yml', rts_call_args[0][0][0])

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
Ejemplo n.º 8
0
    def test_generate_command_asgi_service_option(self, mock_os_path_isfile, mock_file, mock_env):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_ASGI_SERVICE_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False
        mock_env.side_effect = ['/foo/conda', 'conda_env']

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called()
        mock_file.assert_called()
        mock_env.assert_any_call('CONDA_HOME')
        mock_env.assert_called_with('CONDA_ENV_NAME')
Ejemplo n.º 9
0
    def test_generate_command_asgi_settings_pre_existing_overwrite(self, mock_os_path_isfile, mock_file, mock_env):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_ASGI_SERVICE_OPTION
        mock_args.directory = None
        mock_args.overwrite = True
        mock_os_path_isfile.return_value = True
        mock_env.side_effect = ['/foo/conda', 'conda_env']

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
        mock_env.assert_any_call('CONDA_HOME')
        mock_env.assert_called_with('CONDA_ENV_NAME')
Ejemplo n.º 10
0
    def test_generate_command_asgi_service_option(self, mock_os_path_isfile,
                                                  mock_file, mock_env,
                                                  mock_write_info):
        mock_args = mock.MagicMock(conda_prefix=False)
        mock_args.type = GEN_ASGI_SERVICE_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False
        mock_env.side_effect = ['/foo/conda', 'conda_env']

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called()
        mock_file.assert_called()
        mock_env.assert_called_with('CONDA_PREFIX')

        mock_write_info.assert_called()
Ejemplo n.º 11
0
    def test_generate_command_asgi_settings_option_directory(self, mock_os_path_isfile, mock_file, mock_env,
                                                             mock_os_path_isdir):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_ASGI_SERVICE_OPTION
        mock_args.directory = '/foo/temp'
        mock_os_path_isfile.return_value = False
        mock_env.side_effect = ['/foo/conda', 'conda_env']
        mock_os_path_isdir.return_value = True

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
        mock_os_path_isdir.assert_called_with(mock_args.directory)
        mock_env.assert_any_call('CONDA_HOME')
        mock_env.assert_called_with('CONDA_ENV_NAME')
Ejemplo n.º 12
0
    def test_generate_command_asgi_service_option_distro(
            self, mock_os_path_isfile, mock_file, mock_env, mock_distribution,
            mock_write_info):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_ASGI_SERVICE_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False
        mock_env.side_effect = ['/foo/conda', 'conda_env']
        mock_distribution.return_value = ('redhat', 'linux', '')

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
        mock_env.assert_called_with('CONDA_PREFIX')

        mock_write_info.assert_called()
Ejemplo n.º 13
0
    def test_generate_command_asgi_settings_option_directory(
            self, mock_os_path_isfile, mock_file, mock_env, mock_os_path_isdir,
            mock_write_info):
        mock_args = mock.MagicMock(conda_prefix=False)
        mock_args.type = GEN_ASGI_SERVICE_OPTION
        mock_args.directory = '/foo/temp'
        mock_os_path_isfile.return_value = False
        mock_env.side_effect = ['/foo/conda', 'conda_env']
        mock_os_path_isdir.side_effect = [
            True, True
        ]  # TETHYS_HOME exists, computed directory exists

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()
        mock_os_path_isdir.assert_called_with(mock_args.directory)
        mock_env.assert_called_with('CONDA_PREFIX')

        mock_write_info.assert_called()
Ejemplo n.º 14
0
    def test_generate_command_portal_yaml__tethys_home_not_exists(
            self, mock_makedirs, mock_os_path_isfile, mock_file,
            mock_write_info, mock_isdir):
        mock_args = mock.MagicMock()
        mock_args.type = GEN_PORTAL_OPTION
        mock_args.directory = None
        mock_os_path_isfile.return_value = False
        mock_isdir.side_effect = [
            False, True
        ]  # TETHYS_HOME dir exists, computed dir exists

        generate_command(args=mock_args)

        mock_os_path_isfile.assert_called_once()
        mock_file.assert_called()

        # Verify it makes the Tethys Home directory
        mock_makedirs.assert_called()
        rts_call_args = mock_write_info.call_args_list
        self.assertIn('A Tethys Portal configuration file',
                      rts_call_args[0][0][0])