Jae-Yoon Jung

54 papers A 1B 1Journal 36Unranked 16
YearRankTypeTitle / Venue / Authors
2026 J jnl
Syst.
Minjong Shin, Jae-Yoon Jung
2025 J jnl
IEEE Access
Donghun Lee, Suhee Kim, Hoonseok Park, Haejoong Kim, Ri Choe, Younkook Kang, Jae-Yoon Jung, Kwanho Kim
2025 J jnl
Comput. Ind. Eng.
Young Suk Han, Jae-Yoon Jung
2024 J jnl
Neural Networks
Sanghyun Choo, Hoonseok Park, Jae-Yoon Jung, Kevin Flores, Chang S. Nam
2024 J jnl
J. Intell. Manuf.
Josué Obregon, Jae-Yoon Jung
2023 J jnl
Int. J. Hum. Comput. Stud.
Sangyeon Kim, Sanghyun Choo, Donghyun Park, Hoonseok Park, Chang S. Nam, Jae-Yoon Jung, Sangwon Lee
2023 J jnl
Expert Syst. Appl.
Sanghyun Choo, Hoonseok Park, Sangyeon Kim, Donghyun Park, Jae-Yoon Jung, Sangwon Lee, Chang S. Nam
2023 B conf
SMC
Hoonseok Park, Donghyun Park, Sangyeon Kim, Sanghyun Choo, Chang S. Nam, Sangwon Lee, Jae-Yoon Jung
2023 J jnl
Inf. Fusion
Josué Obregon, Jae-Yoon Jung
2020 J jnl
Expert Syst. Appl.
Hoonseok Park, Jae-Yoon Jung
2019 conf
RAAD
Hoonseok Park, Jumyung Um, Jae-Yoon Jung, Martin Ruskowski
2019 J jnl
IEEE Access
Josué Obregon, Minseok Song, Jae-Yoon Jung
2019 J jnl
Expert Syst. Appl.
Josué Obregon, Aekyung Kim, Jae-Yoon Jung
2018 J jnl
Expert Syst. Appl.
Bitzel Cortez, Berny Carrera, Young-Jin Kim, Jae-Yoon Jung
2018 J jnl
Reliab. Eng. Syst. Saf.
Jinkyun Park, Jae-Yoon Jung, Gyunyoung Heo, Yochan Kim, Jaewhan Kim, Jaehyun Cho
2018 J jnl
Int. J. Comput. Integr. Manuf.
Aekyung Kim, Kyuhyup Oh, Jae-Yoon Jung, Bohyun Kim
2018 J jnl
Sensors
Donghyun Park, Seulgi Kim, Yelin An, Jae-Yoon Jung
2017 J jnl
ISPRS Int. J. Geo Inf.
Parul Singh, Kyuhyup Oh, Jae-Yoon Jung
2017 J jnl
IEICE Trans. Inf. Syst.
Jae-Yoon Jung, Gyunyoung Heo, Kyuhyup Oh
2016 conf
Business Process Management Workshops
Johannes De Smedt, Seppe K. L. M. vanden Broucke, Josué Obregon, Aekyung Kim, Jae-Yoon Jung, Jan Vanthienen
2016 J jnl
Reliab. Eng. Syst. Saf.
Jinkyun Park, Jae-Yoon Jung, Wondea Jung
2016 J jnl
Expert Syst. Appl.
Kwanho Kim, HyunJin Kim, Sang-Kuk Kim, Jae-Yoon Jung
2015 conf
AP-BPM
Berny Carrera, Jinsung Lee, Jae-Yoon Jung
2014 J jnl
Int. J. Geogr. Inf. Sci.
Kwanho Kim, Kyuhyup Oh, Yeong Kyu Lee, Sungho Kim, Jae-Yoon Jung
2014 J jnl
IEICE Trans. Inf. Syst.
Kwanho Kim, Josué Obregon, Jae-Yoon Jung
2014 conf
Business Process Management Workshops
Berny Carrera, Jae-Yoon Jung
2014 J jnl
Concurr. Comput. Pract. Exp.
Kwang Sup Shin, Myoung-Ju Park, Jae-Yoon Jung
2014 J jnl
Expert Syst. Appl.
Kwanho Kim, Beom-Suk Chung, Ye Rim Choi, Seungyun Lee, Jae-Yoon Jung, Jonghun Park
2013 conf
Business Process Management Workshops
Aekyung Kim, Josué Obregon, Jae-Yoon Jung
2013 J jnl
IEICE Trans. Inf. Syst.
Pablo Rosales Tejada, Jae-Yoon Jung
2013 conf
AP-BPM
Josué Obregon, Aekyung Kim, Jae-Yoon Jung
2013 J jnl
Ind. Manag. Data Syst.
Kwanho Kim, Beom-Suk Chung, Jae-Yoon Jung, Jonghun Park
2012 J jnl
IEICE Trans. Inf. Syst.
Kwanho Kim, Jae-Yoon Jung, Jonghun Park
2011 J jnl
Knowl. Based Syst.
Jae-Yoon Jung, Kwanho Kim, Dongmin Shin, Jonghun Park
2011 J jnl
Ind. Manag. Data Syst.
Bokyoung Kang, Jae-Yoon Jung, Nam Wook Cho, Suk-Ho Kang
2011 conf
FGIT-MulGraB (1)
Yong-Hun Lee, Jae-Yoon Jung, Doug Young Suh
2011 conf
Business Process Management Workshops (1)
Jae-Yoon Jung, Pablo Rosales Tejada, Kyuhyup Oh, Kyuri Kim
2010 J jnl
KSII Trans. Internet Inf. Syst.
Seok-hoon Hong, Yong-Hun Lee, Jae-Yoon Jung, Doug Young Suh
2010 J jnl
Comput. Ind.
Dongmin Shin, Sun Hur, Hyun Lee, Jingyu Nam, Jae-Yoon Jung
2010 J jnl
IEICE Trans. Commun.
Pablo Rosales Tejada, Jae-Yoon Jung
2010 conf
CSREA EEE
Kwang Sup Shin, Jae-Yoon Jung, YongWoo Shin, Suk-Ho Kang
2010 conf
ICAART (2)
Kwang Sup Shin, Suk-Ho Kang, Jae-Yoon Jung, Doug Young Suh
2010 J jnl
IEICE Trans. Fundam. Electron. Commun. Comput. Sci.
Jae-Yoon Jung, Joonsoo Bae
2009 J jnl
World Wide Web
Seung-Kyun Han, Dongmin Shin, Jae-Yoon Jung, Jonghun Park
2008 conf
IEEE SCC (2)
Jae-Yoon Jung, Joonsoo Bae, Ling Liu
2007 J jnl
Inf. Softw. Technol.
Jae-Yoon Jung, Jonghun Park, Seung-Kyun Han, Kangchan Lee
2007 conf
HCI (11)
Jonghun Park, Wan Lee, Jae-Yoon Jung, Kangchan Lee
2006 conf
Business Process Management Workshops
Jae-Yoon Jung, Jonghun Park, Seung-Kyun Han, Kangchan Lee
2006 conf
ICCSA (5)
Jae-Yoon Jung, Wookey Lee, Suk-Ho Kang
2006 J jnl
Comput. Ind. Eng.
Jae-Yoon Jung, Hoontae Kim, Suk-Ho Kang
2006 conf
ICCSA (2)
Jae-Yoon Jung, Joonsoo Bae
2005 conf
KES (3)
Je Yeon Oh, Jae-Yoon Jung, Nam Wook Cho, Hoontae Kim, Suk-Ho Kang
2004 J jnl
IEEE Internet Comput.
Jae-Yoon Jung, Wonchang Hur, Suk-Ho Kang, Hoontae Kim
2004 A conf
Business Process Management
Wonchang Hur, Jae-Yoon Jung, Hoontae Kim, Suk-Ho Kang
tests/integration/test_pe_extractor.py
← Index tests/integration/test_pe_extractor.py python
"""
Integration tests for the PEExtractor base class.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

pytestmark = [pytest.mark.integration, pytest.mark.pe]


class TestPEExtractorInitialization:
    """Tests for PEExtractor initialization."""

    def test_pe_extractor_with_valid_pe(self, pe_binary_path, mock_logger):
        """Test PEExtractor initialization with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            assert extractor.pe is not None
            assert extractor.filepath == pe_binary_path

    def test_pe_extractor_with_provided_pe_object(self, pe_binary_path, mock_logger, pe_object):
        """Test PEExtractor initialization with pre-existing PE object."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger, pe=pe_object)

            # Should use the provided PE object, not create a new one
            assert extractor.pe is pe_object

    def test_pe_extractor_with_invalid_file(self, elf_binary_path, mock_logger):
        """Test PEExtractor initialization with non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return None for pe when file is not a valid PE
            assert extractor.pe is None
            # Logger should have recorded an error
            assert mock_logger.error.called


class TestPEExtractorMethods:
    """Tests for PEExtractor helper methods."""

    def test_check_dotnet_true(self, pe_binary_path, mock_logger):
        """Test _check_dotnet returns True for .NET PE."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The test PE file is a .NET binary
            if extractor.pe is not None:
                result = extractor._check_dotnet()
                # d8637bdbcfc9112fcb1f0167b398e771 is a .NET binary
                assert result is True

    def test_check_dotnet_false(self, elf_binary_path, mock_logger):
        """Test _check_dotnet returns False for non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return False when PE is None
            result = extractor._check_dotnet()
            assert result is False

    def test_is_signed_false(self, pe_binary_path, mock_logger):
        """Test _is_signed method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._is_signed()
                # Result depends on the actual binary
                assert isinstance(result, bool)

    def test_has_overlay(self, pe_binary_path, mock_logger):
        """Test _has_overlay method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._has_overlay()
                assert isinstance(result, bool)


class TestGeneratePEFileObject:
    """Tests for _generate_pefile_object method."""

    def test_generate_pefile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_pefile_object with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The PE object should be created successfully
            assert extractor.pe is not None

    def test_generate_pefile_object_invalid(self, temp_text_file, mock_logger):
        """Test _generate_pefile_object with invalid file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(temp_text_file, mock_logger)

            # Should return None for invalid PE
            assert extractor.pe is None


class TestGenerateDotNetFileObject:
    """Tests for _generate_dotnetfile_object method."""

    def test_generate_dotnetfile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with .NET PE file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None and extractor._check_dotnet():
                dotnet, error = extractor._generate_dotnetfile_object()
                # Should create dotnet object for .NET PE
                assert dotnet is not None
                assert error is None

    def test_generate_dotnetfile_object_invalid(self, elf_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with non-.NET file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(elf_binary_path, mock_logger)

            dotnet, error = extractor._generate_dotnetfile_object()
            # Should return error for non-.NET file
            assert dotnet is None
            assert error is not None


class TestPEExtractorTag:
    """Tests for tag method in PE extractors."""

    def test_pe_features_tag(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_FEATURES.value

    def test_pe_import_tag(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_IMPORT.value

    def test_pe_section_tag(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_SECTION.value


class TestPEExtractorClickHouseTable:
    """Tests for get_clickhouse_table method in PE extractors."""

    def test_pe_features_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_features"

    def test_pe_import_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_imports"

    def test_pe_section_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_sections"


class TestPEExtractorPrepareExportData:
    """Tests for prepare_export_data method in PE extractors."""

    def test_pe_features_prepare_export_elasticsearch(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for Elasticsearch."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ElasticsearchExporter")
                # Should return the pe_features dataclass
                assert result is extractor.pe_features

    def test_pe_features_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for ClickHouse."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ClickHouseExporter")

                # Should return tuple of (data, column_names, column_type_names)
                assert isinstance(result, tuple)
                assert len(result) == 3
                data, column_names, column_type_names = result
                assert isinstance(data, list)
                assert isinstance(column_names, list)
                assert isinstance(column_type_names, list)
                # Column names and types should match in length
                assert len(column_names) == len(column_type_names)