Skip to content

Commit

Permalink
Worked on scripts and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
joachimmetz committed Mar 17, 2024
1 parent e9b31fa commit e0dc80a
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 110 deletions.
15 changes: 8 additions & 7 deletions scripts/extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@

from acstore import sqlite_store

from dfimagetools.helpers import command_line as dfimagetools_command_line

from dfvfs.helpers import command_line as dfvfs_command_line
from dfvfs.helpers import volume_scanner as dfvfs_volume_scanner
from dfvfs.lib import errors as dfvfs_errors

import pywrc
Expand Down Expand Up @@ -299,9 +299,6 @@ def Main():
dest='windows_version', action='store', metavar='Windows XP',
default=None, help='string that identifies the Windows version.')

# TODO: add source group
dfimagetools_command_line.AddStorageMediaImageCLIArguments(argument_parser)

argument_parser.add_argument(
'source', nargs='?', action='store', metavar='/mnt/c/',
default=None, help=(
Expand Down Expand Up @@ -346,8 +343,12 @@ def Main():
print('')
return False

mediator, volume_scanner_options = (
dfimagetools_command_line.ParseStorageMediaImageCLIArguments(options))
mediator = dfvfs_command_line.CLIVolumeScannerMediator()

volume_scanner_options = dfvfs_volume_scanner.VolumeScannerOptions()
volume_scanner_options.partitions = ['all']
volume_scanner_options.snapshots = ['none']
volume_scanner_options.volumes = ['none']

try:
for source_definition in source_definitions:
Expand Down
8 changes: 4 additions & 4 deletions tests/extractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,17 @@ def testGetWindowsVersion(self):
# TODO: improve test.
self.assertIsNone(windows_version)

def testOpenMessageResourceFile(self):
"""Tests the _OpenMessageResourceFile function."""
def testOpenWindowsResourceFile(self):
"""Tests the _OpenWindowsResourceFile function."""
extractor_object = self._CreateTestEventMessageStringExtractor()

# TODO: improve test.

message_resource_file = extractor_object._OpenMessageResourceFile(
message_resource_file = extractor_object._OpenWindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')
self.assertIsNone(message_resource_file)

# TODO: test _OpenMessageResourceFileByPathSpec
# TODO: test _OpenWindowsResourceFileByPathSpec

def testCollectEventLogProviders(self):
"""Tests the CollectEventLogProviders function."""
Expand Down
134 changes: 67 additions & 67 deletions tests/resource_file.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Tests for the Windows Message Resource (WRC) file class."""
"""Tests for the Windows Resource (WRC) file class."""

import unittest

Expand Down Expand Up @@ -129,8 +129,8 @@ def get_resource_by_name(self, name):
return self.resources.get(name, None)


class MessageResourceFileTest(test_lib.BaseTestCase):
"""Tests for the Windows Message Resource file object."""
class WindowsResourceFileTest(test_lib.BaseTestCase):
"""Tests for the Windows Resource file object."""

# pylint: disable=protected-access

Expand Down Expand Up @@ -205,47 +205,47 @@ def testGetVersionInformationNoWrc(self):
test_file_path = self._GetTestFilePath(['nowrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\nowrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

try:
resource = message_resource_file._GetVersionInformation()
resource = windows_resource_file._GetVersionInformation()
self.assertIsNone(resource)

finally:
message_resource_file.Close()
windows_resource_file.Close()

def testGetVersionInformationWrc(self):
"""Tests the _GetVersionInformation function."""
test_file_path = self._GetTestFilePath(['wrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

message_resource_file._GetVersionInformation()
windows_resource_file._GetVersionInformation()

self.assertEqual(message_resource_file.file_version, '1.0.0.0')
self.assertEqual(message_resource_file.product_version, '1.0.0.0')
self.assertEqual(windows_resource_file.file_version, '1.0.0.0')
self.assertEqual(windows_resource_file.product_version, '1.0.0.0')

message_resource_file.Close()
windows_resource_file.Close()

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\test.dll')

# Test with an empty WRC stream.
wrc_stream = TestWrcStream()
message_resource_file._wrc_stream = wrc_stream
windows_resource_file._wrc_stream = wrc_stream

message_resource_file._GetVersionInformation()
self.assertIsNone(message_resource_file.file_version)
self.assertIsNone(message_resource_file.product_version)
windows_resource_file._GetVersionInformation()
self.assertIsNone(windows_resource_file.file_version)
self.assertIsNone(windows_resource_file.product_version)

# Test with empty version information.
wrc_resource = TestWrcResource()
Expand All @@ -260,75 +260,75 @@ def testGetVersionInformationWrc(self):
wrc_resource_sub_item.resource_data = (
self._VERSION_INFORMATION_RESOURCE_DATA)

message_resource_file._GetVersionInformation()
self.assertEqual(message_resource_file.file_version, '0.0.0.0')
self.assertEqual(message_resource_file.product_version, '2.0.0.0')
windows_resource_file._GetVersionInformation()
self.assertEqual(windows_resource_file.file_version, '0.0.0.0')
self.assertEqual(windows_resource_file.product_version, '2.0.0.0')

def testGetVersionInformationResourceNoWrc(self):
"""Tests the _GetVersionInformationResource function."""
test_file_path = self._GetTestFilePath(['nowrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\nowrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

version_information_resource = (
message_resource_file._GetVersionInformationResource())
windows_resource_file._GetVersionInformationResource())

self.assertIsNone(version_information_resource)

message_resource_file.Close()
windows_resource_file.Close()

def testGetVersionInformationResourceWrc(self):
"""Tests the _GetVersionInformationResource function."""
test_file_path = self._GetTestFilePath(['wrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

version_information_resource = (
message_resource_file._GetVersionInformationResource())
windows_resource_file._GetVersionInformationResource())

self.assertIsNotNone(version_information_resource)

message_resource_file.Close()
windows_resource_file.Close()

def testFileVersionProperty(self):
"""Tests the file_version property."""
test_file_path = self._GetTestFilePath(['wrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

self.assertEqual(message_resource_file.file_version, '1.0.0.0')
self.assertEqual(windows_resource_file.file_version, '1.0.0.0')

message_resource_file.Close()
windows_resource_file.Close()

def testProductVersionProperty(self):
"""Tests the product_version property."""
test_file_path = self._GetTestFilePath(['wrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

self.assertEqual(message_resource_file.product_version, '1.0.0.0')
self.assertEqual(windows_resource_file.product_version, '1.0.0.0')

message_resource_file.Close()
windows_resource_file.Close()

# TODO: add open/close test on non PE/COFF file.

Expand All @@ -337,128 +337,128 @@ def testOpenFileObjectAndCloseNoWrc(self):
test_file_path = self._GetTestFilePath(['nowrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\nowrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

with self.assertRaises(IOError):
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

message_resource_file.Close()
windows_resource_file.Close()

def testOpenFileObjectAndCloseWrc(self):
"""Tests the OpenFileObject and Close functions."""
test_file_path = self._GetTestFilePath(['wrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

with self.assertRaises(IOError):
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

message_resource_file.Close()
windows_resource_file.Close()

def testGetMessageTableResourceNoWrc(self):
"""Tests the GetMessageTableResource function."""
test_file_path = self._GetTestFilePath(['nowrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\nowrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

try:
resource = message_resource_file.GetMessageTableResource()
resource = windows_resource_file.GetMessageTableResource()
self.assertIsNone(resource)

finally:
message_resource_file.Close()
windows_resource_file.Close()

def testGetMessageTableResourceWrc(self):
"""Tests the GetMessageTableResource function."""
test_file_path = self._GetTestFilePath(['wrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

try:
message_table_resource = message_resource_file.GetMessageTableResource()
message_table_resource = windows_resource_file.GetMessageTableResource()
self.assertIsNotNone(message_table_resource)

finally:
message_resource_file.Close()
windows_resource_file.Close()

def testGetMUILanguage(self):
"""Tests the GetMUILanguage function."""
test_file_path = self._GetTestFilePath(['wrc_test.mui.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

mui_language = message_resource_file.GetMUILanguage()
mui_language = windows_resource_file.GetMUILanguage()
self.assertEqual(mui_language, 'en-US')

message_resource_file.Close()
windows_resource_file.Close()

# Test with an empty WRC stream.
wrc_stream = TestWrcStream()

message_resource_file._wrc_stream = wrc_stream
windows_resource_file._wrc_stream = wrc_stream

mui_language = message_resource_file.GetMUILanguage()
mui_language = windows_resource_file.GetMUILanguage()
self.assertIsNone(mui_language)

def testHasMessageTableResourceNoWrc(self):
"""Tests the HasMessageTableResource function."""
test_file_path = self._GetTestFilePath(['nowrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\nowrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

try:
result = message_resource_file.HasMessageTableResource()
result = windows_resource_file.HasMessageTableResource()
self.assertFalse(result)

finally:
message_resource_file.Close()
windows_resource_file.Close()

def testHasMessageTableResourceWrc(self):
"""Tests the HasMessageTableResource function."""
test_file_path = self._GetTestFilePath(['wrc_test.dll'])
self._SkipIfPathNotExists(test_file_path)

message_resource_file = resource_file.MessageResourceFile(
windows_resource_file = resource_file.WindowsResourceFile(
'C:\\Windows\\System32\\wrc_test.dll')

with open(test_file_path, 'rb') as file_object:
message_resource_file.OpenFileObject(file_object)
windows_resource_file.OpenFileObject(file_object)

try:
result = message_resource_file.HasMessageTableResource()
result = windows_resource_file.HasMessageTableResource()
self.assertTrue(result)

finally:
message_resource_file.Close()
windows_resource_file.Close()


if __name__ == '__main__':
Expand Down

0 comments on commit e0dc80a

Please sign in to comment.